스윙바이 오디세이(Swingby Odyssey)는 실제 우주 탐사에서 사용하는 중력 도움 기동(Gravitational Slingshot) 원리를 활용해, 행성 중력장 사이를 통과하며 우주선의 속도와 방향을 바꿔 목표 궤도까지 도달하는 물리 기반 궤도 퍼즐 문제를 해결합니다.
웹 브라우저에서 설치 없이 실행되며 네오 브루탈리즘(Neo-Brutalism) 디자인과 Web Audio API 절차적 사운드로 데스크톱과 모바일 모두에서 직관적인 조작감을 제공합니다.
🚀 실제 구현 기능 (Core Features)
- 뉴턴 만유인력 기반 2D 궤도 역학 엔진:
- 각 행성의 질량과 반지름에 따라 F = GM/r² 공식으로 중력 벡터를 실시간 계산합니다.
- 우주선이 행성 중력장에 진입하면 자연스러운 타원·쌍곡선 궤도가 형성되어 스윙바이 기동이 가능합니다.
- 궤도 예측선(점선)을 통해 발사 전 경로를 시각적으로 확인할 수 있습니다.
- 10단계 스테이지 캠페인 모드:
- 1단계: 단일 행성 기본 궤도 — 중력 비행 적응 튜토리얼
- 2단계: 이중 행성 기초 슬링샷 — 첫 번째 스윙바이 기동 학습
- 3단계: 삼각 배치 다중 궤도 — 연속 중력 도움 체인
- 4~6단계: 이동 행성, 소행성대, 쌍성계 등 동적 장애물 추가
- 7~10단계: 복합 중력 미로, 미세 중력 정밀 조작, 시간 제한, 5연속 슬링샷 그랜드 투어
- 무한 생존(Endless) 모드:
- 랜덤 배치되는 행성과 목표 지점 사이를 연속으로 돌파하며 점수와 생존 시간을 경쟁합니다.
- 다중 입력 조작 체계:
- 가상 조이스틱: 모바일 화면 좌측 터치 영역에서 드래그로 추력 방향과 세기를 조절합니다.
- 터치 스와이프: 게임 캔버스 위를 스와이프하여 순간 추력을 가합니다.
- 방향키/WASD: 데스크톱 키보드로 4방향 추력을 제어합니다.
- 부스트(Space)·브레이크(Shift): 긴급 가속과 감속 기능을 제공합니다.
- 네오 브루탈리즘 비주얼 테마:
- 두꺼운 검은 테두리(3~5px), 평면 원색 채색, 강렬한 드롭 섀도로 구성된 대담한 UI 스타일입니다.
- 행성마다 고유 색상(주황 암석, 파랑 가스, 분홍 화산, 초록 지구형, 시안 빙하)으로 구분됩니다.
- 프로젝트명 접두사 로컬 저장 (
swingby_odyssey_):swingby_odyssey_high_score: 연료 잔량, 시간, 궤도 효율을 종합한 역대 최고 점수swingby_odyssey_max_time: 충돌 없이 궤도를 유지한 최장 생존 기록(초)swingby_odyssey_stage_progress: 1단계부터 10단계까지 달성한 최고 캠페인 해금 상태swingby_odyssey_stage_scores: 스테이지별 개인 최고 점수swingby_odyssey_settings: 사운드, 궤도 예측선 표시 등 사용자 설정
- Web Audio API 절차적 사운드:
- 로켓 추력 노이즈, 슬링샷 도플러 효과음, 궤도 진입 하모닉 험, 행성 충돌 임팩트, 스테이지 클리어 아르페지오 등을 외부 파일 없이 실시간 합성합니다.
👥 대상 사용자 (Target Audience)
- 케르발 스페이스 프로그램(KSP)이나 오비터(Orbiter) 스타일의 궤도 역학 퍼즐을 즐기는 게이머
- 만유인력과 궤도 역학 원리를 시각적·체험적으로 학습하고 싶은 학생 및 교육자
- 설치·로그인 없이 모바일이나 PC 브라우저에서 짧은 시간 동안 기록 경쟁을 즐기려는 캐주얼 플레이어
- 네오 브루탈리즘 디자인 트렌드에 관심 있는 웹 개발자 및 디자이너
🎯 활용 사례 (Use Cases)
- 궤도 역학 직관 훈련: 행성 근접 통과 시 속도 벡터가 어떻게 변하는지를 반복 플레이로 체득
- 스테이지 캠페인 공략: 행성 배치와 질량을 분석해 최소 연료로 10단계를 완주하는 최적 경로 설계
- 무한 모드 하이스코어 도전: 랜덤 행성 배치에 적응하며 연속 슬링샷 체인으로 최장 시간 및 최고 점수 달성
⚠️ 제한 사항 (Limitations)
- 로컬 저장소 의존: 모든 기록은 브라우저 LocalStorage에 저장되므로 캐시 삭제나 시크릿 모드에서는 데이터가 초기화될 수 있습니다.
- Web Audio 정책: 최신 브라우저의 오디오 자동 재생 제한에 따라 첫 번째 사용자 조작 이후 사운드가 활성화됩니다.
- 2D 렌더링: Canvas 2D API를 사용하므로 WebGL이나 3D 가속 없이 동작하며 극단적으로 많은 천체가 배치된 경우 저사양 기기에서 프레임 저하가 발생할 수 있습니다.
📖 사용 방법 (How to Play)
- 게임 모드 선택: 메인 화면에서 10단계 캠페인에 도전하는 스테이지 모드 또는 랜덤 생존에 도전하는 무한 모드를 선택합니다.
- 궤도 관찰: 화면에 표시되는 행성의 중력장 범위(점선 원)와 궤도 예측선(노란 점선)을 확인하여 스윙바이 경로를 계획합니다.
- 우주선 조종:
- 모바일: 화면 좌측의 가상 조이스틱을 드래그하여 추력 방향과 세기를 조절하거나 캔버스를 스와이프하여 순간 추력을 가합니다.
- PC:
W/A/S/D또는 방향키로 추력 방향을 제어하고Space로 부스트,Shift로 브레이크를 사용합니다.
- 스윙바이 기동: 행성 중력장에 적절한 각도로 진입하면 우주선이 행성을 돌며 속도와 방향이 변합니다. 궤도 예측선을 보며 최적 진입 각도를 찾으세요.
- 목표 도달: 초록색 타겟 존에 우주선이 진입하면 스테이지가 완료되며 잔여 연료·비행 시간·궤도 효율에 따라 점수가 산출됩니다.
- 기록 확인: 메인 화면의 기록 패널에서 최고 점수, 최장 시간, 스테이지 달성도를 확인할 수 있습니다.
❓ 자주 묻는 질문 (FAQ)
Q1. 스윙바이(중력 도움)란 정확히 무엇인가요?
A1. 스윙바이는 우주선이 행성의 중력장을 통과하면서 행성의 공전 운동 에너지 일부를 흡수해 추진제 소모 없이 속도를 높이거나 방향을 바꾸는 기동입니다. 보이저 1·2호, 카시니 탐사선 등 실제 우주 탐사에서 널리 사용되는 기법이며 이 게임에서는 행성 근처를 적절한 각도로 통과하면 자연스럽게 가속·편향 효과를 체험할 수 있습니다.
Q2. 궤도 예측선이 표시되지 않아요. 어떻게 켜나요?
A2. 메인 화면 또는 게임 내 설정(⚙️) 버튼에서 ‘궤도 예측선 표시’ 옵션을 켤 수 있습니다. 기본적으로 활성화되어 있으나 고난이도 도전을 위해 수동으로 끈 경우에는 해당 설정에서 다시 활성화하세요.
Q3. 행성에 부딪히면 어떻게 되나요?
A3. 행성 표면에 충돌하면 게임 오버가 됩니다. 행성의 중력장 범위(점선 원)를 참고해 충분한 거리를 유지하면서 통과하세요. 너무 가까이 접근하면 중력이 급격히 강해져 탈출이 어려워지므로 궤도 예측선을 확인하며 안전 거리를 유지하는 것이 핵심입니다.
Q4. 기록이 초기화됐어요. 복구할 수 있나요?
A4. 기록은 브라우저 LocalStorage에 저장되므로 브라우저 캐시를 삭제하거나 시크릿/프라이빗 모드에서 플레이한 경우 복구할 수 없습니다. 동일 브라우저와 일반 모드에서 플레이하면 기록이 유지됩니다.
WebMiniApps