Speedy Hero Prototype 프로젝트를 진행하며, 게임 개발의 전반적인 과정과 기술을 체득하였습니다. Unity 엔진을 활용한 이 프로젝트는 고속 이동과 다이나믹한 장애물 회피 시스템을 중심으로 한 게임이며, 이를 통해 물리 엔진, AI, 그래픽 최적화 등의 다양한 기술을 실전에서 적용해볼 수 있었습니다.
초고속 이동이 가능한 캐릭터가 장애물을 피하며 끝없이 달리는 러너(Runner) 게임입니다. 플레이어는 속도를 조절하며 장애물을 회피하고, AI 적들을 따돌리며 높은 점수를 기록하는 것이 목표입니다. 절제된 물리 엔진 사용, AI와의 상호작용, 그리고 최적화된 그래픽과 성능이 주요 기술적 특징입니다.
Unity 기반의 게임 개발에 필요한 물리 엔진, AI, 그래픽 최적화, 비동기 로딩, 입력 시스템, UI/UX 설계 등의 다양한 기술을 학습하고 실전에서 적용하였습니다. 이 프로젝트를 통해 기획부터 프로토타입 개발, 최적화, 배포까지 전 과정을 경험할 수 있었으며, 특히 성능 최적화와 플레이어 경험 향상을 위한 다양한 해결책을 고민하는 과정에서 개발자로서 한층 성장할 수 있었습니다.
Speed Hero Prototype은 Unity 기반의 액션 게임으로, 플레이어가 빠른 속도로 장애물을 피하며 달리는 것이 주요 목표입니다.
-
사용 기술: Unity (C#), NavMesh AI, Universal Render Pipeline (URP), ShaderLab
-
플랫폼: PC, Android
-
관련 영상: [YouTube 링크 - https://www.youtube.com/watch?v=tH6Hlx6yb9I]
플레이어 이동 및 게임플레이 핵심 시스템 개발
-
고속 이동 및 충돌 처리
- 고속 캐릭터 이동: Unity의 Rigidbody 물리를 사용하여 부드럽고 현실적인 속도 기반 모션 구현
- 캐릭터 능력: Rigidbody.AddForce와 Raycasting을 사용한 대시, 회피 메카닉
- Raycast를 활용한 고속 이동 시 충돌 감지 보완 (Continuous Collision Detection 적용)
- DashController.cs를 개발하여 순간 가속(Dash) 기능 및 재사용 대기시간(Cooldown) 적용
- 동적 장애물 생성: 장애물이 절차적으로 생성되어 매 실행마다 고유한 경험 제공
AI 및 적(Enemy) NPC 시스템 개발
-
AI Pathfinding 및 추격 시스템
- Unity의 NavMesh를 활용하여 AI가 동적으로 플레이어를 추격하도록 구현
- Finite State Machine (FSM) 적용 (Idle, Chase, Attack 상태 전환)
- 장애물과의 충돌을 피하도록 NavMeshObstacle 추가
- 동적 난이도 조절(DDA): 플레이어 성능에 기반한 적 스폰 비율 조절
-
AI 반응 속도 및 동작 최적화
- AI가 특정 거리 이상 떨어지면 Object Pooling을 사용해 비활성화하여 성능 최적화
그래픽 및 성능 최적화
-
최적화된 렌더링 파이프라인: 성능 향상을 위해 Unity의 URP(Universal Render Pipeline) 사용
-
ShaderLab 기반의 커스텀 셰이더 개발
- 초고속 이동 시 모션 블러(Motion Blur) 효과 적용
- 속도에 따른 트레일 효과(Afterimage Shader) 구현
-
LOD (Level of Detail) 시스템 적용
- 멀리 있는 오브젝트의 디테일을 낮추어 성능 개선
-
비동기(Asynchronous) 씬 로딩 적용
- 배경 및 맵을 비동기 방식으로 로딩하여 부드러운 씬 전환 구현
-
Object Pooling 기법 적용
- 빈번한 생성/소멸 대신 오브젝트 재사용을 위한 풀 매니저 활용
- 반복적으로 생성되는 오브젝트를 풀에서 재사용하여 CPU 및 메모리 사용량 감소
입력 시스템
- 크로스-플랫폼 지원: 키보드, 마우스, 게임패드, 터치 입력을 위한 Unity의 New Input System 사용
- 제스처 인식: 모바일 플랫폼용 스와이프 기반 컨트롤
오디오 및 사운드 이펙트
- 3D 공간 오디오: 몰입형 사운드 위치 지정을 위한 AudioSource.spatialBlend 구현
- 적응형 음악 시스템: 게임 강도에 따라 배경 음악 템포 증가
UI/UX 개선 및 모바일 환경 대응
-
UIManager.cs 개발
- 점수 시스템, 속도 표시 UI, 플레이어 상태 정보 표시
- HealthSystem.cs 개발하여 체력 및 속도 감소 시스템 구현
-
모바일 환경 최적화
- Unity의 New Input System 활용하여 터치 및 제스처 컨트롤 구현
- 모바일 화면 해상도 대응 및 최적화
-
문제: Rigidbody를 활용한 이동 시, 속도가 너무 빠르면 충돌 감지가 원활하지 않음
-
해결: Unity의 Raycast 및 Continuous Collision Detection 기능을 활용하여 충돌 감지 보완
-
문제: AI가 빠른 플레이어를 추격하는 과정에서 벽에 걸리는 현상 발생
-
해결: NavMeshObstacle을 추가하여 AI가 장애물을 자연스럽게 회피하도록 개선
-
문제: 동적인 오브젝트 생성이 많아지면서 성능 저하 문제 발생
-
해결: Object Pooling 기법을 도입하여 생성 및 삭제 비용 최소화
- 안드로이드 설치 회수 50,000회 달성
이 프로젝트를 통해 게임 개발의 전반적인 기술뿐만 아니라 문제 해결 능력, 최적화 기법, AI 활용법 등을 실전에서 배울 수 있었습니다. 특히, 사용자 경험(UX) 개선과 성능 최적화에 대한 고민을 많이 하였고, 이 과정에서 개발자로서 한 단계 성장했다고 느꼈습니다. 앞으로는 멀티플레이 기능 개발, 머신러닝 기반 AI 강화, VR/AR 기술 활용과 같은 고급 기술을 접목하여 더욱 완성도 높은 게임을 만들고 싶습니다.
이 경험을 통해 문제 해결 능력과 팀 협업의 중요성을 배우게 되었고, 이를 바탕으로 더욱 발전된 게임을 개발하고 싶습니다.
앞으로도 몰입감 높은 게임을 개발하며, 개발자로서의 역량을 한층 더 성장시키고 싶습니다.
Welcome to the Speed Hero Prototype project! This repository contains the prototype of the Speed Hero game, developed using the Unity engine. Below, you'll find detailed information about the project's structure, technical features, setup instructions, and other relevant details.
The repository is organized into several directories and files:
-
Assets/
- Contains all the game assets, including scenes, scripts, prefabs, and resources.
-
Library/
- Managed by Unity to store imported assets and other project-specific settings.
-
Logs/
- Contains log files generated during the build or runtime processes.
-
Packages/
- Manages package dependencies for the project.
-
ProjectSettings/
- Stores project-specific settings such as player settings, quality settings, and input configurations.
-
UserSettings/
- Contains user-specific settings, typically related to the Unity editor.
-
obj/
- Stores temporary object files generated during the build process.
-
Assembly-CSharp.csproj
- Project file for runtime scripts.
-
Speedy Hero.sln
- Solution file for the project.
-
speedyhero.apk
- Compiled Android package of the application.
The Speed Hero Prototype incorporates several technical features to enhance gameplay and performance:
-
High-Speed Character Movement: Uses Unity’s Rigidbody physics for smooth and realistic speed-based motion.
-
Dynamic Obstacle Generation: Obstacles spawn procedurally, making each run unique.
-
Character Abilities: Dash, jump, and evade mechanics using Rigidbody.AddForce and Raycasting.
-
Optimized Rendering Pipeline: Uses Unity’s Universal Render Pipeline (URP) for improved performance.
-
Custom Shaders: ShaderLab-based shaders for motion blur and speed trails.
-
Post-Processing Effects: Bloom, motion blur, and chromatic aberration via Unity’s Post-Processing Stack.
-
Object Pooling: Uses a pool manager to reuse objects instead of instantiating/destroying them frequently.
-
Asynchronous Scene Loading: Background scene loading using SceneManager.LoadSceneAsync().
-
LOD (Level of Detail) System: Reduces the complexity of distant objects for better performance.
-
AI Pathfinding: Enemy AI uses Unity’s NavMesh for dynamic movement and chasing.
-
Finite State Machine (FSM): AI behavior implemented with FSM for different enemy states (Idle, Chase, Attack).
-
Dynamic Difficulty Adjustment (DDA): The game adjusts enemy spawn rates based on player performance.
-
Cross-Platform Support: Uses Unity’s New Input System for keyboard, mouse, gamepad, and touch inputs.
-
Gesture Recognition: Swipe-based controls for mobile platforms.
-
3D Spatial Audio: Implemented with AudioSource.spatialBlend for immersive sound positioning.
-
Adaptive Music System: Background music tempo increases with game intensity.
-
GameManager.cs – Manages game states (Start, Pause, Game Over).
-
PlayerController.cs – Handles player movement, dashing, and collision detection.
-
ObstacleSpawner.cs – Dynamically spawns obstacles at runtime.
-
EnemyAI.cs – Controls enemy behavior and pathfinding.
-
UIManager.cs – Manages in-game UI elements.
-
SpeedBoost.cs – Implements temporary speed boosts when triggered.
-
JumpMechanics.cs – Handles jump physics and animations.
-
DashController.cs – Implements the dash ability with cooldown and stamina mechanics.
-
MotionBlurEffect.cs – Applies motion blur dynamically based on player speed.
-
SpeedTrail.cs – Adds a trail effect behind the player when at high speeds.
-
ShaderController.cs – Handles shader properties for dynamic visual changes.
-
AIController.cs – Controls enemy AI using a state machine.
-
NavMeshAgentController.cs – Uses Unity’s NavMesh for AI navigation.
-
ChasePlayer.cs – Makes enemies detect and chase the player dynamically.
-
EventManager.cs – Implements event-driven programming to trigger in-game events.
-
ScoreManager.cs – Tracks and updates player score.
-
HealthSystem.cs – Manages player health and regeneration mechanics.
-
PauseMenu.cs – Implements the pause menu functionality.
To set up the project locally, follow these steps:
-
bashCopyEditgit clone https://github.com/whd793/speed-hero-prototype.gitcd speed-hero-prototype
-
Install Unity:
-
Ensure you have Unity installed (preferably a recent LTS version).
-
Download Unity from the official website.
-
-
Open the Project:
-
Launch Unity Hub.
-
Click "Add" and select the cloned repository folder.
-
Open the project in Unity.
-
To build the project for different platforms:
-
Open Build Settings:
- In Unity, navigate to File > Build Settings.
-
Select Platform:
-
Choose your target platform (PC, Android, iOS, WebGL, etc.).
-
Ensure all required dependencies are installed.
-
-
Configure Settings:
- Adjust resolution, input settings, and performance optimizations.
-
Build:
- Click "Build" and select an output directory.
For Android builds, an APK file (speedyhero.apk) is already present in the repository. You can install this APK on your Android device to test the game.
To run the application:
-
In the Unity Editor:
- Click the Play button.
-
On a Device (Android):
-
Transfer speedyhero.apk to your Android device.
-
Install the APK (Enable "Install from Unknown Sources" in settings).
-
Run the game.
-




