Space Escape

https://github.com/raylee9919/Space-Fork

개요#

인원 기간 사용 기술
3인 2025년 8월 ~ 2025년 12월 Unity 2022.3 LTS, XR Interaction Toolkit, C#

주어진 도구는 키보드뿐인 VR 방탈출 게임. 모든 퍼즐은 게임 속 터미널에 실제 파이썬 문법을 닮은 코드를 입력해서 풀어야 한다. 고장 난 우주선에서 수다스러운 외계인과 함께 눈을 뜬 플레이어는, 배가 (혹은 외계인의 인내심이) 바닥나기 전에 print, if, for 반복문으로 다섯 개의 시스템을 통과해야 한다.

단계별 퍼즐#

탈출의 각 단계는 하나의 프로그래밍 개념에 대응하며, 터미널에 실제로 입력한 코드를 매칭해서 판정한다.

  • 전원 켜기print("Hello World!")를 입력해 로그인하고 선내 조명을 복구
  • 산소 수정 — 안전 범위를 벗어난 산소 비율을 조건문(if oxygen < 18 / > 21)으로 잡아내기
  • 도킹 해제for ... in range(5): 혹은 while 반복문으로 release_bolt()를 호출해 도킹 클램프를 순서대로 해제
  • 출항navigate()에 목적지(지구, 화성, 목성)를 넘겨 항로 설정
  • 탈출 — 숫자를 하나씩 맞히는 대신 for i in range(10000): unlock(...) 반복문으로 탈출문 암호를 무차별 대입

판정기(CodeEvaluator)는 코드를 실제로 실행하지 않는다. 괄호 짝과 단계별 필수 키워드를 검사하는 가벼운 파서(MiniPythonParser)로 유효성만 확인한 뒤, 입력을 해당 퍼즐이 기대하는 패턴과 비교한다. 게임으로서는 이걸로 충분하고, 덕분에 "인터프리터"가 임의 코드 실행을 샌드박싱할 필요가 없다.

진짜 키보드처럼 동작하는 VR 키보드#

VR에서 타이핑은 보통 고역이라, 터미널은 OS 키보드 대신 MRTK의 논네이티브 키보드 위에 만들었다. TMP_InputField를 선택하면 키보드가 자동으로 뜨고 동기화 상태를 유지하며, 입력한 글자는 실시간으로 선내 모니터 프롭에도 그대로 반영된다. 줄바꿈 전용 핸들러와 (누르면 컨트롤러가 진동하는) 전송 버튼이 "코드 입력 → 전송 → 결과 확인" 루프를 마무리한다.

외계인 동료#

Rigidbody 기반으로 움직이는 외계인이 선내에서 플레이어를 따라다닌다. 플레이어 쪽으로 몸을 돌리고, 멀어지면 거리를 좁히며, 부딪히면 소리와 컨트롤러 진동으로 반응한다. 대사는 작은 말풍선 시스템(DialogueManager)이 담당하고, StepManager 상태 머신이 단계가 전환될 때마다 이를 트리거한다. 그래서 외계인이 진공 상태의 퍼즐이 아니라 스토리 비트에 맞춰 이야기를 풀어간다.

VR 편의성 & 상호작용#

  • XR Interaction Toolkit의 액션 기반 입력 위에 스냅 회전과 연속 회전을 모두 구현하고, 인게임 옵션 메뉴에서 전환 가능(PlayerPrefs에 저장)
  • 잡고 던지는 물리 상호작용, 씬 전환 페이드, 터미널 근처에서 머뭇거리면 힌트가 뜨는 컨텍스트 힌트 시스템
  • XR Device Simulator를 지원해서 헤드셋 없이 마우스와 키보드만으로도 전체 방탈출을 플레이·테스트 가능
  • 안드로이드 기반 VR 헤드셋에 스탠드얼론으로 빌드 및 테스트 완료

#

3인 프로젝트로, 레벨 디자인·대사·퍼즐 및 키보드 시스템을 단계별로 나눠 작업하고 병합했다. 커밋 로그에도 그 흔적이 고스란히 남아 있다 ("merge two keyboard files", "Merge Sungwoo's Dialogue").