Antocalypse (24.09.02~24.12.23)
GitHub
기존 졸업 작품 팀 내에서 도전학기제에 대한 얘기가 흘러나왔다.
"도전학기제란 팀 혹은 개인으로 프로젝트를 설계부터 개발까지 진행하여 장학금 및 학점 취득을 할 수 있는 제도이다."
졸업작품팀 내에서 3명이 팀을 이루어 진출하게 되었다.
우리 도전학기제 팀리더는 굉장한 곤충 덕후이다.
게임에도 곤충을 넣으려고 하였고 완성된 기획이 Antocalypse라는 생존 전략게임이다.
해당 게임은 멸망한 세계에서의 개미들의 생존을 담고 있다.
실시간 전략게임이라는 장르를 베이스로 그리드가 들어갔다.
이 정도면 우리 팀은 그리드를 사랑한다
육각형 맵에서 자원 개발, 건설을 하고 지상으로 올라가 탐험까지 진행한다.
해당 시스템을 만드는 것이 내 역할이다.
따라서 나는 UI와 개미 AI와 행동을 제외한 모든 것을 만들어야한다.
듣는 수업이 없어 독박을 쓴 사람의 슬픔
결과적으로 위의 말처럼 개발이 되었지만 처음 역할은 맵과 자원 담당이었다.
다른 사람들의 학업과 졸업 작품 일정이 겹치면서 서서히 나한테 맡겨졌다.
hexa tile이라고 불리는 육각형 맵을 제작해야한다.
정확히는 있는 Unity 내의 타일맵을 활용해서 시스템을 만들 것이다.
기본적으로 맵은 타일이 동적으로 변경되어야하고 주변 타일의 정보를 받아올 수 있어야한다.
이를 위해서는 타일의 좌표와 주변 타일의 좌표를 알아야할 필요가 있다.

육각형 맵은 주변에 6개의 타일을 가지게 된다.
Unity 내의 타일맵은 2차원 배열로의 변환을 지원한다.
육각형 맵의 2차원 좌표는 맵의 방향과 기준점에 따라 달라진다.
주의해야할 점으로 타일맵에서 변환해주는 좌표는 월드 기준이기 때문에 음수값이 존재하며 0,0부터 시작하지 않을 수 있다는 것을 고려해야한다.

맵을 개발할 시점에서는 아직 게임에 관련한 세부 사항들이 정해지지 않은 상태였다.
따라서 OCP에 더욱 신경을 써서 개발을 할 필요가 있었다.
이를 위해서 클래스 상속을 이용해 구현하고 Simple Factory Pattern을 이용하여 동적으로 타일 정보를 생성할 수 있게 만들었다.

자원 채취, 건물 건설은 일정 시간이 지나야 행동이 완료된다.
이를 위해서 Unity Coroutine을 활용했다.
행동을 위한 조건이 알맞지 않은 경우에는 바로 callback 함수를 실행하여 실패했음을 알리고 아닌 경우에는 일정 시간동안 WaitForSeconds를 이용하여 기다린다.
이후 행동을 마무리하고 callback 함수를 실행하여 성공했음을 알린다.
기존에는 캡슐화에 대하여 크게 생각하지 않고 개발했었다.
이전 프로젝트에서 다른 사람들이 변수값을 건들기 시작하면서 캡슐화의 중요점을 알게 되었다.
따라서 이번 프로젝트에서는 캡슐화를 지켜서 개발하였다.
함수의 동작 또한, 외부에서 알기 힘들도록 개발하였다.
객체 지향에 대해 다시 공부를 하면서 이전 코드들이 SOLID 원칙을 지키고 있는가에 대해 생각해보았다.
당연히, 전혀 안 지키고 있었다.
아직 개발 초기에 느꼈던 만큼, 이번 프로젝트부터는 SOLID 원칙을 최대한 지켜보기로 하였다.
이를 위해 기능 별로 모듈화를 진행하였고, 클래스 상속을 통해 수정에 용이하게 만들었다.