타워 어드벤처 설계

양규빈·2024년 5월 13일

유니티

목록 보기
29/34

타워 어드벤처?

지금껏 개발해본, 배틀 블루, 베틀 레드는 모바일 플랫폼 환경의 3D게임이었습니다.
이번에는, PC 플랫폼을 기반으로 하는 2D게임을 만들어보자는 생각이 들었습니다.

최근 재밌게 플레이 중인 니케라는 게임에서 미니게임 형식으로 타워디펜스를 플레이하고, 이런 타워디펜스 게임을 만들어 보면 좋을 것 같다는 생각이 들었습니다.

실제로, 예전에 스타크래프트 유즈맵을 만들 때 디펜스 유즈맵을 만들면서 제법 즐거웠던 경험이 있기도 했습니다.

다만, 단순한 타워디펜스에 차별점을 두고자.
타워디펜스에 로그라이크 게임을 추가하면 좋을 것 같다는 생각을 했습니다.

전체적인 게임의 흐름은 이러했습니다.

타워 디펜스 게임을 진행하면서, 스테이지를 클리어 해나감.
타워의 생성과 관련된 핵심 재료(ex: 설계도)들은 로그라이크 던전에 들어가서 부품을 구하도록 함.

설계

타워 디펜스 게임부

① 타워 합성
② 타워 설치 (오브젝트 풀 패턴)
③ 타워 제거 (오브젝트 풀 패턴)
④ 타워 강화
⑤ 몬스터 생성 및 이동

로그라이크 게임부

① 랜덤 맵 생성 <BSP 알고리즘>
② 아이템(설계도 등의 재료)을 로그라이크를 통해서 획득
③ 몬스터와의 전투
④ 사망 시에 획득한 아이템들 모두 잃음.

전투 파트

① 타워의 공격 패턴 제어(스트레티지 패턴)
② 데미지 계산(옵저버 패턴 or 중재자 패턴)
: 데미지 계산식 == (최종 공격력(공격력 + 보정 수치(속성 등)) – 방어력) (크리티컬 반영 체크)(크리티컬 배율 – 크리티컬 저항) / 레벨 차이
Damage Calculation Formula == (Final Attack Power (Attack Power + Adjustment Value (e.g., from attributes)) - Defense)
(Critical Reflect Check)(Critical Multiplier - Critical Resistance) / Level Difference

상세 설계

타워

클래스 다이어그램

TowerClass

타워와 관련된 데이터를 저장하는 클래스

데이터 필드
이름 (string)
공격력 (float)
방어력 (float)
체력 (int)
공격 주기 (float)
스킬 주기 (float)
속성 (enum)
상태 (enum)
타입 (enum)
크리티컬 확률 (float)
크리티컬 배율 (float)
레벨 (int)

BasicTower

모든 타워 객체의 부모가 되는 기본 클래스.
공격 함수와 스킬 함수, 애니메이션 제어 함수 등의 기본 함수를 가지고 있다.

ITowerAttack

스트레티지 패턴으로써 구현되는 공격 인터페이스.

인터페이스를 구현한, 클래스들은 BasicTwoer에 타워에 조립되어, 실제 공격 프로세스를 진행할 수 있게 된다.

몬스터

MonsterClass

몬스터와 관련된 데이터 클래스

데이터 필드
이름 (string)
체력 (int)
쉴드 (int)
방어력 (float)
공격력 (float)
이동속도 (float)
공격 주기 (float)
상태 (enum)
크리티컬 저항 (float)
레벨 (int)

레이어

UI 레이어 > 게임 필드 3층 레이어(탄환 및 이팩트) > 게임 필드 2층 레이어(몬스터 및 타워, 캐릭터 등) > 게임 필드 1층 레이어 (배경) > 바텀 레이어(백그라운드)

패키지

① 파티클 이팩트 for UI 패키지
② UniTask 패키지
③ DOTween
④ 유니티 어드레서블

profile
훌륭한 개발자를 꿈꾸는 중입니다

0개의 댓글