작업기간 :
2020.02 ~ 2020.04 (최초 빌드)
2022.07 ~ 2022.08 (리팩토링)
작업인원 :
1명 (디자인, 기획, 개발)
프레임워크 :
unity (2020.3.19f1)
1. 개요
2015년부터 작업했던 시뮬레이션 게임의 연구자료들을 모아 진행했던 프로젝트. 다마고치 모티프로 달팽이를 육성할 수 있도록 작업했다. 기획단 or 프로토타입단에서 드랍되었던 다른 프로젝트와 달리 처음으로 끝까지 밀어붙여서 스스로의 힘으로 출시까지 달성해낸 작업이었기 때문에 많이 기억에 남는 프로젝트였다.
그리고 2022년 클라이언트 개발자로 일하면서 깨달았던 것들을 (아키텍쳐를 설계하는 방법이라던가!) 한번 적용해보고 싶어서 7~8월에 걸쳐 약 3주간 리팩토링을 진행했었다. 이를 통해 1800줄짜리 단일 cs파일을 각자의 역할에 맞춰 쪼개줄 수 있었고. 길다란 switch & case 문으로 관리되고 있었던 스테이터스 증감 공식 또한 조금 더 체계적으로 관리할 수 있게 되었다.
한가지 아쉬운 지점은, 아직 스탯 증감에 대한 구체적 수치가 코드 상에 남아있다는 점인데... 현재는 3개 밖에 없는 버튼이 가지고있는 구체적 수치를 테이블로 뺀다고 해서 얻을 수 있는 효용이 크지 않을 것이라 판단했기 때문에 데이터를 분리하지 않고 남겨두었다. ( 3개 이하의 적은 양이라면 테이블로 분리해서 두개의 파일로 나누는 것보다. 한 화면에서 즉시 확인할 수 있는 편이 유리할 것이라 판단했다. ) 하지만 이런 방식으로 데이터와 작동규칙을 분리하지 않는다는 것은 확실히 신경쓰이는 부분이므로.. 만약 리팩토링을 또 하게 된다면 그 부분부터 손보게 될 것 같다.
2. UI
UI를 설계할때는 이 게임 내에서 비슷한 항목의 컴포넌트는 가급적 한번에 볼 수 있도록 하고자 했는데. 다마고치의 기본적 요소인 밥주기, 놀아주기, 청소하기를 하단에 크게 배치하여 한눈에 확인할 수 있도록 했고. 달팽이의 스테이터스 또한 버튼 위에 바로 배치해서, 행동 버튼을 눌렀을 때 시선 내에서 자연스럽게 스테이터스의 증감 또한 확인할 수 있도록 했다.
3. 그래픽 컨셉
개발은 로그함수적으로 진행되는데, 그래픽은 얼마나 진행되었건 다음 작업에도 거의 일정한 품이 들어가기 때문에... 2개월 내에 그래픽까지 완전하게 끝내는 것 보다는 틈틈히 완성하면서 채워넣을 수 있는 방향이 필요했다. 이에 따라, 조금만 달라도 이질적인 티가 많이 나게 되는 정돈된 형태 대신, 핸드드로잉에 기반한 자유로운 형태를 메인 컨셉으로 진행했다.
4. 개발 상세
마구잡이로 개발했던 2020버전과는 다르게, 2022년에는 리팩토링을 하면서 클래스 간 구조를 의식적으로 체계화하려고 노력했다. 특히 2020버전에서 전역상태를 남발했던 것 때문에, 각 값들이 어느 스코프에서 영향을 받는지 불분명했었고 그 때문에 고통을 많이 받았던 터라. static이나 singleton과 같은 상태를 최소화하기 위해 노력했다. (Manager와 같은 부분들은 게임이 시작하는 순간 절차에 따라 스스로를 초기화하도록 설정하고, 자신을 참조하는 클래스에 미리 스스로의 포인터를 넘겨주어서, 필요한 순간에 그 포인터를 통해 호출할 수 있도록 했다. 이를 통해서 클래스가 제어되는 영역을 한정할 수 있었다. (= 값을 여기저기서 막 수정할 수 없게 되었다. = 어떤 값이 의도하지 않은 결과가 되었을 때 모든 장소를 살펴볼 필요가 없어졌다.)
5. 기타
해당 작업물은 깃허브에 업로드해두어 누구든 가져가서 사용할 수 있도록 해 두었다.. 처음 혼자서 개발을 시작했을 때 가장 어려웠던 부분은 "이게 맞을까?", "아무도 안쓰는 해괴한 방법으로 작업하고 있는거라면 어쩌지.." 와 같은 부분들이었다..
이 불안감은 42서울과 클라개발자로써 업무를 하면서 사라졌지만, 그때의 막막함과 답답함은 수 년이 지난 지금도 생생할 때가 있는데.. 그냥 혹시라도 그런 고통을 겪고 계신다면, 이렇게 만드는 사람도 있다고 한번 참고해 보셔도 좋을 것 같습니다. 화이팅!
'개인 작업 목록' 카테고리의 다른 글
C# - Dobu Calculator (망할 가챠 확률 계산기) (4) | 2022.12.23 |
---|---|
Sample Project - 연습을 위해 작성된, 캐쥬얼 핵 앤 슬래시 장르의모바일 게임 제안 (0) | 2022.12.05 |
Web - 작업저장용 웹(2020) (0) | 2022.10.01 |
Python - Simple Json Editor (0) | 2022.09.13 |
Python - Docker로 python3.8.1 챗봇 환경 구성 (0) | 2022.09.02 |