프로젝트 개요 / Overview
- 게임 제목 | Runster
- 게임 장르 | 3D 슈팅 액션
- 개발 기간 | 2025.05.19 ~ 2025.06.08
- 인력 구성 | 개발 1인
- 게임 소개
뛰어라, 적들을 처치하라. 생동감 있는 액션과 타격감이 주가 되는 게임.
- 비고 | 2025 2학기 소프트웨어학과 전공박람회 대표작
기술 스택 / Tech Stack
- Engine : Unity 3D
- Language : C#
- Tools : Rider, Git, GitHub, Mixamo
기여 / Contribution
1인 개발로 기획부터 구현까지 전 과정을 담당
- Unity 3D 환경에서 물리 시스템을 학습하고 이를 기반으로 게임플레이 구현
- 슬라이딩, 벽타기 등 이동 중심의 액션 시스템 설계 및 개발
- 카메라 연출을 활용한 타격감 및 속도감 강화
- 이동 시스템 학습을 위한 단계별 튜토리얼 설계
문제 해결 사례 / Trouble Shooting
문제
- 슬라이딩, 벽타기, 등반 등 이동기가 늘어나면서 입력, 물리 처리가 섞여 의도치 않은 이동 / 속도 튐 / 상태 충돌이 발생
원인 분석
- 이동기를 기능 단위로 추가하면서, 현재 어떤 이동 상태인지에 대한 기준이 약해져 동일 입력이 여러 로직에 동시에 반응하는 상황이 생김
- 특히 경사면(Slope)에서 중력 / 가속 처리가 섞이며 속도 제어가 불안정해짐
해결 방법
MovementState기반 FSM 구조를 도입하여Climb, WallRun, Slide, Sprint, Air등 상태를 분리하고StateHandler()에서 우선순위 기반 상태 전환으로 충돌을 제거desiredMoveSpeed와 보간(LerpMoveSpeedCoroutine)을 이용해 이동 상태 변경 시 속도가 급격히 튀지 않도록 설계- 경사면에서는 이동 방향을
ProjectOnPlane으로 재계산하여 물리 안정화
결과
- 이동기 조합 상황에서도 상태 충돌 없이 동작이 일관되게 유지됨
- 속도감 있는 액션을 유지하면서도 조작 안정성이 개선됨
배우고 느낀 점 / Retrospective
처음으로 진행한 1인 게임 개발 프로젝트인 Runster는 이동이 재미의 핵심인 프로젝트였기 때문에, 이동기를 많이 넣는 것보다 이동 상태를 어떻게 관리하느냐가 완성도를 좌우했습니다.
이동기 구현 과정에서 예외 상황이 생길 때마다 기능을 덧붙이기보다는, MovementState 기반 FSM으로 구조를 재정리하고 상태 전환 우선순위를 세우는 방식으로 문제를 해결했습니다. 이러한 사소한 구조, 속도 보간 등만으로 플레이에 큰 차이를 불러올 수 있음을 알게 되었습니다.
이 경험을 통해 1인 개발에서도 문제를 끝까지 파고들어 구조를 정리하고, 제한된 기간 안에 핵심 시스템을 완성하는 역량을 기를 수 있었습니다.
관련 자료 / Links
-
Youtube
-
Release
