집중 세션용 Ambient 비행 시뮬레이터 - ControlTower 연동
3D 비행 시뮬레이션을 통해 업무 집중 세션을 게이미피케이션하는 데스크톱 애플리케이션. ControlTower와 연동하여 비행 완료 시 퀘스트/업적을 자동 생성한다.
버전: v0.1.0 포트: 3150 (API 서버)
| 구분 | 기술 |
|---|---|
| 백엔드 | Tauri 2 (Rust) |
| 프론트엔드 | Three.js + TypeScript (Vite) |
| 지구본 | Cesium.js |
| 데이터베이스 | SQLite (rusqlite, WAL mode) |
| HTTP 서버 | tiny_http (Rust) |
| WebSocket | tungstenite |
| HTTP 클라이언트 | reqwest (ControlTower 동기화) |
| 빌드 | Vite (프론트) + Cargo (Rust) |
npm installRust toolchain 필요 (rustup.rs)
# 프론트엔드만 (Vite dev server, port 1420)
npm run dev
# Tauri 전체 (Rust + Vite)
npm run tauri devnpm run tauri buildrun-tauri.bat- Pre-Flight: 지구본 노선 선택, 탑승권 발권, 좌석 선택
- In-Flight: 3D 비행 렌더링 (절차적 지형, 해양, 대기, 구름)
- Post-Flight: 비행 통계, 도시 방문 기록
- 절차적 지형 생성
- 해양 셰이더
- 대기 산란 효과
- 볼류메트릭 구름
- 5가지 카메라 모드
- 65개 이상 노선, 50개 도시
- 카테고리별 분류 (향후 선박 버전 확장 가능)
- 상태 머신 기반 비행 시뮬레이션
- REST API 제공 (localhost:3150)
- 비행 완료 시 퀘스트 자동 생성 (ControlTower API: localhost:3100)
- 도시 방문 기록 동기화
- 업적/보상 연동
- Standalone 모드: ControlTower 없이도 독립 실행 가능
| Endpoint | 설명 |
|---|---|
/start |
비행 시작 |
/status |
현재 비행 상태 |
/land |
착륙 |
/routes |
노선 목록 |
/stats |
비행 통계 |
FlightSimulator/
├── package.json 프론트엔드 설정
├── vite.config.ts Vite 빌드 설정
├── tsconfig.json TypeScript 설정
├── index.html 엔트리 HTML
├── src/ ← 프론트엔드 (TypeScript)
│ ├── config.ts 설정
│ ├── main.ts 엔트리
│ ├── phases/ 3-Phase UX 흐름
│ │ ├── phase-manager.ts
│ │ ├── pre-flight/
│ │ ├── in-flight/
│ │ └── post-flight/
│ ├── three/ Three.js 모듈
│ │ ├── terrain/ 절차적 지형
│ │ ├── atmosphere/ 대기 산란
│ │ ├── aircraft/ 항공기 모델
│ │ ├── camera/ 카메라 시스템
│ │ ├── globe/ 지구본 (Cesium)
│ │ └── core/ 렌더링 코어
│ └── utils/ 유틸리티
├── src-tauri/ ← Rust 백엔드
│ ├── Cargo.toml Rust 의존성
│ ├── src/
│ │ ├── main.rs 엔트리
│ │ ├── lib.rs 라이브러리
│ │ ├── models.rs 데이터 모델
│ │ ├── api/ REST API 핸들러
│ │ ├── db/ SQLite 데이터베이스
│ │ ├── flight/ 비행 엔진 (상태 머신)
│ │ ├── routes/ 노선 데이터
│ │ └── sync/ ControlTower 동기화
│ └── tauri.conf.json Tauri 설정
├── shared/
│ └── types.ts 공유 TypeScript 타입
└── public/ 정적 자산
- Vehicle 인터페이스 설계: 선박 버전 확장 가능 (공유 타입, Phase 흐름)
- Route DB: category 필드로 차량 유형 구분
Proprietary - Geoview Co., Ltd.