[ChopChop] 1. 게임 개발 시작하기
개발할 게임 아이디어가 많았다. 이걸 현실화하고 싶었다.
더불어 스팀에 내가 만든 게임이 있다면 정말 기쁠 것 같았다.
수많은 아이디어 중에 재밌을 만한 게임을 하나 골라 만들기 시작했다.
...그렇게 몇 년 동안 개발만 해왔다.
이대로는 출시까지 상당한 시간이 걸릴 거라 생각했다. 또한 만들수록 내 역량의 한계가 보였다.
나는 더 단순한 게임을 만들어야 했다.
캐릭터? 너무 오래 걸려. 리깅이 없는 물건으로만 게임을 만든다.
조작키? 최소로 해. 하나면 충분하겠지
카메라? 움직이지 마. 한 장면에만 집중한다.
그렇게 생각을 해나가니 하나의 주제가 떠올랐다.
“장작 패기”
고정된 장소에서 무한히 장작을 패는 거다.
생각이 난 즉시 프로토타입을 만들었다.
언리얼 엔진 5.2, 블렌더 4.1을 사용했다.
[2024-02-17 - 2024-02-19]
내가 원하던 그림이 나왔다.
게임을 너무나 간소화시킨 나머지 가장 많은 상상력을 필요로 하는 문제는 뒤에 배경을 어떻게 꾸밀지였다.
나는 농장의 모습을 생각하면서 메가스캔에서 필요한 모델링을 찾아 배치했다.
도끼는 원하는 형태가 없어서 베이스메쉬에서 받아 사용했다.
The Base Mesh | 100% Free CC0 Assets
- 3D Models - TheBaseMesh - Every model adheres to real-world scale and comes with basic UVs, so you can get to making those all-important creative decisions faster.
www.thebasemesh.com
도끼 텍스쳐링을 했고 풀에 색깔을 넣었다.
UI 초안도 만들었다.
도끼를 많이 사용할수록 닳게 하고 싶었다.
멀쩡한 텍스쳐와 다 닳은 텍스쳐 사이에서 나무를 팬만큼 보간하도록 하였다.
또한 셰이프키를 넣어 도끼날이 약간 들어가게 했다.
장작은 양쪽으로 분리해서 안쪽 텍스쳐링을 진행했다.
전체적인 플레이 모습이 보이기 시작했다.
위에서 나무가 내려오고 이것을 쪼갠다.
쪼갠 나무는 뒤에 떨어지게 했다.
그렇게 해야 수북이 쌓인 모습을 감상할 수 있다.
그러다 문제가 생겼다.
쌓인 장작들이 모탕을 침범하는 것이다.
침범한 장작 때문에 위에서 떨어진 나무가 쓰러지는 일이 발생했다.
이래서는 무한히 팰 수 없다. 그때 생각을 바꿔봤다.
"그냥 이걸 엔딩으로 하면 되지 않나..?"
오 그럴싸하다. 나름 신선한 엔딩이라고 느껴졌다.
근데 이건 개발자 생각이고 사람에 따라서는 굉장히 허무하다고 느낄 수도 있겠다.
그래도 이걸 끝으로 하여 넣는 것이 없는 것보다 낫다고 생각해서 이대로 진행했다.
이때부터 이 게임은 “영원히 장작을 패는 게임”에서 “더 이상 팰 수 없을 때까지 장작을 패는 게임”으로 바뀌었다.
테스트 결과 엔딩까지 장작이 채워지려면 1만 개 가까이 패야 했고 4시간이 걸렸다.
너무 오래 걸리면 가혹적일 것 같아 장작 크기를 키워 플레이 시간을 조절했다.
[2024-02-29]
낮-밤 사이클을 추가했다.
하루가 1이라고 했을 때 다음의 타이밍을 0과 1 사이의 수로 두어
하루 길이를 변경하면 전부 이에 맞춰 변경되게 하였다.
- 낮의 시간
- 밤의 시간
- 불빛이 켜지는 시간
- 노을이 보이는 시간 (낮->밤, 밤->낮)
밤에는 보이는 게 적어져서 낮보다 시간이 빠르게 흐르도록 했다.
하루 길이에 따라 다른 동작의 타이밍이 자동으로 결정되는데, 이 계산식을 세우는데 오래 걸렸다. 어려웠지만 뿌듯했다.
하루를 몇 분으로 할지 몇 달에 걸쳐 고민했는데, 이때 수식을 만들어둔 덕분에 하루의 시간 변수만 수정하면 전체 게임플레이에 반영이 될 수 있었다.
플레이어가 지루하지 않게 날씨 계절변화를 넣어줬다.
계절 표현을 디테일하게 하느라 시간이 걸렸다.
날씨 종류에는 맑음, 비, 나뭇잎 날림, 폭풍, 눈이 있다.
아이콘도 추가해 줬다.
Simple Icon File Maker를 통해 만들었고, 2의 배수에 해당하는 해상도가 포함되어 있다.
(16, 32, 64, 128, 256)
이 아이콘은 게임 출시 후 바로가기 아이콘으로도 사용하게 된다.
아이콘에 필요한 이미지는 기존 모델링을 배치하고 렌더링 하여 만들었다.
셰이더를 손봐서 셀셰이딩 느낌을 줬고 Freestyle로 외곽선을 추가했다.
난 그림을 못 그리니까 컴퓨터가 그리게 한다.
[2024-03-01]
쌓여 있는 장작에 대한 최적화를 진행했다.
앞서 말한 것처럼 장작이 1만 개가량 쌓여야 한다.
그런데 위에서 생성된 장작이 쌓이면 시뮬레이션 중인 액터가 1만 개가 되는 것이라 상당한 부하가 된다.
그래서 인스턴스를 사용하기로 했다.
장작 액터의 움직임이 멈추면 인스턴스를 동일한 위치에 추가하고 장작 액터는 삭제하게 했다.
진행사항 저장/불러오기 기능을 만들었다.
SaveGame 클래스를 사용했다.
기본 세이브 저장위치는 다음과 같다.
- 에디터:Unreal Projects\[프로젝트이름]\Saved\SaveGames
- 빌드 Development: Windows\[프로젝트이름]\Saved\SaveGames
- 빌드 Shipping: [유저이름]\AppData\Local\[프로젝트이름]\Saved\SaveGames