원작 게임 Strikers 1945를 모작한 프로젝트입니다.
2024-03-05 ~ 2024-03-17
1인 / 김지훈
Strikers 1945는 제2차 세계대전을 배경으로 하고 있으며, 플레이어의 전투기를 통해 적의 공격을 피하고 반격하면서 레벨을 진행해 나가는 것이 목표입니다. 전투기의 기본 공격과 강력한 '폭탄' 공격을 이용해 다양한 적 유닛과 보스와 맞서 싸우는 게임입니다.
- 플레이어 동작 : 8방향 움직임
- 적 움직임 구현 : Sin파, 귀환, 회전 ,돌진 랜덤 이동
- 다양한 종류의 적 출현 : 움직임과 공격 패턴을 달리 적용한 다양한 패턴
- 보스 몬스터 구현 : 한 가지 패턴 사용 (최종 버전에는 여러 패턴을 적용)
- 아이템 드랍 및 적용 : 파워업, 폭탄, 생명, 골드
- 애니메이션 적용
- 오브젝트 풀링 적용 : 플레이어, 적 총알
- 데이터 테이블화 : 플레이어, 적, 아이템
- 적 공격 패턴 구현 : 전방 발사, 회전하며 발사, 스프레드, 타게팅, 레이저
- 플레이어 헬퍼 : 가장 가까운 적을 찾아 발사
- Button, InputField 개발
- 기록 저장 및 랭킹
- 인 게임 UI 개발
첫 번째 주요 기능은 적의 공격과 움직임 패턴입니다. 제가 선택하고 구현한 적은 총 5종류이며 일반 적 3종류, 중간 보스 그리고 보스 각각 1종류입니다. 하지만 적은 여러 공격 패턴과 움직임 패턴을 가질 수 있고 이를 함수 객체를 이용해 랜덤하게 선택하여 사용할 수 있게 구현하였습니다. 이로써 다양한 패턴을 가진 적을 마주할 수 있습니다.
두 번째 주요 기능은 객체지향 기법입니다. 먼저, 상태 패턴을 사용하여 플레이어의 다양한 상태 변화에 따라 게임을 관리하였습니다. 팩토리 메서드 패턴을 이용해 적 유닛 또는 아이템을 게임 내에 생성 시 기존 코드를 변경하지 않고도 확장성을 갖출 수 있었습니다. 오브젝트 풀링 기법은 게임 성능을 최적화하기 위해 사용하였습니다. 이 기법을 플레이어와 적의 총알에 적용해 필요한 만큼의 객체를 생성하고 재사용함으로써 메모리 할당과 해제가 되는 오버헤드를 줄일 수 있습니다. 이러한 디자인 패턴과 기법을 적용하여 유지보수하기 쉬운 게임을 개발할 수 있었습니다.
세 번째주요 기능은 애니메이션과 이벤트 시스템입니다. 먼저 애니메이션에 대해 소개해드리면, 스프라이트 시트를 사용하여 GPU가 하나의 텍스처 파일 내에서 프레임을 빠르게 전환할 수 있어 렌더링 성능이 개선되는 효과를 볼 수 있었습니다. 또한 여러 애니메이션 프레임을 하나의 텍스처로 통합하여 메모리 사용량을 줄일 수 있었습니다. 화면우측 하단에 InputField에 대한 처리와 Button 클래스의 예시를 볼 수 있습니다. 이 UI 컴포넌트들은 사용자의 입력 이벤트와 상호작용을 하는데, 각각의 클래스는 독립적인 기능을 가지고 있습니다. 따라서 UX를 개선하기 위해 디자인 변경을 필요로 할 때 해당 클래스만 수정하여 사용할 수 있습니다.