Skip to content

lunelDev/BMF-Run.to.the.Moon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌙 보자마자 피트니스 — 런 투 더 문 (Run to the Moon)

블루투스 센서로 걷는 만큼 달까지 나아가는 스토리 기반 홈 피트니스 게임 A story-driven home-fitness game where your real steps — sent over a BLE sensor — carry you all the way to the Moon.

🇰🇷 한국어 · 🇺🇸 English

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_ManagerL_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. 명예의 전당

📸 주요 화면

화면 설명 이미지
타이틀 “Run to the Moon” 로고와 함께 여정 시작 타이틀
튜토리얼 첫 진입 시 여정 구조·숨은 스토리 안내 튜토리얼
주행 시작 센서 연동 후 실제 속도에 맞춰 달리며 HUD에 거리·시간·칼로리·산소 표시 주행시작
주행 중 산소 게이지 소모·칼로리 계산 실시간 반영 주행중
아이템 획득 맵의 랜덤 아이템 상호작용 시 자동 획득 + 내러티브 아이템획득
보유 아이템 구매 아이템 확인·사용(산소 회복 등) 보유아이템
우주 휴게소 일정 거리 도달 시 휴게소 등장(산소 회복·구매) 휴게소
아이템 상점 산소통·별가루 등 전략적 구매 상점
체크포인트(5km) 구간마다 기록 저장, 이어하기 체크포인트
특수 맵 구간 판타지 테마 배경·연출 특수맵
달 도착 연출 최종 목표 도달 시 기록·축하 연출 달도착
명예의 전당 달 도착 기록이 랭킹 보드에 표시 명예의전당
함께하는 여정 맴도는 공허함 우주를 떠도는 영혼

🧱 시스템 / 스크립트 구조

영역 핵심 스크립트 역할
데이터 관리 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 프로젝트가 아닌 핵심 스크립트·기획·스크린샷 큐레이션).


🇺🇸 English

📘 Overview

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.

📅 Project Summary

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)

✨ Key Features

  • 🚶 BLE-sensor fitness gameplay — real-time steps/speed from an ESP32 Bluetooth sensor drive character movement (Setup_ManagerL_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/)

🛠️ Engineering Highlights

  • Real-time sensor pipeline — BLE(ESP32) input → character movement/speed → accumulated distance/calories/steps (Game_DataManager, RunnerPlayer1, EstimatedVelocity); persisted via PlayerPrefs + sent to server.
  • Endless-runner world — seamless space road via infinite starfield, chunk streaming & object pooling (InfinteStarfield, LoopStarField, ChunkSpawner, ObjectPool, Spawner).
  • Camera & directionCinemachine virtual-camera priority switching, Timeline cinematics, skybox rotation & tunnel FX (CameraViewPort, RotateSkyBox, TunnelController).
  • Dynamic resourcesAddressables for 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).

🧱 System / Script Structure

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

📁 Repository Layout

.
├─ 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.

About

운동 데이터를 기반으로 우주 소년 ‘미로’의 여정을 따라 달까지 걷는 여정을 그린 스토리 기반 홈 피트니스 게임 (Unity + BLE 센서 연동)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages