※ 목표 달성 실패(2021.01.24)
가족의 이사가 겹치면서 잼 기간의 절반이 통째로 날라갔다.
게임 제출이란 목표는 달성 못 했지만 Cocos2D-X개발 환경 설정과 이미지와 레이블, 장면 전환을 비롯한 간단한 API 사용법을 익힐 수 있었다.
다음에는 진짜 꼭 제출하고 말리라...
Mini Jam은 2주에 한번씩 격주로 열리는 게임잼이다.
ZaranW와 KingW 형제가 개최하며 커뮤니티가 제법 크고 활성화 되어 있다.
잼 테마
Adventure
잼 규칙
- 반드시 제한 시간 안에서만 개발해야 합니다. 우리가 확인도 할꺼에요. 하지만, 게임이 등록된 이후로 업데이트 하는 것은 허용합니다.
- 어떤 종류의 괴롭힘도 있어선 안 됩니다.
- 게임은 깨끗해야합니다. 후방주의는 물론 타인을 비방하거나 잔인하거나 폭력적인 것도 안 됩니다.
- 미리 만들어둔 어셋들을 사용해도 됩니다. 이 게임 잼을 위한 것이 아니라 이전 프로젝트를 위해 만들었던 것들도 포함입니다.
- 제시되는 제한 조건을 지켜주세요.
- 규칙을 꼭 읽으세요. 규칙을 읽지 않은 사실이 규칙을 지키지 않은 변명이 되지는 않습니다.
제한 조건
Death must be a core mechanic
죽음이 게임의 주요 작동 원리여야 합니다.
단순히 "응, 내 게임에서는 캐릭터가 죽어."가 아니라 죽음 자체가 게임 설계에 중요한 역할을 해야합니다.
Q : 영구적인 죽음도 제한 조건을 만족시키나요?
A : 아뇨.
Q : 죽은 다음에 재소환되는건요?
A : 안됩니다. 그건 이미 너무 많은 게임에서 사용하고 있습니다.
Q : 무언가를 죽이기 위한 플레이어의 능력도 되나요?
A : 아뇨.
Q : 무언가가 실제로 죽어야만 하나요? 죽음이란 컨셉 자체를 사용하는 건 되나요?
A : 어느 것이라도 괜찮습니다.
Q : 게임에 죽음을 포함시키지 못하면 어떻게 되나요?
A : 제한 사용도 투표 결과에 따라 결정됩니다.
개인 목표
추가로 개인적인 목표 3가지를 설정했다.
보다 현실적인 목표인 제출과 완성에 집중하기 위해 제한을 정했다.
- 시간 내에 게임 제출하기
- 완성도 있는 스테이지 한 개 완성하기
- 최대한 많은 사람들에게 평가받기
개발 일지
[ DAY 1 ] 20210122(금)
저녁을 먹고 어떤 게임을 만들고 어떤 게임 엔진으로 개발할 지 간단하게 정리했다.
▶ 살아있지만 죽은 것
우선 모험이라는 테마와 죽음 메카니즘 을 어떻게 조합하는지가 관건이었다.
뭐가 재밌을까를 생각하다가는 게임 잼 내내 기획만 하다 끝날 가능성이 있어서 갑자기 떠오른 하나의 의문에 집중했다.
영원히 자기 자신속의 환상속에서 살아가야 한다면 죽은 것과 다름 없지 않을까?
악마가 점점 몸을 빼앗아 간다는 것은 내 몸의 제어권을 점점 잃는 것과 같을 것이다.
나는 평소와 같이 생활한다고 생각하지만 실제로는 악마가 만든 현실과 똑같은 환상 속이었다면 어떤 느낌일까?
그리고 그걸 깨달은 시점이 24시간 중 단 2시간만 내가 제어할 수 있는 상황이라면?
▶ 다른그림찾기 + 횡스크롤 + 포인트&클릭
악마에게 빼앗긴 몸을 되찾아오는 방법이 게임에서 가장 중요한 부분이라 생각했다.
큰 고민 없이 환상 속의 세상과 현실 속의 세상의 차이점을 찾아낼 수 있으면 된다고 생각했고 다른 그림 찾기에 횡스크롤을 추가해서 공간감을 추가해보기로 했다.
단순히 두 그림 사이에서 다른 점을 찾는 매직아이를 활용한 게임에서 단기 기억 능력과 연상 능력이 중요한 게임이 될 것이라 예상했다.
다른 그림을 찾되 약간의 상호작용을 추가해서 찾고 물건을 파괴할 방법을 퍼즐 요소로 추가하기로 했다.
▶ 개발 환경
[게임 엔진]
Cocos2D-X 4.0
특별한 이유는 없다.
그저 다음 주에 Cocos2D-X 수업이 있어서 미리 개발 환경 설정도 익히고 API에 익숙해질 겸 선택했다.
복잡한 물리 법칙을 사용하는 것도 아니고 단순히 마우스 클릭과 드래그, 키보드 입력 정도만 사용하기 때문에 게임 개발에 충분한 기능들을 제공하고 있다.
[그래픽 툴]
Aseprite
단시간에 결과물을 만들기엔 픽셀 아트가 최선의 선택이라 생각했다.
그러기엔 시간이 너무 부족했다..ㅠㅠ
주말 이틀 중 하루를 이사에 사용해야 했음으로 사실상 하루만에 마무리를 지어야 했다.
게임은 텍스트 기반으로 진행된다.
[ DAY 2 ] 20210122(토)
Cocos2D-X 설치하기
Cocos2D-X는 가장 최근 버전 4.0(2019.12.04)이후로 사실상 유산(Legacy) 프로젝트가 되었다.
Cocos 프로젝트의 유지보수를 주도하는 추콩(chukong) 스튜디오가 Cocos Studio를 중심으로 Cocos를 개발하기로 결정했기 때문이다.
Cocos Studio는 기존의 Cocos2D-X와 같이 오픈 소스인데다 유니티와 언리얼과 같이 접근성이 매우 놓아졌다.
자바스크립트를 스크립트 언어로 채택하면서 컴파일 없이 게임을 개발할 수 있을 뿐 아니라 내부적으로는 C++로 작성되어 있어서 성능 역시 기존의 Cocos2D-X와 비교해도 손색이 없다.
지금도 C++을 사용해서 게임 제작 실습하기엔 Cocos2D-X로 충분하지만 외국 포럼에서는 C++을 공부하려면 차라리 SFML을 선택하기를 권장하는 분위기가 커지고 있다.
윈도우 환경에서 Cocos2D-X 개발환경을 설정하기 위해서는 2가지의 개발 도구을 설치해야 한다.
1. 파이썬 2.X(2.7.18)
2020년을 기점으로 공식 지원이 종료된 파이썬 2 버전을 여전히 사용한다.
그리고 추콩 스튜디오 역시 Cocos2D-X의 업데이트를 2020년 이후로 업데이트 하지 않고 있다.
(Github에서도 더 이상 코드를 업데이트 하지 않는다.)
2. CMake
Makefile을 개선한 코드 빌드 도구다.
비주얼 스튜디오는 코드 빌드에 필요한 대부분의 속성을 GUI 기반에서 설정할 수 있지만 다른 IDE 중에서는 지원하지 않는 경우도 많다.
이럴 때 다른 플랫폼에서도 코드를 빌드할 수 있도록 의존성을 설정해주는 것이 바로 코드 빌드 도구다.
다루는 자세한 방법은 차후에 따로 공부하게 되겠지만 일단 이런게 있다는 것만 확인하고 넘어갔다.
전반적인 설치 과정은 아래의 유튜브를 보면서 진행했다.
www.youtube.com/watch?v=EPncmb5ujJo
게임 설계
일단 Cocos2D-X를 공부하면서 제작해야하기 때문에 큰 규모의 게임은 만들 수가 없다.
거기다 아직 객체지향적으로 설계하는 발상이 바로바로 되지 않기 때문에 설계보다는 구현에 집중하기로 한다.
장면(Scene)의 구조는 아래와 같이 간단하게 설정했다.
[메인] - [튜토리얼] - [게임 스테이지] - [엔딩]
[메인]
단순하게 게임 타이틀과 시작 버튼, 종료 버튼만 존재한다.
시작 버튼을 누르면 튜토리얼로 넘어간다.
[튜토리얼]
튜토리얼이라 했지만 실제로는 아주 작은 하나의 스테이지다.
기본적인 조작법과 규칙을 익힐 수 있다.
[게임 스테이지]
시간 내에 5가지의 달라진 물건을 찾으면 된다.
[엔딩]
메인으로 돌아갈 수 있다.
아주 간단한 이후 이야기가 텍스트로 전달된다.
Cocos2D-X 프로젝트 생성
Cocos2D-X로 새로운 프로젝트를 만들기 위해서는 프로젝트가 위치할 경로에서 아래의 명령어를 입력한다.
cocos new TheMirror -l cpp -p com.codegrimie.themirror
▼ 프로젝트에 필요한 파일들을 자동으로 만들어준다.
이대로 바로 게임을 만들 수 있으면 좋겠지만 그렇지는 않았다.
프로젝트를 생성했을 뿐 비주얼 스튜디오에서 사용할 개발 환경은 자동으로 만들어져 있지 않다.
▼ TheMirror/proj.win32 폴더에는 Main.cpp 파일만 덩그러니 있다.
이때 위에서 설치한 CMake를 사용해서 비주얼 스튜디오를 위한 개발 환경을 생성할 수 있다.
proj.win32경로에서 아래의 명령어를 입력하면 자동으로 비주얼 스튜디오 개발 환경을 생성해준다.
cmake .. -G "Visual Studio 16 2019" -AWin32
▼ Visual Studio와 -AWin32를 잊지 말자.
명령어를 입력하면 Windows SDK가 비주얼 스튜디오에 맞는 솔루션을 알아서 생성해준다.
▼ 익숙한 비주얼 스튜디오 프로젝트 솔루션이 생성된다.
솔루션으로 비주얼 스튜디오를 연 다음에 솔루션을 컴파일 하면 ALL_BUILD 에러가 발생하는 경우가 있다.
CMakePredefinedTarget에 있는 ALL_BUILD가 문제인데 나는 윈도우만 빌드할 때는 지워도 된다.
혹은 GWL_WNDPROC 에러가 발생하는 경우도 있다.
x86이 아니라 x64일 때 발생하는 에러로 Cocos2D-X는 x64 빌드를 공식적으로 지원하지 않는다.
이때는 CMake에서 -AWin32를 빼먹었을 가능성이 높다.
해결법은 그냥 새로 프로젝트를 생성하는게 빠르다.
▼ 귀여운 로고가 뜬다면 개발 환경 설정이 완료된 것이다.
지금부터는 대략적으로만 기록한다.
코드를 일일이 남기면 한없이 기록이 길어질테니 마지막에 깃허브 저장소 주소로 대체한다.
게임 해상도 설정
기본적으로 설정되어있는 해상도는 { 480, 230 }으로 되어있다.
이걸 { 1280, 720 }으로 변형했다.
필요로 하는 장면(Scene)들 만들기
먼저 설계에 따라서 장면(Scene)들을 만들어서 키보드 입력 만으로 전환되도록 만들었다.
장면들의 구성은 아래와 같다.
[IntroScene]
[TurorialScene]
[GameStageBeforeScene]
[GameStageAfterScene]
[EndingScene]
좀 더 Cocos2D-X의 기능을 잘 이해하고 있었다면 Before와 After로 나누지 않아도 됐을지도 모른다.
그러나 완성을 목표로 하기 때문에 내가 지금 할 수 있는 최선의 방법을 선택했다.
[ DAY 3 ] 20210122(일)
가족의 이사를 도왔다.
원래 예정은 되어있었으나 예정보다 훨씬 시간이 많이 들어서 하루를 그냥 날려버림으로써 목표를 달성하지 못했다.
게임을 제출하지 못한 건 정말 슬프지만 Cocos2D-X 개발 환경을 설정하는 방법과 간단한 장면 전환과 이미지 사용을 익힐 수 있었던 것에 의의를 두고 있다.
주말이라 방심했던 것도 있지만 짧은 시간 안에 게임을 제작한다는 것이 얼마나 어려운 일인지도 절실히 체감했다.
댓글