본문 바로가기

개발일지/액션던전_Unity

[개발일지] 클리커 2D 로그라이크 던전 RPG 게임 "액션던전" 기획과 개발환경

개요

유니티를 통한 모바일 게임 개발 포트폴리오를 하나 만들고자 하였고
개발 프레임워크를 짜보면서 간단한 방식의 모바일 게임을 하나 만들고자 했다.

 

간단한 구조와 적은 리소스로 만들만한 게임 컨셉을 찾던 도중에 옛날에 모바일로 재밌게 했던

일본의 1인 게임 개발사 'Nussygame''Buriedbornes'라는 게임이 떠올랐다.

 

'Buriedbornes' 게임 예시 화면

이미지 출처: 게임메카

 

모바일판 다키스트 던전으로 화제가 된 '베리드본스'

최근 국내 RPG 게이머들 사이에서 조용하면서도 빠르게 인기를 얻고 있는 모바일게임이 있다. 최신 게임이라고 보기에는 조금 투박하지만, ‘다키스트 던전’을 연상시키는 높은 난이도와 전략

www.gamemeca.com

 

단순히 선택만 하면서 캐릭터를 성장시키고 던전을 탐험해나가는 묘한 매력이 있는 로그라이크RPG 게임이었기에

이 게임의 느낌을 가볍게 갖고오면서 더 맘에 드는 기획이나 컨셉이 있으면 발전시킬 수 있는 형태를 구상했다.

 

기획

혼자서 개발을 하는 것이기 때문에 게임의 기획을 먼저 잡아나가야 했고

레퍼런스가 있기는 일단은 개발 프레임워크와 게임의 기틀을 우선시 했기에 단순한 기획이 필요했다.

 

우선적으로 생각했던 개발 기준은

1. 선택지의 개수를 줄이고 더 단순화 시킨다.

2. 선택은 '확률'을 통해 결과가 달라졌으면 좋겠다.

3. 플레이는 짧고 단순하지만 매력적인 컨셉을 부여한다.

 

저런 기준을 생각했을 때 가장 먼저 떠올린 1번과 2번을 충족시키는 게임은 '가위바위보'였다.

그래서 단순하게 떠올렸을 때 '공격', '방어', '회피' 세 가지의 행동을 '액션'이라고 칭하고 

앞으로 나아가면서 성장하는 게임 플레이를 구상했다.

또한 '가위바위보'도 3가지 선택지 중 하나를 고르는 것인 만큼 요즘 게임들에서 많이 쓰는 '3중1택'의 성장 시스템을
구현해보는 것도 나쁘지 않겠다는 생각이 들어서 전체적인 컨셉을 잡았다.

 

아이디어 구상 당시 기록했던 게임의 화면과 기획

 

게임의 기본적인 룰은

- 턴제 방식으로 플레이어와 적 몬스터는 1:1 전투를 해나간다.
- 플레이어는 매 턴 공격, 방어, 회피 3가지 선택지를 선택하고 적 또한 랜덤으로 3가지 중 하나의 액션을 골라 수행한다.
   - 서로 공격을 선택했을 경우에는 서로 데미지를 받는다.

   - 방어는 공격을 막으며 일정 %의 데미지를 받는다.

   - 회피는 공격을 피하여 데미지를 받지 않지만 성공 확률이 낮다. +a 의 보너스를 제공한다.

- 상대의 체력을 전부 소진시키면 전투에서 승리한다.

로 설정했다.

 

그리고 성장요소와 특수 규칙을 생각한 것은

- 액션 실패 시 최대 3스택까지 쌓이는 'AP(Action Point)' 라는 보너스를 주며 AP 1당 n%의 성공확률을 제공한다.

- 밤/낮 시스템을 통해 플레이어와 적 몬스터의 '액션' 확률이 증가하거나 감소한다.

   - 밤과 낮은 일정 턴수동안 유지되며 턴수가 다 지나면 서로 전환된다.

- 플레이어는 3턴마다 성장 선택지를 선택한다.

   - 성장 선택지는 스탯, 장비나 소모 아이템, 스킬 정도의 요소가 존재할 것이다.

      - 일단은 스탯정도로만 만들고 다른 요소들은 나중에 더 구상해보는 식으로 접근

정도가 있었다.

 

 

개발 환경 설정

엔진 : 유니티엔진6 preview ver (6000.0.16f1)
개발 언어: C#, Unity scripting api
사용 라이브러리: UniRx, Zenject, UniTask, DOTween

 

모든 행동이 UI 조작을 통한 이벤트 위주로 이뤄지는 만큼

UniRx를 통한 옵저버 패턴 기반 이벤트 구현 관리가 용이할 거라 봤고

UI간의 참조나 결합복잡도가 늘어날 것이기에 DI(의존성주입) 프레임워크인 Zenject를 사용하였다.

UniTask는 기존 힙 할당 기반인 코루틴보다 구조체를 통한 스택 할당 기반이라 성능적으로나
가독성으로나 비동기 구현에서 용이하다 판단했기에 채용했다.

 

UniRx Github Link

 

GitHub - neuecc/UniRx: Reactive Extensions for Unity

Reactive Extensions for Unity. Contribute to neuecc/UniRx development by creating an account on GitHub.

github.com

Zenject Github Link

 

GitHub - modesttree/Zenject: Dependency Injection Framework for Unity3D

Dependency Injection Framework for Unity3D . Contribute to modesttree/Zenject development by creating an account on GitHub.

github.com

UniTask Github Link

 

GitHub - Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity.

Provides an efficient allocation free async/await integration for Unity. - Cysharp/UniTask

github.com

 

 

다음 글에서는

기본적인 액션 구현과 전투 시스템 구현했던 방식에 대해서 작성하겠다.