스토브 인디 게시 페이지 : https://store.onstove.com/ko/games/2070
깃허브 주소 : https://github.com/yunu95/Stresh
유튜브 주소 : https://youtu.be/BMZWLyMs3lc?si=edAJFXUATMV_2R46
목차
1. 배경
2. C언어 기반 라이프사이클 개발
3. 클라이언트 구현
4. 소감
1. 배경
게임 인재원은 총 2년 8학기 커리큘럼으로 운영되었고, 첫 1년의 4학기는 학기말마다 기획반 학생, 아트반 학생, 프로그래밍반 학생들이 연합해 팀을 짜 2주~ 4주의 시간에 걸쳐 게임을 개발하는 미니게임 프로젝트를 진행했다. 이 글이 소개하는 프로젝트는 내가 첫 1학기때 개발한 프로젝트로 개발완료까지 1주일 반의 기간이 주어졌고, 학생들이 C++을 아직 안 배웠기 때문에 뒤쳐지거나 소외되는 사람들이 생기지 않도록 하기 위해 사용 가능한 언어가 C언어로 강제되었다.
팀 구성 | |
프로그래밍 팀장 | 나 |
프로그래밍 부팀장 | A |
프로그래밍 팀원 | B |
아트 팀장 | C |
아트 팀원 | D |
기획 팀장 | E |
기획 팀원 | F |
외국어 이름은 다 가명임
A는 비전공자 출신임에도 엄청난 의욕과 역량을 가진 친구로 팀의 부선장 역할을 맡길 수 있었다. 리소스를 관리하는 로직을 짜는 것, UI 버튼 기능을 구현하는 것, 컷씬을 연출하는 것 등 시간도 오래 걸리고 프로그래밍 역량도 필요한 과업을 믿고 맡길 수 있어 매우 든든했다. B는 아직 프로그래밍에 익숙지 않아 반복문, 조건문, 함수 모듈화와 같이 기초적인 프로그래밍 기법에 익숙해질 수 있도록 작업의 범위를 조절해 가며 일을 맡겼다.
2. C언어 기반 라이프사이클 개발
일반적인 게임 루프라면 여러가지 역할들을 하는 클래스들을 같은 인터페이스로 묶어 일괄적으로 업데이트 함수를 불렀겠지만, C언어는 상속이나 다형성 같은 개념이 언어에 반영되어 있지 않기 때문에 그런 추상화된 구조를 적용하는 게 힘들었다. 어떻게 구조체와 함수 포인터를 잘 사용하면 C++의 클래스처럼 코드를 짤 수 있었겠으나 애초에 C언어를 쓰는 취지가 프로그래밍 초심자를 배려해 코드를 알아보기 쉽게 짜란 것이니 속 편히 포기하기로 했다. 사용자 입력, 컷씬, UI 창, 사운드 시스템 등 다양한 모듈들의 업데이트 함수들은 모두 서로 다른 이름의 전역 함수로 구현하고 그것을 게임 루프에서 차례대로 호출했다.
3. 클라이언트 구현
그림을 그리는 함수들은 모두 Wingdi.h 헤더의 함수들을 응용하여 전역함수로 만들어 놓았다. 함수에 매개변수로 출력대상 이미지 파일의 경로를 문자열로 넣으면 그 문자열을 키값으로 캐싱된 이미지 리소스를 사용해 화면에 이미지를 그린다. 문자열 해싱의 구현은 부팀장 A에게 맡겼다.
Stage는 주인공의 상태, 주인공의 위치, 스테이지 타일의 배치와 스테이지 위 오브젝트들의 위치 등, 현재 스테이지를 진행하는데 필요한 모든 맥락을 저장했다. 인게임 로직이 크게 어려울 것이 없었기 때문에, 구현을 여러 코드에 산재시키지 않기 위해 모든 원죄를 짊어진 구조체를 만든 것이다.
각 스테이지마다 타일과 오브젝트의 배치도는 메모장으로 작성했다. 문자 4개로 하나의 타일에 대한 정보를 기록했다.
그 외 주인공의 애니메이션, 오브젝트들이 둥실거리는 움직임, 사운드 모듈 등 게임의 완성도를 끌어올릴 수 있는 디테일적인 부분들을 개선했다.
4. 소감
이 프로젝트 진행중에는 A의 존재감이 매우 컸다. 실력도 있고 힘도 있는데, 욕심도 많고 본인이 참가한 게임은 절대 남에게 얕보이면 안된다는 자존심까지 있어서 처음에는 꽤 부담스러운 면도 있었다. 유능한 이를 동료나 수하로 두면 시기하는 마음이 들기 마련이라더니, 불꽃같이 강렬한 A의 모습에 프로그래밍 팀장으로서의 내 위치가 위협받는 것 같아 두려운 마음도 들었지만 '항상 유능해야만 하는 나'라는 나의 자의식 문제를 제대로 직면할 수 있는 기회라는 생각도 들었다.
불교에는 자신의 문제를 남에게 덮어씌워 투사하지 말고, 스스로의 마음을 비추어 바라보라는 말이 있다. 과연 나의 문제를 A에게 그만 덮어씌우고 가만히 스스로의 마음을 관찰하며 바라보니 A가 나를 도모하려는 불온세력에서 든든한 조력자로 바뀌는 인식의 전환을 경험할 수 있었다.
'완결된 게임 프로젝트' 카테고리의 다른 글
워크래프트3 던전 주파형 유즈맵, 용병던전 (0) | 2025.01.01 |
---|---|
InWanderLand - 쿼터뷰 전략 액션 게임 (1) | 2024.08.14 |
가디언 슈터 - 2D 런앤건 게임 개발 (0) | 2023.11.05 |
종갓집 김치 - 클리커 게임 모작 프로젝트 (0) | 2023.10.05 |