AsciiArena
2020년 4월 경, 프로그래밍을 처음 접하고 얼마 지나지 않아 제작을 시작했습니다. 순수 파이썬만을 사용해 제작했으며, 지오파이트의 모체가 되는 게임입니다. 원래 이 게임의 기획안은 로그라이크가 아닌, 이차원 그리드 위에서 캐릭터들끼리 전투를 하는 단순한 게임이었지만, 제작하며 좀 더 욕심이 생겨 로그라이크로 개발 방향을 변경하게 되었습니다.
콘솔창 위에 문자를 띄우는 방식으로 그래픽을 출력하며, 제가 아직 객체지향의 개념을 익히기 전이라 상속과 같은 OOP의 개념을 사용하지 않고 제작되었습니다. (3천줄 정도의 .py 파일 하나 위에서 모든 게임 로직이 다 동작합니다.)
아주 원시적인 수준의 패스파인딩, 엔티티 별 속도 차별화, 인벤토리, 근접 및 원거리 공격, 로그 등 기초적인 기능을 구현했지만 구조적으로 불안정하고 코드 또한 깔끔하지 못합니다.
Geophyte ver1, 2, 3
2020년 4월 경 순수 파이썬으로 제작했습니다.
AsciiArena를 제작하던 도중 개발 방향을 로그라이크로 변경해 게임 제목을 지오파이트로 변경했고, AsciiArena의 코드를 그대로 가져와 간단한 타겟팅(피아식별 수준), 무기 장착 등 몇 가지 기능을 더 추가했습니다.
Geophyte ver4
2020년 7월 경 순수 파이썬으로 제작했습니다.
기존 코드들을 다 날리고 이번에는 OOP로 제작되었지만, 아직 OOP에 익숙하지 않아 구조적으로 썩 좋지는 못한 코드로 작성되었습니다.
여전히 콘솔창 위에 문자를 띄우는 형태이지만, 콘솔에 색상이 추가되었습니다.
절차적 맵 생성 (Procedural generation), 던전 계층화, A*를 활용한 패스파인딩, 카메라 시스템 등이 추가되었습니다.
약 일주일간 단기간 제작되었습니다.
Geophyte_tcod (Prealpha v1.0)
2020년 7월 경, 파이썬과 C기반 라이브러리(SDL의 Python wrapper)를 활용해 제작했으며, 현재까지 제작되고 있는 지오파이트의 기원입니다. Geophyte_ver4를 제작 도중 순수 파이썬으로만 로그라이크를 제작하는 것에 한계를 느끼고 프로젝트를 중단하고 처음부터 새로 제작했습니다.
Geophyte_pygame (Prealpha v2.0)
파이썬과 C기반 라이브러리, 프레임워크를 활용하여 제작했습니다.
SDL의 Python wrapper를 사용한다는 점은 동일하지만, 기존 tcod 라이브러리보다 더 많은 기능들이 포함된 pygame 라이브러리로 전환했습니다.
게임 로직과 관련된 부분은 이전 코드들을 유지하되, 그 외 플레이어 인풋이나 그래픽 처리와 관련해서는 대대적인 구조적 수정이 이루어졌습니다. 또한 기준 아스키 혹은 유니코드 형태로만 게임을 표시하던 것에서 나아가 이제 제대로 된 그래픽과 사운드가 추가되었습니다.
Geophyte (alpha v1, v2)
2021 7월 9일 경으로 프리알파2 대신 기존 프리알파1 버전을 이어 개발하는 것으로 결정했습니다.
이유는 여러 가지가 있는데, 그래픽과 사운드가 추가되면서 해야되는 노가다성 작업이 너무 많아졌다는 점이 가장 큰 이유입니다. 기존 프레임워크를 싹 뜯어고치면서까지 구조적인 것이나 기술적인 것들을 힘들게 제작하고 나서 보니까, 막상 노가다성 코딩을 생각보다 훨씬 많이 해야한다는 걸 깨달았습니다...
이게 어느 정도냐하면 그 시간에 지오파이트를 유니티같은 상용엔진으로 처음부터 개발해서 완성하는게 더 빠를 정도입니다...
개발하는 재미도 없고 얻는 것도 없을 것 같아 고민끝에 프리알파1로 롤백하게 되었습니다.
롤백하는 또 다른 이유는 아스키 그래픽을 사용하기 위해서이기도 합니다.
https://www.gridsagegames.com/blog/2015/02/ascii-vs-tiles/
아스키를 썼을 때 게임이 전반적으로 더 가시성이 뛰어나고 플레이어가 빠르게 상황을 판단하는데 많은 도움이 되기도 하고, 무엇보다 미적인 측면에서도 어중간한 타일셋으로 그리느니 순수 아스키로 제작하는 게 더 개성있고 상상력을 자극하는 좋은 방식이라고 생각했습니다.
또 개발하는 입장에서도 아스키 기반으로 개발하면 많은 도움이 됩니다. 새 UI를 추가하려면 아트 작업부터 시작해야 하는 그래픽 기반 게임에 비해 아스키는 바로 문자로 나타낼 수 있으니 더 자유롭고 빠르게 제작이 가능합니다. 아무래도 이 게임은 계속해서 확장되어나가는 레고 장난감같은 게임이다 보니 앞으로 꾸준히 많은 것들을 개발해나가는 데에는 아스키가 훨씬 적합하다고 생각했습니다.
아마 이번을 마지막으로 더이상의 큰 구조적인 변화는 없을 것 같습니다. 솔직히 시간만 충분하다면 개발 언어를 아예 C++로 바꾸고 기반부터 뜯어고치고 싶긴 하지만, 시간이 부족하기도 하고 파이썬의 생산성 때문에 앞으로도 계속 파이썬 + 아스키로 개발할 것 같습니다.
'게임 제작 > Geophyte (2020~2021)' 카테고리의 다른 글
Geophyte 알파 버전 릴리즈! (4) | 2021.10.08 |
---|---|
[Geophyte] 버그 원인을 파악하기까지의 사고의 흐름 (2) | 2021.09.08 |
[Geophyte] 파이썬? (1) | 2021.05.15 |
Geophyte(지오파이트) 소개 (3) | 2020.12.19 |