게임 전체 클래스 UML을 보기 편하게 쪼개어 보았습니다.
(사정상 UML프로그램이 아닌 마인드맵 프로그램을 사용하였습니다.)
관계는 상속에 관련해서만 표현하였습니다.
각각의 클래스에 자세한 설명은 링크를 걸어 놓았습니다.
GameObject
- GameObject
게임상에 등장하는 모든 오브젝트의 최상위 클래스 입니다.
BondingRadius, Execute 등 모든 오브젝트에 꼭 필요한 인터페이스를 제공합니다.
- Mover (자세히)
게임 상에서 빈번히 생성되고, 삭제되는 오브젝트들의 베이스 클래스입니다.
PoolingManager의 메모리 관리를 받는 파생클래스들의 베이스로서 필요한 함수들의 인터페이스를 제공합니다.
- Player
플레이어 클래스입니다. 캐릭터의 생명이나 FSM 등을 소유합니다.
- Planet
행성 클래스입니다.
- HealthUI (자세히)
- ScoreUI
- MyButton (자세히)
- BonusUI
UI 클래스들입니다.
State
- State (자세히)
게임상의 오브젝트들은 AI상태를 구현하기 위해 State가 제공하는 인터페이스를 상속받아 상태를 정의합니다.
게임의 AI는 Stage -> (Player, Bullet)의 계층 구조를 가집니다. (Stage의 상태에 따라 Player, Bullet의 상태가 변화합니다.)
- BulletState (자세히)
Bullet들의 AI 상태입니다. 표기는 BulletState로 했지만 NormalState, BonusTimeState, MagnetItemState 가 존재합니다.
- PlayerState (자세히)
Player의 AI 상태입니다. 역시 표기는 PlayerState로 했지만 NormalState, GiantState 가 존재합니다.
- StageState (자세히)
현 Stage의 AI 상태입니다. 역시 표기는 StageState로 했지만 NormalStageState, BonusTimeStageState 가 존재합니다.
& Singleton
- UIManager
UI를 key값으로 저장하고 관리합니다.
- AudioManager
기존의 AudioEngine을 랩핑한 클래스입니다. Audio의 동시 플레이 카운트를 제어하기위해 정의하였습니다.
- ItemManager
현재 플레이어가 획득한 아이템이 무엇인지 저장하고 타이머를 관리하도록 정의 되어 있습니다.
- ObjectManager (자세히)
게임상의 모든 오브젝트의 Execute 및 안전한 Remove를 보장하기 위해 정의 되었습니다.
- PoolingManager (자세히)
게임상에서 오브젝트의 생성과 삭제가 빈번하게 일어나기 때문에 그 리스크를 줄이고 메모리관리를 효율적으로 하기 위해 정의 하였습니다.
'All > Project' 카테고리의 다른 글
ObjectManager (0) | 2016.04.12 |
---|---|
PoolingManager (0) | 2016.04.12 |
게임 개요 (0) | 2016.04.11 |
MemoryPooling_2 (0) | 2016.03.15 |
MemoryPooling_1 (0) | 2016.03.15 |