Public Notebook/작품 전시관

2015 - Adventureland (중3)

Syphon 2023. 1. 7. 15:34

코딩모험을 작성하면서, 블로그를 시작하기 전 과거의 몇몇 작품들을 간단히 올려두면 좋을 것 같다는 생각을 하게 되었다.

Adventureland는 내가 처음으로 작성한 (당시 기준) 대형 프로젝트이다.
Python 기초 문법 강의만 들었던 내가 우연히 발견한 텍스트 어드벤처 게임인 Dunnet에 신선한 충격을 받고, 당시 내가 알고 있던 Python 지식을 총동원하여 수개월에 걸쳐 만들었다. 정확한 작업 기간은 기억나지 않지만, 여름부터 작업하여 12월 초, 외국인학교를 떠나기 일주일 전에 친구들에게 배포하였었다.

프로젝트를 시작할 때만 해도 이정도 규모의 코딩은 처음인지라 게임의 루프 구조 등을 어떻게 설계해야 할지부터 난감했었던 기억이 난다. 또 (사실 게임이라서 어느정도 허용해도 되긴 하지만) 글로벌 변수가 엄청 많이 쓰였다. 작업 기간 중에도 프로그래밍 지식이 늘어 객체지향 등을 알게 되었고, 이러한 발전된 시각을 바탕으로 다시 돌아보니, 개발의 끝무렵에는 게임 전체의 코드 설계가 상당히 구리다는 것을 인지했었다. 하지만 이미 작업해놓은 양이 너무 많은지라 일단 Adventureland를 완성시키고, 더 발전된 형태의 구조로 차기작을 만들기로 했다(그리고 차기작은 나의 영원히 진행중이지만 진전은 없는 개인 프로젝트들의 긴 목록 상단에 자리하게 되었다 - 게임 엔진 구현체와 컨셉만 존재한다).

아, 코드 길이는 총 3000여 줄이고, 전부 다 하나의 파일에 들어있으며, 대부분의 로직은 줄줄이 끝없이 이어지는 if-else의 향연이다. 진짜 if-else와 함수까지만 아는 상태에서 야심차게 만든 게임이라고 할 수 있다... 과거의 나의 집념에 respect를 표한다. 진짜 당시에 한줄 한줄 짜며 "와 이게 되네.."를 연발했었다. Dictionary 자료구조가 동작하는 것을 보고 신기해하던 시절의 코린이이다.

진짜 눈물겨운 코드..

모든 장소 각각에 대한 모든 명령어에 대한 처리를 다 if else로 처리했다 ㅋㅋㅋㅋㅋㅋㅋ
여러 장소에서 통용되는 같은 "go east" 명령어도 장소마다 ㅋㅋ 각각 ㅋㅋㅋ 다 짰다 ㅋㅋㅋㅋ ㅠㅠ
객체지향따위는 모르기에 모든 장소와 아이템은 그냥 문자열이다. 하드코딩 문자열.

Adventureland는 텍스트 기반의 모험 게임이자 퍼즐 게임이다.
플레이어는 텍스트를 통해 환경을 접하고, 텍스트를 통해 환경과 상호작용한다. 플레이 해보면 무슨 뜻인지 알거다.
중3때 만든 것 치고는 완성도와 난이도가 상당하다고 생각한다(아님 말고 ㅎ).
당시 친구들도 꽤나 좋은 반응을 보였었다(하지만 어려워서 끝까지 클리어한 사람은 없었다고 한다).

Adventureland는 내가 프로그래밍을 처음 접하고, 그 매력에 푹 빠져 지내던 시기의 첫 작품인지라 오랜 세월이 지난 지금에도 정말 특별하게 느껴지는 친구이다. 이 시기를 전후로 나는 프로그래밍의 포텐셜을 맛보고 진로를 컴퓨터공학으로 결정하게 된다. (웃기지만 코딩하면서 진짜 설레던 시기..)

귀찮기에 이미지는 코딩모험에 첨부했던 이미지로 대체한다:

시작 화면, Adventureland 1

고등학교를 진학하며, 언어 문제로 인해.. 친구들에게 이 게임을 쉽게 배포하지 못함에 아쉬움이 컸었다.
하지만 지금은 이정도 영어는 무난하게 소화할 친구들이 주변에 넘쳐날 것 같다(I trust you guys).

완성한 지 7년만에, Adventureland를 다시금, 이번에는 인터넷상의 모두에게 배포해본다.

Adventureland 1 - Blog Dist.zip
10.32MB

압축을 풀면 3개의 파일이 있다.
1. distribution 폴더 내에는 실행 가능한 exe 파일이 있다.
기본 버전인 normal 버전과 출력이 빠르게 나오는 fast 버전이 있다. 출력 외에 기타 동작은 동일하다.
2. Documentation 폴더 내에는 내가 2021년에 뒤늦게 제작한 게임 documentation이 있다.
직접 그린 지도와, walkthrough를 포함한 설명글이 있다. 지도와 walkthrough는 스포성이 매우 크므로 게임을 플레이할 생각이 있다면 플레이 후에 보기를 권장한다. 게임 스토리가 궁금하다면 이 문서를 읽으면 된다.
3. Adventureland 1.1.py는 게임의 소스 코드이다.
당연히 스포성이 크다. 내 어린 시절 노가다의 현장이 궁금하다면 읽어봐도 좋다. 또, 몇몇 이스터에그와 디버깅용 관리자 모드를 발견할 수 있다. 만약 윈도우 환경이 아닌 곳에서 게임을 실행해보고자 한다면 이 파일을 실행하자.

과연 이 글을 보고 몇명이나 게임을 실행해볼지 의문이지만.. 모든 종류의 피드백은 환영이다.

'Public Notebook > 작품 전시관' 카테고리의 다른 글

2018 - A Fidgety Problem (고3)  (0) 2023.01.07
2016 - Silent Storm (고1)  (2) 2023.01.07