블루투스 센서로 걷는 만큼 달까지 나아가는 스토리 기반 홈 피트니스 게임 A story-driven home-fitness game where your real steps — sent over a BLE sensor — carry you all the way to the Moon.
Unity3D (C#) · ESP32 BLE · Cinemachine / Timeline · Addressables · 홈 피트니스 / Exergame
달을 향해 날아가던 중 사고로 소행성에 불시착한 우주 소년 ‘미로’. 광활하고 몽환적인 우주의 길을 걸으며 달을 향해 나아가는 스페이스 로드무비 형식의 홈 피트니스 게임입니다.
앱과 블루투스 센서(ESP32 BLE) 를 연결하면, 사용자가 실제로 걸은 걸음·속도 데이터가 실시간으로 게임 속 캐릭터의 이동으로 변환됩니다. 운동량을 게임의 진행(달까지의 거리)으로 환산해, 운동을 몰입형 콘텐츠로 게임화한 것이 핵심입니다.
스토리 기반 구간 진행 · 센서 연동 · 다양한 시각 연출 · 유저 맞춤 랭킹으로 운동 지속성과 몰입을 함께 유도합니다.
| 구분 | 내용 |
|---|---|
| 개발 기간 / 역할 | 2021.08 ~ 2022.12 (1년 5개월) · 기획·아트 협업, 개발 100% 담당 (맵 / 이벤트 / 내러티브 / 시스템) |
| 플랫폼 | Android (홈 피트니스 기기 + 전용 BLE 센서 연동) |
| 기술 스택 | Unity3D (C#) · Cinemachine / Timeline(시네마틱·카메라 연출) · ESP32 BLE(걸음·속도 실시간 수신) · Unity UI + Coroutine(내러티브·튜토리얼) · Addressables(맵·리소스 동적 관리) |
| 주요 기여 | 2021.08~ UI/UX 및 맵 디자인 20종 구현 · 2022.01~ 이벤트·산소·아이템 상점 시스템 개발 · 2022.05~ 글로벌 영문판 제작(전체 텍스트 로컬라이징) |
- 🚶 BLE 센서 연동 운동 게임 — ESP32 블루투스 센서로 걸음/속도를 실시간 수신해 캐릭터 이동·속도로 변환 (
Setup_Manager→L_ESP32BLEApp,Pedometer,SpeedMeter) - 🗺️ 스토리 기반 20종 맵 — 0~1000km를 21개 챕터로 나눈 러닝 코스, 챕터별 전용 연출·오브젝트 (
Chapter1~20_Manager) - 🫧 산소(O2) 시스템 — 기본 40분 기준으로 소모, 특정 구간 가속 소모, 아이템으로 회복하는 운동 페이스 조절 장치 (
O2Timer) - 🛒 아이템 · 우주 휴게소 상점 — 산소통·별가루 등 구매/사용으로 전략적 플레이 (
ItemStore,Item,MyItemPopup) - 📊 운동 데이터 기록 & 시각화 — 거리·걸음·시간·칼로리를 저장하고 그래프로 시각화 (
Game_DataManager,ExricaiseRecord_*,Run*GraphDisplay/DrawLine) - 🏆 명예의 전당 랭킹(최대 100인) — 달 도착 기록을 랭킹 보드로 (
HallofFame_UIManager,HallofFame_RankDataManager) - 💬 타이핑 내러티브 & 라디오 멘트 — 장시간 플레이 지루함 방지, 몰입형 스토리텔링 (
Game_TypeWriterEffect,Game_Narration) - 🌐 글로벌 영문판 — 전체 텍스트 로컬라이징으로 다국어 대응 (
KR/,EN/분리 구현)
- 실시간 센서 파이프라인 — BLE(ESP32) 수신값 → 캐릭터 이동/속도 → 거리·칼로리·걸음 누적(
Game_DataManager,RunnerPlayer1,EstimatedVelocity). 데이터는PlayerPrefs영속 + 서버 전송. - 무한 러너 환경 구현 — 우주 길을 끊김 없이 생성하는 무한 스타필드·청크/오브젝트 풀링 (
InfinteStarfield,LoopStarField,ChunkSpawner,ObjectPool,Spawner). - 연출/카메라 —
Cinemachine가상 카메라 우선순위 전환(좌우 시점),Timeline시네마틱, Skybox 회전·터널 이펙트 (CameraViewPort,RotateSkyBox,TunnelController). - 동적 리소스 관리 —
Addressables로 맵/리소스 다운로드·로딩, 진행도 연출 (AddressablesManager,SetupBundle,Loading_SceneManager). - 튜토리얼/이벤트 시스템 — 단계별 튜토리얼, 구역 진입 트리거, 박스 영역 랜덤 스폰 (
Game_HelpManager,AroundActiveObject,SpawnBoundingBox).
1. 여정의 시작 (0~50km) ... 19. 색을 잃은 빛 (900~950km)
2. 목적없는 발걸음 (50~100km) 20. 달의 신전 (950~1000km)
⋮ 21. 명예의 전당
| 함께하는 여정 | 맴도는 공허함 | 우주를 떠도는 영혼 |
|---|---|---|
![]() |
![]() |
![]() |
| 영역 | 핵심 스크립트 | 역할 |
|---|---|---|
| 데이터 관리 | Game_DataManager, O2Timer, PlayerAniCheckCtrl |
거리·칼로리·시간·걸음 저장 및 서버 전송 / 산소 시스템 / 발소리·걸음 계산 |
| 센서 연동 | Setup_Manager, L_ESP32BLEApp, Game_SenesorEvent |
BLE(ESP32) 센서 연결·수신 트리거 |
| 씬·로딩 | Loading_SceneManager, AddressablesManager, SetupBundle |
Addressables 기반 씬/리소스 로딩·진행도 |
| 맵 이벤트 | AroundActiveObject, SpawnBoundingBox, Chapter1~20_Manager |
구역 활성화 / 랜덤 스폰 / 챕터별 연출 |
| 무한 러너 | InfinteStarfield, LoopStarField, ChunkSpawner, ObjectPool |
끊김 없는 우주 배경·오브젝트 풀링 |
| 내러티브 | Game_TypeWriterEffect, Game_Narration, SoundManager |
타이핑 연출·라디오 멘트·사운드 |
| 카메라/연출 | CameraViewPort, RotateSkyBox, TunnelController |
Cinemachine 시점 전환·Skybox·터널 이펙트 |
| 아이템/상점 | ItemStore, Item, MyItemPopup, ItemDescriptionManager |
구매·사용·설명 팝업 |
| 운동 기록 | ExricaiseRecord_*, Run{Distance,Step,Time,Kcal}Graph* |
일자별 운동 데이터 그래프 시각화 |
| 명예의 전당 | HallofFame_UIManager, HallofFame_RankDataManager, HallofFame_PlayerCtrl |
기록 저장·순위 리스트·도착 연출 |
.
├─ KR/ # 한국어판 핵심 C# 스크립트 (씬별 00.Main ~ 09.HallofFame, Server, Sensor, Setup)
├─ EN/ # 글로벌 영문판 스크립트 (로컬라이징 대응)
├─ Screenshots/ # 게임 화면·GIF
└─ 런투더문 게임 세부 기획안.xlsx # 게임 세부 기획안
이 저장소는 포트폴리오용 코드·자료 모음입니다(전체 Unity 프로젝트가 아닌 핵심 스크립트·기획·스크린샷 큐레이션).
Run to the Moon is a story-driven home-fitness game in the form of a "space road movie." A space boy, Miro, crash-lands on an asteroid on his way to the Moon and walks the vast, dreamlike roads of space toward it.
When the app is paired with a Bluetooth sensor (ESP32 BLE), the player's real step and speed data are streamed in real time and converted into the in-game character's movement. The core idea is to gamify exercise: physical activity becomes progress — the distance remaining to the Moon — for an immersive workout.
Story-based stage progression, sensor integration, rich visual direction, and a personalized ranking system together drive both workout adherence and immersion.
| Duration / Role | Aug 2021 – Dec 2022 (1 yr 5 mo) · collaborated on design & art, 100% of development (maps / events / narrative / systems) |
| Platform | Android (home-fitness device + dedicated BLE sensor) |
| Tech Stack | Unity3D (C#) · Cinemachine / Timeline (cinematics & camera) · ESP32 BLE (real-time step/speed) · Unity UI + Coroutine (narrative/tutorial) · Addressables (dynamic map/resource management) |
| Key Contributions | 2021.08~ UI/UX + 20 map designs · 2022.01~ event, oxygen, item-shop systems · 2022.05~ global English build (full-text localization) |
- 🚶 BLE-sensor fitness gameplay — real-time steps/speed from an ESP32 Bluetooth sensor drive character movement (
Setup_Manager→L_ESP32BLEApp,Pedometer,SpeedMeter) - 🗺️ 20 story-based maps — a 0–1000 km running course split into 21 chapters, each with unique direction (
Chapter1~20_Manager) - 🫧 Oxygen (O2) system — depletes over a ~40-min baseline, drains faster in certain zones, refilled via items — a pacing mechanic (
O2Timer) - 🛒 Items & space-rest-stop shop — buy/use oxygen tanks, stardust, etc. for strategic play (
ItemStore,Item,MyItemPopup) - 📊 Workout data logging & visualization — distance/steps/time/calories saved and charted (
Game_DataManager,ExricaiseRecord_*,Run*GraphDisplay/DrawLine) - 🏆 Hall of Fame ranking (up to 100) — Moon-arrival records on a leaderboard (
HallofFame_UIManager,HallofFame_RankDataManager) - 💬 Typewriter narrative & radio lines — immersive storytelling that fights boredom during long sessions (
Game_TypeWriterEffect,Game_Narration) - 🌐 Global English build — full-text localization, KR/EN implementations separated (
KR/,EN/)
- Real-time sensor pipeline — BLE(ESP32) input → character movement/speed → accumulated distance/calories/steps (
Game_DataManager,RunnerPlayer1,EstimatedVelocity); persisted viaPlayerPrefs+ sent to server. - Endless-runner world — seamless space road via infinite starfield, chunk streaming & object pooling (
InfinteStarfield,LoopStarField,ChunkSpawner,ObjectPool,Spawner). - Camera & direction —
Cinemachinevirtual-camera priority switching,Timelinecinematics, skybox rotation & tunnel FX (CameraViewPort,RotateSkyBox,TunnelController). - Dynamic resources —
Addressablesfor map/resource download & loading with progress UI (AddressablesManager,SetupBundle,Loading_SceneManager). - Tutorial & events — staged tutorial, zone-entry triggers, randomized in-volume spawning (
Game_HelpManager,AroundActiveObject,SpawnBoundingBox).
| Area | Key scripts | Role |
|---|---|---|
| Data | Game_DataManager, O2Timer, PlayerAniCheckCtrl |
save/send distance·calories·time·steps / oxygen / footstep & step counting |
| Sensor | Setup_Manager, L_ESP32BLEApp, Game_SenesorEvent |
BLE(ESP32) connect & receive triggers |
| Scene/Loading | Loading_SceneManager, AddressablesManager, SetupBundle |
Addressables scene/resource loading & progress |
| Map events | AroundActiveObject, SpawnBoundingBox, Chapter1~20_Manager |
zone activation / random spawn / per-chapter direction |
| Endless runner | InfinteStarfield, LoopStarField, ChunkSpawner, ObjectPool |
seamless space backdrop & pooling |
| Narrative | Game_TypeWriterEffect, Game_Narration, SoundManager |
typewriter text · radio lines · sound |
| Camera/FX | CameraViewPort, RotateSkyBox, TunnelController |
Cinemachine view switching · skybox · tunnel FX |
| Items/Shop | ItemStore, Item, MyItemPopup, ItemDescriptionManager |
buy/use/description popups |
| Records | ExricaiseRecord_*, Run{Distance,Step,Time,Kcal}Graph* |
per-day workout charts |
| Hall of Fame | HallofFame_UIManager, HallofFame_RankDataManager, HallofFame_PlayerCtrl |
record save · ranking · arrival sequence |
.
├─ KR/ # Core C# scripts (Korean build), by scene (00.Main ~ 09.HallofFame, Server, Sensor, Setup)
├─ EN/ # Global English build scripts (localization)
├─ Screenshots/ # In-game screens & GIFs
└─ 런투더문 게임 세부 기획안.xlsx # Detailed game design document (KR)
This repository is a portfolio curation of the project's core scripts, design doc, and screenshots — not the full Unity project.





