안녕하세요!
처음으로 설명할 시스템은 스포닝이랑 간단한 움직임 등을 어떻게 구현했는지 남겨보려고 합니다.
맨 처음 게임을 보고나서 작업을 진행했던 부분은 몬스터의 움직임, 스폰 시스템을 적용하는게 우선이라고 생각하고 작업을 진행했습니다.
** 이 포스팅에서의 설명 시스템 : 몬스터 이동, 스폰 시스템, 그리드 시스템
몬스터 이동
몬스터의 이동은 크게 어려운 부분이 없었습니다.
이 게임의 특성상 따로 길찾기를 할 필요가 없고, 네모 모양으로 이동하는게 전부라서, 포지션 설정해서 이동하도록 했습니다.
가운데 부분에 유닛 생성할 공간을 남겨두고 위 아래, 동일한 크기로 각 좌표 지점을 잡고 이동시켜 주었습니다.


대략 몬스터의 이동에 관한 프로토 타입은 이렇게 나왔습니다.
스포너 시스템
스포너 시스템은 XML 로 추출한 뒤 파일로 가지고 있다가 웨이브가 끝나고 다음 웨이브로 넘어갈 때, 로딩하도록 작업했습니다.
이 게임에서 웨이브는 총 50 웨이브가 있고, 어드레서블에 등록된 스포너 데이터만 저렇게 확인할 수 있습니다.

스포너 데이터를 열어보면 아래와 같이 작업해두었습니다.

데이터의 역할을 설명드리면,
1) IndexID : 현재 데이터의 순서 입니다. 이 파일 내부적으로 몇번째 스포너인지에 대한 변수입니다.
2) mv3Pos : 스포너가 생성될 포지션입니다. 몬스터 이동 첫번째 이미지를 보시면 동그랗게 파랗고, 노란게 있는데, 이 포지션을 의미합니다.
3) SpawnIdx : 스폰할 몬스터의 Id 번호 입니다.
4) Count : 생성할 몬스터의 수 입니다.
5) InitSpawnDelay : 초기 생성 대기 시간 입니다.
6) SpawnDelay : 몬스터 생성 간, 대기 시간입니다.
ex)몬스터 A 스폰 -> 1초 대기 -> 몬스터 A' 스폰 이런 식입니다.
7) MySpawner : 이건 내 스포너인지, 파트너의 스포너인지 체크하기 위함입니다.
그리드 시스템
이 게임에서 그리드 시스템은 움직임도 없고, 필요가 없었을지도 모르나, 더 가독성 있게 작업하고 싶은 니즈가 있어서 포지션을 잡고 가로세로에 대한 넓이를 생성해 그리드를 만들었습니다.
그리드는 이 게임에서, 몬스터 3마리가 한 곳에 있을 장소. 즉, 한 장소에 대한 그룹 오브젝트로 정의했습니다.
이 위치에는 최대 3개의 개체(Entity)가 생성될 수 있습니다.

위 초록색 그리드가 파트너 몬스터 생성 영역, 아래 마젠타 그리드가 내 몬스터 생성 영역 입니다.
화면에서는 스포너 시스템에 대한 기즈모도 보이네요.
저는 여기서 내 그리드, 파트너 그리드를 판단하기 위해, MapManager를 둘로 나누어 관리했고, 데이터 로딩 또한, 두개의 파일로 나눠서 로딩해서 관리했습니다.

이 제가 만든 레벨 디자인 툴 윈도우는 저의 것만 출력하도록 해놓았기 때문에, 네비 데이터가 제것 밖에 없습니다.
맨 아래 두번째를 Select 했더니, 저쪽 위치가 노랗게 출력되는 것을 볼 수 있습니다.
Grid Data를 보여드리자니, 저 안에 있는 데이터 항목이 너무길어서 의미가 없어보여 사진으로 붙여두었습니다.
일단, 개체 생성 영역에 대한 그룹 오브젝트의 위치, 후보 생성 위치 등을 위해 그리드 시스템을 만들었고,
그리드 시스템은 조합, 삭제, 소환, 뽑기 등등 스폰 영역을 정하는 모든 구간에서 사용되었습니다.
이 포스팅에서는 3개의 시스템을 어디에 사용하려고 만들었는지, 어떤 데이터가 있는지 등에 관해서 설명해보았습니다.
감사합니다.