요즘 핸드폰으로 간단하게 할 수 있는 나무 블록 퍼즐 게임을 자주 했는데, 갑작스럽게
Slay the Spire 의 로그라이크 느낌에 접목시켜서 게임을 만들어보고 싶다는 생각이 들었다.
며칠정도 고민해보다가 퍼즐 + 덱 빌딩 + 로그라이크 장르의 게임을 제작해보기로 했다.
먼저 나무 블록 퍼즐 게임에 대해 간단히 설명해보자면
8*8 사이즈의 타일 그리드가 있고, 랜덤한 형태의 블럭을 3개정도 제공한다.
블록을 타일위에 놓아 가로나 세로로 한 줄을 만들어서 없애고 점수를 얻는 방식이다.
제공된 3개의 블럭을 모두 놓지 못하고 놓을 공간이 없어지면 게임오버이다.
위는 예시 이미지, 위에 무너지는 블록이 줄이 완성된 경우다.
저렇게 제거되면서 점수를 얻고 아래에 제공된 블록을 놓지 못하는 경우가 생길 때 까지 게임을 진행한다.
Slay the Spire 는 카드로 된 덱을 구성하고 다양한 능력의 카드를 사용하여 적과 전투, 최종 보스까지 물리치며
사망하거나 클리어 시 경험치를 얻고 새로운 카드를 해금하여 덱을 강화하고 전투를 계속하는 방식이다.
거기에 다양한 능력을 가진 유물, 사용하여 일시적으로 능력을 주는 아이템,
각기 다른 전투 방식의 캐릭터 등을 통해 다양한 전투가 가능하다.
일단 좀 갑작스럽지만 게임의 스토리상 컨셉은 요리(?)로 고안했다.
몬스터를 요리(전투)하고 잡은 재료로 요리해서 능력을 얻는 뭐 그런...던전밥?
암튼, 기능적으로는 블록 퍼즐을 통해 적과 전투를 할 수 있어야 하고, 덱 빌딩을 위한 요소가 필요했다.
결과적으로 여러 형태의 블록 퍼즐내에 특수블록이 포함되어 있고, 블록 퍼즐을 맞추고 특수블록을 활성화하여
특수블록의 능력을 통해 적을 공격하는 방식의 전투를 채택하게 되었다.
전투를 반복하여 다양한 특수블록을 해금하고 강화해서 적과 싸워가는 방식이다.
위의 전투를 구현하기 위해 가장 먼저 블록 퍼즐 게임을 구현했다.
나무 블록 퍼즐을 기반으로 진행 방식만 조금 변경했다.
기존 퍼즐처럼 8*8 타일 그리드에 랜덤 형태의 블록을 놓는 방식은 동일하다.
대신 원활한 전투를 위해 블록을 하나만 제공하고, 블록을 놓을 수 없는 경우가 없도록 했다.
즉, 언제든 놓을 수 있는 블록만 하나씩 제공하기 때문에 블록을 못놓는 경우는 없다.
이 블록 퍼즐 구현을 위해 아래 기능들을 순차적으로 구현했다.
- 8*8 타일 그리드 자동 생성
- 드래그/드롭 가능한 블록
- 블록 여러 형태로 구성, 제공할 블록 종류 ScriptableObject 로 저장
- 블록 랜덤 제공(놓을 수는 있어야하니 완전 랜덤은 아니고 조건에 따라 랜덤)
- 블록 제공 위치, 놓아지는 위치 조정
- 블록 놓는 위치 하이라이트, 완성 줄 미리보기 하이라이트, 줄 완성 이펙트
이렇게 블럭을 하나씩 제공하고 원하는 위치에 놓을수 있게 되었고, 타일 8개를 한줄로 채우면 해당 줄이 사라진다.
이후 전투에 필요한 다른 요소들을 더 추가한다.
- 특수블록(ScriptableObject 로 다양한 능력의 블록을 저장, 로드)
- 플레이어, 적 스탯(체력, 공격력 등..)
- 적 스탯에 '행동속도'를 넣어서 블록을 놓을 때 마다 줄어들고 0이 될 때 플레이어를 공격하게 한다.
- 블록 제공 시 특수블록 포함
- 특수블록 능력 구현
특수블록은 스탯에 따라 적에게 데미지를 주거나 플레이어를 회복, 적에게 디버프, 플레이어 스탯 변경 등의 효과를 준다.
일단 테스트를 위해 일부 특수블록 능력만 구현했다.
전투 플레이 예시다.
블럭을 한 줄로 맞추면 그 줄에 있는 특수블록이 발동되어 플레이어 스탯을 높이고, 적에게 데미지를 준다.
예시에서는 방어력을 높여주는 '도마깔기'와 열기 스탯에 따라 적에게 피해를 주는 '굽기' 능력을 보여준다.
특수블록은 개수가 좀 되다보니 엑셀에서 이름, 설명 등을 따로 작성해두고
csv 파일로 읽어서 ScriptablObject 로 저장하게 했다.
특수블록 능력 발동 시 보여질 이펙트가 필요해서 AI나 이것저것 찾아봤는데,
애니메이션이나 이펙트를 원하는대로 뽑기가 여간 힘든게 아니어서 결국 DoTween 써서 게임 내에서 직접 작동하게 만들었다..
개발하면서 블록 퍼즐 기능 만들때 드래그/드롭으로 블럭이 타일 위치에 놓아지게 하는 기능이랑
블록 드래그 중에 여러 하이라이트 띄우는 과정에서는 보이는 위치가 자꾸 틀어져서 시간이 좀 걸렸다.
그래도 나름 만족스럽게 완성.
그리고 역시나 싶게도 게임디자인 쪽에서 시간이 엄청 걸렸다..특히 특수블록 능력 생각하면서..
기본적인 디자인들도 그렇고 플레이 방식, 구조, 밸런스나 레벨 디자인 같은건 해볼 일이 없다 보니 아무래도 쉽진 않은것 같다.
그리고 리소스도 문제..지만 그래도 얘는 AI들이 열일해줘서 그나마 낫다🥲
일단 어느정도 전투가 진행되도록 구현은 한 것 같다.
하지만 더 개발해야 할 요소들이 아직 많이 남았다.
전투 관련해서는 특수블록 능력 모두 구현하기, 다른 적들 디자인 및 구현하기, 플레이어 고유 능력, 유물 구현 등등..
그리고 전투 뿐만 아니라 Slay the Spire 와 같은 맵, 스테이지 선택 기능과
이벤트 스테이지, 상점, 엘리트 전투, 보스 전투등도 필요하다.
그 외에도 게임시작 전 덱 수정, 플레이어 고유 능력 선택 등 고안하고 구현할 기능이 아직 너무 많다..
이어서 계속 열심히 개발해봐야겠다.
스팀 출시하는 그날까지!(될까?)
'Unity > 게임개발' 카테고리의 다른 글
[Unity] 게임 개발 일지 | FPS 서바이벌 1 (0) | 2024.03.12 |
---|---|
[Unity] 게임 개발 일지 | 탑다운 슈팅 25 (0) | 2024.02.22 |
[Unity] 게임 개발 일지 | 탑다운 슈팅 24 (0) | 2023.12.19 |
[Unity] 게임 개발 일지 | 탑다운 슈팅 23 (0) | 2023.12.15 |
[Unity] 게임 개발 일지 | 탑다운 슈팅 22 (0) | 2023.12.14 |