접힌 세계: 오직 한 각도에서만 존재하는 세계를 만들기

정사영, 이음새 판정, 헤드리스 자동 플레이 — 12개 스테이지가 모두 실제로 클리어 가능함을 어떻게 보장하는지.

접힌 세계는 Puzzlescape의 첫 완성 게임입니다. 규칙은 한 문장입니다. 두 면은 지금 보고 있는 시점에서 "이어져 보일 때만" 실제로 이어집니다. 세계를 돌리면 길이 사라지고, 레버를 당기면 서 있던 페이지가 넘어져 바닥이 됩니다. 말은 쉽지만 만드는 것은 놀랍도록 어렵습니다. 시점 게임은 보통 미리 구워 둔 불가능 기하학으로 대충 넘깁니다. 우리는 기하를 진짜로 두고, 착시가 카메라에서 오도록 하고 싶었습니다.

그래서 렌더러는 자유도 2개뿐인 정사영 카메라를 씁니다. 정사영에서는 점을 시선 축 방향으로 밀어도 화면 위치가 변하지 않습니다. 이 성질을 거꾸로 씁니다. 다음 플랫폼을 이전 플랫폼에서 "시선 방향으로 정확히 한 걸음" 떨어진 곳에 배치하는 식으로 설계합니다. 의도한 각도에서는 이음새가 완벽히 맞고, 몇 도만 어긋나도 확연히 갈라집니다. 따라서 연결 관계를 수작업으로 지정하지 않습니다. 모든 플랫폼의 모서리를 샘플링해 투영하고, 두 변이 얼마나 길게 붙어 있는지 측정합니다. 모서리끼리 스치는 것은 문이 아니므로 연결로 세지 않습니다.

모든 변경은 두 스크립트가 지킵니다. 첫째는 스테이지마다 카메라 공간 전체를 훑어 가능성, 시작 각도가 너무 평범하지 않은지, 장치가 정말 필요한지, 해답 각도 창이 얼마나 넓은지를 보고합니다. 둘째는 실제로 플레이합니다. 헤드리스로 엔진을 구동해 레버를 누르고, 접힘 애니메이션을 기다리고, 카메라를 돌려 골까지 걷습니다 — 플레이어가 트리거하는 것과 똑같은 API 호출입니다. 이 체계로 12개 스테이지를 출시한다는 것은 "아마 되겠지"가 "어젯밤 스크립트가 12개 모두 클리어했다"로 바뀐다는 뜻입니다.

개발 로그로 돌아가기