재미있는 게임 만들기


Game Builder Garage Games

요새 이놈의 코딩겜에 맛들렸다.

정신차려보니 하루종일 요놈의 코딩겜만 붙잡고 있다. 물론 재밌긴 한데… 이거 뭔가 더 생산적인 일을 해야 하지 않나 싶기도 하다.

몰라… 도로주행 또 떨어져서 뭐든 할 의욕이 안 생긴것도 있다만, 거의 새벽 4시까지 이걸 만들고고 있었다.

체스터 보스전 게임(링크)

YsF Chester2

이번에 만든건 제목 그대로 이스 페르가나의 맹세에 나오는 체스터 2차전을 재현한 게임.

지난번에 HUD 만드는 법을 익히고 마커와 스포이드 기능을 쓰는 법을 다른 사람들 샘플 보면서 역엔지니어링 하면서 전보다 보기 좋은 구성으로 만들었다.

체스터전 타이틀

사실 체스터전은 이전에도 한번 만든 적이 있지만, 그땐 기술적으로 많이 미흡한 부분이 있었다.

이번엔 기술적으로 많이 발전해서 더 많은걸 넣으니… 노든이 부족하네.

노든 제한 걸림

노든 512개 제한은 널널한듯 하면서도 빡세단걸 처음으로 실감했다.

그리고 사물간 연결 기능도 한계를 넘으면 아무리 자손 개체에서 손자 개체 증손자 개체 하는 식으로 세대를 늘려도 안먹는다는걸 알 정도로 많이 썼고…

여튼 원본 게임의 요소들을 웬만하면 많이 구현하고 싶었지만, 한계상 2페이즈 추가패턴이나 부스트 모드 등은 뺴먹을 수 밖에 없었다.

스킬

이번걸 만들면서 핵심적으로 만드려 했던 기능은 스킬 시스템.

원본 게임에선 진행도에 따라 해금되는 3가지 스킬을 각각 차지해서 쓸 수 있었다.

옛날에 내가 게임패드로 하던 설정을 참고해서, L, R로 스킬을 선택하고 ZR로 사용하는 방식을 만들어서 이동중이나 공격, 점프 중에도 스킬이 안 끊기고 차지되는 사양을 만드는게 목표였다.

그렇게 머리 싸매고 마우스질 해댄 결과 구현한게 이것.

(스킬 선택) 선택

(스킬 사용) 사용

기본적으로 선택 알고리즘은 1차원 마커와 루프되는 카운터를 이용했다. 원본의 스킬 변경 시스템처럼 1>2>3>1 혹은 3>2>1>3 방향으로 변경되는 시스템.

3개 경우를 입력에 따라 바꾸게 하는건 그리 어렵지 않았지만, 문제는 차지 사용 알고리즘.

차지 알고리즘은 버튼을 누른채 일정시간이 지나면 차지가 완료되고, 버튼을 눌렀다 뗀 순간 스킬이 시전되도록 해야 했다.

그래서 사용한게 0에서 바뀌는 순간 노든. ZR을 계속 입력으로 받고 NOT을 걸어두면 입력이 끊어지는 순간 NOT게이트의 출력은 0에서 1이 될거고, 그 순간에 딱 스킬이 나가는거다.

근데 이게 타이틀과 시작 알고리즘이랑 사용하자니, 살짝 꼬여서 시작플래그가 서는 순간에 한번 무조건 스킬이 시전되는 버그가 있었다.

이것도 꽤나 고민하긴 했는데… 결국 해결한 방법은 출력 뒤에 초기 숫자가 0인 카운터를 놔서 1번은 무조건 출력이 안 들어가게끔 하는 거였다. 다행히 이걸로 해걸.

평타

다음으로 신경쓴건 플레이어의 평타 콤보 시스템.

보통 액션게임 하면 콤보를 빼놓을수 없다. 그래서 만들었지.

콤보

이 역시 마커 노든을 이용해 경우 전환을 만들고, 콤보가 넘어갔을때 일정 시간 입력이 없거나 콤보 루프를 다 돌면 리셋되게 만들어 구현했다.

생각보다 타이머 숫자 조정에 꽤 걸렸다. 여튼 잘 구현되어서 기분은 좋다.

체스터 패턴

역시 제목에도 나오는 메인인 체스터를 빼놓을 수 없었다.

기억나는 대로 원본 게임의 패턴을 가져다 조잡하게 재현했다.

하지만, 정해진 패턴만 돌아가면서 쏘면 게임이 재미없지.

여기선 루프 카운터와 랜덤 입력을 이용해 일정 주기로 무작위하게 패턴을 시전하게 했다.

패턴

이번에 만든 패턴을 총 4개.

우선 검으로 베는 근접 콤보, 그리고 백스텝하며 검기 날리기, 돔형 범위공격, 마지막으로 시그니쳐 기술인 4연장풍 후 돌진.

돌진 차지 동작과 돌진엔 무적까지 넣어서 원작의 느낌을 기억나는 대로 살렸다.

아쉬운 점

여튼 꽤 괜찮게 만든것 같으면서도 여러모로 아쉬움이 남는다.

일단 노든 용량과 한계 때문에 마나 시스템이나 부스트 시스템, 체스터의 2페이즈조차 구현을 못했다.

시스템들 하나 집어넣자니 용량이 막고, 2페이즈를 만들려고 체스터 본체에 다닥다닥 붙이려니 자손 노든 한계가 막더라.

다음으로 아쉬운건 이 게임이 센서 등으로 반응하는 오브젝트를 카테고리 단위로밖에 지정을 못한다는 점이다.

ID나 키워드 등을 사물에 부여해서 그걸 기준으로 센서같은걸 돌릴수 있었다면 더 편했을텐데 말이다.

끝으로 만들 기능들이 많다보니 캐릭터에 불가피하게 덕지덕지 뭘 달았는데, 이놈의 게임은 질량 개념을 마음대로 할 수 없어서 그렇게 하면 겁나 무거워진다는 거다.

겁나 무거워지면 점프 입력 같은걸로 원하는 높이만큼 띄울수도 없고, 땅에 떨어질때 가속도 받고 통통 튀겨서 또 문제다.

이놈의 물리 시스템도 좀 손댈수 있게 해줬음 좋겠다.

끝으로

이번에도 게임같지 않은 게임 하느라 시간을 정말 알차게 썼다. 자격증 같은거 시험문제나 한번 더 푸는게 인생에 도움이 될텐데 말이다.

그래도 어딘가는 이런걸 좋게 봐주는 데도 있지 않을까 같은 속 편한 생각이나 하며 오늘도 별 의미없이 보낸 하루였다.

© 2024 SeokguKim   •  Base Theme  Moonwalk