참여 인원과 당첨 인원을 설정하면
랜덤으로 생성된 사다리를 따라 구슬이 이동하고,
도착 결과에 따라 당첨자를 결정하는 캐주얼 시뮬레이션 게임입니다.
- 장르: 캐주얼 시뮬레이션
- 플랫폼: Mobile (Unity)
- 엔진: Unity
- 목적 : 단순한 게임 규칙을 기반으로 상태 관리, 실행 로직 분리, 재시작 구조 설계를 중심으로 한 포트폴리오 프로젝트
Ready
└ 참여 인원 / 당첨 인원 설정
↓
Running
├ 사다리 랜덤 생성
├ 구슬 스폰
├ 구슬 이동 시뮬레이션
└ 결과 계산
↓
Result
├ 당첨자 표시
└ Retry → 내부 Reset 후 재시작
✔️ 씬 리로드 없이 상태 전환과 재시작을 처리하도록 설계
- 상태 관리와 실행 로직을 분리
- 데이터 / 표현 / 연출 책임을 명확히 구분
| 영역 | 역할 |
|---|---|
| GameFlowController | Ready / Running / Result 상태 전환 |
| MarbleSimulationRunner | 게임 실행 흐름의 중심 |
| LadderGenerator / Model | 사다리 데이터 생성 |
| LadderView | 사다리 시각화 |
| MarbleAnimator | 구슬 이동 연출 |
| MarbleMover | 순수 시뮬레이션 계산 |
- UI 흐름과 게임 실행을 분리하여
- 구조 이해도 향상
- 재시작 / 확장 시 수정 범위 최소화
GameFlowController는 “언제 상태가 바뀌는지”만 책임지고,
MarbleSimulationRunner는 “게임이 어떻게 실행되는지”만 책임집니다.
- Retry 시 씬을 다시 로드하지 않고, 애니메이션 / 뷰 / 오브젝트를 명시적으로 초기화한 뒤 재실행
Retry
→ Animator 중단
→ View / Object Clear
→ Simulation 재실행
✔️ 디버깅 용이성
✔️ 상태 꼬임 방지
✔️ 포트폴리오 설명 가능 구조
- LadderModel : 사다리 구조 데이터
- MarbleMover : 최종 도착 위치 계산
- LadderView / MarbleAnimator : 시각적 표현 전담
시뮬레이션 로직을 UI와 분리하여 테스트와 유지보수가 쉬운 구조를 지향했습니다.
- GameFlowController
- 게임 상태 관리
- 버튼 입력에 따른 상태 전환
- MarbleSimulationRunner
- 사다리 생성
- 구슬 스폰
- 애니메이션 실행
- 결과 계산 및 전달
- ResetAndRun()을 통한 내부 재시작 처리
- LadderGenerator / LadderModel
- 랜덤 사다리 구조 생성
- 데이터 중심 설계
- MarbleAnimator
- 구슬 이동 연출
- 시뮬레이션 완료 이벤트 전달
- 사다리 규칙 변경
- 다양한 당첨 조건 추가
- 애니메이션 연출 교체
- 모바일 환경 최적화
이 프로젝트는 “단순히 동작하는 게임”이 아니라,
구조와 흐름을 설명할 수 있는 코드를 목표로 제작되었습니다.