제가 예전부터 게임메이커가 생산성이 높고 프로토타이핑이 빠르다는 말을 많이 해왔는데, 그것 때문인지 이전에는 갤에서 언급도 없던 것에 비해 최근 겜메에 대한 관심이 많아진 것 같아서 어느정도로 빠르고 생산적인지 적어보려고 합니다.
https://drive.google.com/drive/folders/16SFo1QvBnIKzX3MB8_pv-OZeGHj2SD2b?usp=sharing
일단 제가 뱀서를 만드는 과정을 촬영한 영상 모음입니다. 중간중간 자거나 밥 먹는 시간은 촬영하지 않았기 때문에 여러 영상이 있습니다.
대충이라도 보시면 알겠지만 제가 타자도 느리고 오타도 많이 내는 편입니다. 중간에 멍때리는 시간도 많고요. 기를 쓰고 만든게 아니라 평범한 속도로 코딩했다는 뜻입니다.
게임을 만드는 과정을 보면서 설명하겠습니다.

프로젝트 생성

일단 게임에 필요한 텍스트 렌더링, 라이브 코딩, 그외 잡다한 라이브러리를 임포트 해줬습니다.

두번째로 한 일은 폰트를 만들기

좀 전에 생성한 폰트를 렌더링 라이브러리의 기본 폰트로 설정해줍니다.
거기에 유용한 매크로들도 몇개 선언해줍니다.

다음으로는 플레이어와 적의 베타아트를 그렸습니다.
일단 이 이미지로 초기 구현을 할겁니다.

게임에 돌려쓸 UI를 고르는 중입니다.
개발 과정 중에 어떤 에셋을 쓸지 고민하는 시간이 상당히 길었던 것 같습니다.

무난해보이는 네모를 임포트 해주고

다음으로는 오브젝트들의 계층 구조를 짜줍니다.
엔티티-크리처-플레이어 및 적 순으로 상속관계를 만들었습니다.

플레이어의 이동코드를 간단하게 짜줍니다

다음으로 적의 플레이어 추적 코드도 적어줍니다.

그리고 모든 크리처에 적용할 간단한 충돌 알고리즘도 짜줍니다.

마지막으로 게임 시작 버튼도 적당히 하나 만들어주면

이동, 충돌, 추적 기능이 제대로 작동하는 것을 확인할 수 있습니다!

다음으로는 플레이어의 스테이터스를 작성할겁니다.
체력, 최대체력, 경험치 등의 초기값을 적고, 경험치 최대량은 식(함수)로 작성할겁니다.

내가 넣을 식이 어떤 커브를 가지는지 desmos로 확인해줍니다.
여기까지 약 30분이 흘렀습니다.

나머지 플레이어 스테이터스 값들도 마저 적어줍니다.

이제 스킬(공격 아이템)을 만들겁니다.
적당한 이미지를 골라줍니다.

모든 스킬들의 작동을 도맡을 시스템 오브젝트를 하나 만들었습니다.
스킬을 처음 획득했을 때 init 함수를 실행하는 코드와, 스킬 내용과 쿨타임이 정의된 함수들에 한해 일정시간마다 스킬을 작동시켜주는 코드를 짰습니다.

스킬을 업그레이드하는 전역 함수를 하나 작성했습니다. 처음 얻은 스킬이면 해당 스킬에 정의된 init 함수를 실행하고, 이미 있는 스킬이면 업그레이드 함수를 실행시키는 내용입니다.

레벨업시 스킬들이 랜덤으로 등장해야하므로, 정해진 기준과 가중치에 따라 랜덤으로 스킬을 뽑아주는 함수도 만들어줍니다.

플레이어의 체력바도 만들어주고,
플레이어가 기본으로 가지고있는 스킬이 잘 구현되었나 확인해봅니다.

체력이 잘 닳고 이펙트도 잘 나오는걸 확인했습니다.
다만 하얀색 피격 이펙트는 잘 안 어울리는 것 같으니, 여러 색의 이펙트를 줄 수 있도록 피격 쉐이더를 하나 짜줍니다. 그리고 플레이어와 적에게 에셋 이미지를 적용시킵니다.

피격 색깔이 잘 적용되는걸 확인할 수 있습니다.
여기까지 약 2시간이 더 흘렀습니다.

다음으로는 무한맵을 만들었습니다. 정해진 패턴이 계속 반복되도록 간단한 코드를 작성했습니다.

이후에는 화염방사기, 시간 정지, 체력 회복 등의 아이템을 구현하였습니다.
모두 잘 작동하는 것을 확인합니다.

레벨업 이펙트를 구현했습니다.
성능에 무리가 갈 수 있으므로 파티클은 오브젝트가 아닌 파티클 시스템으로 구현해줍니다.
또 뱀파이어 서바이버와 같이 경험치 바가 무지개색으로 빛나도록 했습니다. 이를 위해 역시 간단한 쉐이더 코드를 작성해줬습니다.

스킬의 업그레이드 텍스트 표시와 업그레이드를 구현했습니다. 텍스트가 잘 출력되는 것을 확인합니다.

플레이어에게 필요한 능력치가 가늠이 되니 이쯤에서 세이브/로드 함수를 만들어줍니다.
json을 통째로 저장하는 단순한 구조로 만들어 딱히 테스트 없이도 제대로 작동할 것을 예측할 수 있습니다.

더이상 등장할 스킬이 없을 경우 돈 획득, 체력 회복 선택지가 나오도록 만들어줬습니다.

적 생성 함수를 작성했습니다.


보물상자와 화살표를 구현했습니다. 사진에는 없지만, 보물상자가 화면 밖에 있을 때 보물상자를 잘 가리켜줍니다.
화살표가 수십개 나올 것이 아니므로 수학적으로 위치를 계산하지 않고 레이캐스팅으로 간단하게 구현해줍니다.

보물상자 UI입니다.

뱀파이어 서바이버의 이펙트를 그대로 구현해줍니다. 당연히 3개, 5개가 나오는 경우도 모두 구현했습니다.
여기까지 3시간 정도가 더 흘렀습니다.

다음으로는 스탯 구매 화면을 구현했습니다. 약 2시간이 걸렸습니다.

다양한 적들을 추가해줍니다.
각 적마다 사망 모션도 일일히 지정해줍니다.

보스 몬스터는 픽셀오버를 이용해 빨간 외곽선을 넣어줍니다.

적들을 만들었으니 이제 적의 등장 패턴을 만들어줍니다.

정의한 순서와 주기대로 적들이 잘 등장하는 것을 볼 수 있습니다.

스킬(아이템) UI를 좌측 상단에 구현해줬습니다. 1시간 30분이 더 흘렀습니다.

아직 만들지 않은 나머지 스킬들에 알맞은 아이콘을 찾아줍니다.

적절한 이미지들을 모두 찾았습니다.

패시브 아이템들을 구현해줍니다. 투사체 속도/개수 등이 제대로 작동하는 것을 확인합니다.

다음으로는 스킬 진화를 구현했습니다.
특정 패시브 스킬이 있을 때 무기를 만렙 찍고 보물상자를 먹으면 자동으로 진화하도록 했습니다.

성경 스킬의 진화 이미지입니다.

도끼 스킬의 진화도 구현해줍니다.

부메랑, 파이어완드, 마늘 등의 스킬을 모두 구현해줍니다.

성수 스킬입니다.
적절한 이미지를 못 찾아서 좀 징그럽습니다.

성경과 비둘기, 비둘기 진화까지 구현했습니다.
여기까지 또 약 1시간이 걸렸습니다.
이것으로 뱀파이어 서바이버의 프로토타입을 완성하였습니다.
위 설명에는 없었지만, 사망 화면 및 클리어 화면도 모두 구현되었습니다.
보시면 알겠지만 게임메이커는 개발 속도가 정말 빠릅니다.
제가 빠르게 만드는게 아닙니다.
게임메이커가 빠른겁니다!
당신도 지금 당장 겜메단이 되십시오
긴 글 읽어주셔서 감사합니다.