← 프로젝트 프로젝트 케이스 스터디

SPACE

광속·상대론·궤도역학이라는 '불편한 제약'을 우회하지 않고 게임의 규칙으로 삼아, 방치형 항해에 진짜 무게를 부여한 서버 권위 시뮬레이션

배경 은하가 휘어 보이는 궁수자리 A* 블랙홀의 중력렌즈 렌더
역할
1인 개발 — 기획·시스템 디자인·클라이언트/서버 개발 전반
기간
2026년 개인 프로젝트 (활발히 개발 중)
스택
Node.js(ESM) 서버 권위 시뮬 + Three.js(r169) · WebSocket · SQLite↔PostgreSQL 드롭인 영속화 · 무빌드 구성 · Docker/Cloudflare Tunnel

배경과 목표

SPACE는 브라우저에서 즉시 시작하는(로그인 불필요) 우주 항해 방치형 시뮬레이션입니다. 대부분의 우주 게임이 광속·시간지연·궤도역학을 ‘불편해서’ 지워버리는 데 반해, 이 프로젝트는 그 제약들을 게임의 규칙 자체로 승격하는 것을 목표로 삼았습니다. 물리·천체·상대론 계산은 전부 서버가 권위적으로 처리하고 클라이언트는 표현만 담당하며, 실측 천체력(ISS 실시간 TLE·행성 케플러 요소·근접 항성 26개)을 기반으로 태양계에서 성간, 나아가 관측 우주의 가장자리까지 실제 거리와 시간으로 항해하게 했습니다.

디자인 축

1) 제약이 곧 콘텐츠입니다. 광속 지연 때문에 다른 우주선은 항상 ‘거리/c만큼 과거’로 보이고, 상대론적 고유시간으로 선내 시계는 바깥보다 느리게 흐릅니다. 이 불편함을 없애는 대신, 쌍둥이 역설과 ‘위치 불확정’ 같은 고유 경험의 재료로 삼았습니다.

2) 시간을 가속하지 않고 의사결정을 배치합니다. 실시간 공유 세계라 타임워프가 금지된다는 원칙을 지키면서도 방치의 단절을 해소했습니다.

3) 정직한 충실도 경계입니다. 실측·추정·절차 생성을 UI에서 명확히 구분하고, 완전 수치상대론에는 선을 긋되 체감상의 ‘블랙홀다움’은 저비용 근사로 재현했습니다.

핵심 시스템과 설계 결정

**기동 예약 큐(Flight Plan)**는 리텐션 관점의 핵심 결정입니다. 방치형 항해의 단절은 “시간 문제가 아니라 의사결정 배치 문제”라고 재정의하고, 한 번의 체크인으로 “목성 스윙바이 → 토성 궤도 → 천왕성” 같은 다단 항행을 미리 줄세워 서버가 이벤트 구동으로 이어 집행하게 했습니다. 새 물리를 만들지 않고 기존 명령을 선언적으로 감싸 결정론을 보존한 점이 설계의 절제입니다.

블랙홀은 시그니처 경험입니다. 사건의 지평선 통과를 게임오버가 아니라 영구 소실 + 추모비 + 이름 은퇴 + 새 이름으로 재시작으로 설계해, ‘돌아올 수 없는 관문’의 무게를 리셋 없이 살렸습니다. 지평선 근처 시간지연은 이 게임 상대론 정체성의 궁극적 표현이 됩니다.

멀티플레이 협력은 “협력의 난이도 = 물리”라는 원칙 위에 섰습니다. 랑데부는 궤도역학, 함께 있기는 광접촉(인과섬) 유지, 통신은 광지연 리드가 되어, 채팅 껍데기가 아니라 물리가 강제하는 진짜 협력이 됩니다. 자유 텍스트 없이 템플릿·이모지로 갈등을 메커닉 차원에서 순화한 점도 의도된 밸런스입니다.

결정론적 절차 생성은 ‘발견’을 공유 가능한 객관적 사실로 만듭니다. 같은 시드는 모두에게 같은 항성계를 보여주므로, 최초 발견·명소·공동 웜홀 지도가 성립합니다.

기술 하이라이트

단방향 결합 제한 N체 중력으로 실시간 전체 N체 없이 실제 스윙바이가 성립하며, 심플렉틱 적분기로 궤도 3바퀴 에너지 드리프트 0%를 달성했습니다. 좌표 차트 계층(시스템 km ↔ 성간 광년)으로 전 스케일에서 float64 정밀도를 유지합니다. 골든 해시 특성화 테스트로 거동 변화를 동결·감시합니다.

현황

라이브 서비스 중이며, 콕핏 단일 인터페이스는 실제 글래스 콕핏(글레어실드 명령바·“한 모니터=한 작업” 상한)을 차용해 UX 동선을 다듬었습니다. 용량은 실측 기준 유휴 1,000명·동시 자유비행 약 400척 수준입니다.

← 프로젝트로 돌아가기