포스트

좀비 러너 게임성 다듬기와 서비스 통합

좀비 러너 게임성 다듬기와 서비스 통합

지난 글에서 맵과 아트를 잡았고, 9/30~10/1 이틀은 게임성을 다듬고 팀원이 만든 서비스(계정·상점·결제)와 합치는 데 썼다. 10/1 24:00 코드 동결, 10/2 10:00 최종 제출이다.

역할은 그대로다.

누가한 일
나판단, 플레이 피드백, 퀄리티 업, 슈퍼바이징 — 폰으로 해 보고 “너무 길다”, “멍청해 보인다”, “가린다”를 짚고 머지를 결정
Claude (Claude Code)실행자 — 코드 수정, 봇 검증, 창·폰 캡처, APK 빌드·설치, 커밋·PR, 문서
팀원 C서비스 프론트엔드·백엔드 (계정, 상점, 토스 테스트 결제, 문의 채팅, 관리자)

9/30 — 걷는 맵에서 “살아남는 게임”으로

플레이 가능한 750m

아침에 시연용 좀비 100마리를 넣고, 맵을 1,000m → 500m로 압축했다가 오후에 750m · 좀비 150마리로 확정했다. 길이는 Claude가 만든 스테이지 빌더의 상수 하나라 바꾸는 데 부담이 없었다.

조작을 붙이자 바로 “장애물에 너무 막힌다”는 문제가 나왔다. 그래서 이동 보정을 넣었다.

  • 낮은 장애물은 높이에 맞춰 자동 점프(1.1m까지)
  • 정면으로 막히면 가까운 틈으로 미끄러짐(6.5m/s)
  • 0.7초 이상 갇히면 빈자리로 부드럽게 탈출
  • 충돌체를 상자 대신 볼록 알약 모양으로 바꿔 모서리 걸림 제거

잡힘 판정 — “앞에서만, 공정하게”

좀비 판정 규칙은 내가 정하고 Claude가 숫자로 옮겼다.

  • 좀비는 앞에서만 잡는다. 지나친 좀비는 뒤돌아 쫓지 않는다.
  • 내 몸을 절반 이상 가려야 잡히고, 덜 가리면 어깨빵만 한다.
  • 3m 앞부터는 방향이 고정돼서 마지막에 비키면 산다. 절반은 0.45초 전에 팔을 뻗어 예고한다.
  • 잡히면 칼로 1회 탈출, 두 번째는 물리고 사망.
  • 탱커는 4발에서 2발로 줄였다.

다크소울식 난이도와 반전

“재미가 없다”는 내 피드백에 반전을 넣었다.

  • 광전사: 사람 달리기의 2배(초속 10m)로 돌진, 5곳. 지금 자리가 아니라 내가 도착할 자리로 요격한다.
  • 길목 매복: 내 줄 8.5m 앞 풀숲에서 벌떡, 6곳
  • 끝 반전: 남은 32m에서 왼쪽 → 0.7초 뒤 오른쪽 광전사
  • 땅속 폭발: 마지막에 바로 앞 땅에서 튀어나와, 쏘거나 칼만이 답

사망 화면은 다크소울 YOU DIED(가로 검은 띠, 핏빛 세리프)로 만들었다.

손·무기·소리

팀원이 만든 재장전·칼 근접전·붙잡기 → 물어뜯기 동작을 게임에 연결했다. 권총 텍스처를 다듬었고, 보급 권총 이름에서 실제 총 상표명은 뺐다. 총소리는 너무 크고 울려서 잔향을 0.9초 → 0.32초 → 0.6초로 조정했다. 저녁에는 테스트 결제 팩 카드 3장(생존 키트 · 한 번 더 · 전설의 생존자)을 만들었다.


10/1 — 아이템, 이벤트, 폰, 그리고 통합

팩 아이템을 게임에 연결

팩으로 받는 아이템이 실제로 효과를 내게 했다. 출발 준비 창에서 가져갈 아이템을 켜고, 달리는 중에는 숫자 키(폰은 아이콘)로 쓴다. 내 피드백으로 바뀐 것들이다.

내 피드백바뀐 것
“광란의 30초는 너무 길어”30초 → 10초 → 15초, 광란 중 예비탄 자리에 ∞
보급 신호탄 키를 Shift로해 보고 다시 숫자 2로 (1·2·3 통일)
출발 준비 창이 너무 작고 심플하다큰 카드 · 스위치 · 키캡 안내 · 고딕체 · 둥근 모서리
“핏자국이 너무 귀여운데”동그란 원 → 가시처럼 찢긴 덩어리 · 세모 파편 · 흘러내림, 톤은 한 가지 진한 핏빛으로
아이템 하나 더아드레날린 추가 — 8초 동안 앞 1.4배 · 좌우 1.8배, 잡힐 때 30% 회피, 화면 가장자리 왜곡

아드레날린의 화면 왜곡은 셰이더로 만들었다. 3D 화면을 읽어 가운데에서 바깥으로 흐르게 하고, HUD보다 아래 층에 그려서 총알 숫자는 또렷하게 남겼다. 처음엔 맥에서 프레임이 많이 떨어져서 표본 수를 줄였다.

다리 이벤트 — “잘 보이게”가 제일 어려웠다

“다리 건널 때 더 재밌는 요소”를 요청했다. 다리 위 왼쪽 폐차 때문에 오른쪽 틈으로만 지나가는데, 그 오른쪽 난간 밑에서 좀비가 기어오른다. 매달림(경고) → 0.75초 기어오름 → 덮침 순서이고, 다리가 덜덜 흔들린다.

여기서 피드백이 가장 많이 오갔다.

  • 기어오르는 좀비 뒤에 다른 좀비가 서 있어 겹쳐 보임 → 다리 위 다른 좀비는 왼쪽 절반에서 자기 줄로만 오게
  • 다른 좀비들이 폐차를 뚫고 지나감 → 차 뒤에서 막혀 버둥거리게
  • 차 안 좀비가 창문을 치는 연출 → 낮은 폐차라 지붕 위로 머리가 튀어나와 삭제
  • “왼쪽이 너무 비어 보인다” → 11마리를 넣었다가 “너무 많아” → 4마리
  • 내가 그림으로 표시한 자리의 좀비가 “너무 멍청한데, 유저한테 다가와줘” → 서 있다가 12m 앞에서 옆으로 뛰어들고, “너무 길을 막는다” → 내 줄에서 1.1m 비껴 어깨만 스치게
  • 경찰차 뒤에 같은 좀비 셋이 “패턴져 보여” → 다리 건너편 좀비를 흩어 놓고 줄 지키기는 다리 위에서만

폰에서만 드러난 문제

  • HUD 아이콘이 비었다: 아이콘 그림이 게임 폴더 밖에 있어서 APK에 아예 안 들어갔다 → 게임 폴더로 옮김
  • YOU DIED가 고딕체: PC는 맥에 깔린 세리프 글꼴을 빌려 썼는데 폰엔 없었다 → Cinzel · Anton(OFL) 글꼴을 게임에 포함
  • FIRE·RELOAD 버튼 제거: 화면 오른쪽을 누르고 있으면 사격, 탄창이 비면 자동 재장전
  • 좌우가 잘 안 먹힘: 처음엔 내 보호필름 탓인가 했는데, 오른쪽(사격) 손가락은 이동을 무시하도록 만든 게 원인 → 먼저 누른 손가락이 이동, 감도 18 → 24m
  • 총소리: Pixabay에서 내가 고른 글록 19 녹음으로 교체, 재장전은 14초 녹음에서 탄창·슬라이드 구간만 잘라 1.6배 빠르게. 두 파일 모두 Pixabay 라이선스를 확인했고, 원본은 git에 안 올리고 가공본만 올렸다.

가격 정리

생존 키트에 아드레날린을 넣으면서 1,100원 → 1,500원으로 올렸다가, 서버의 테스트 결제 금액과 헷갈리지 않게 1,100원으로 되돌렸다(구성은 유지). 팩 3종의 ID · 가격 · 구성 · 카드 그림은 백엔드용 문서와 GitHub 이슈로 정리해서 C에게 넘겼다.

같은 날 난이도(HARD · NORMAL · EASY)와 스테이지 미션 3단계 · 코인 · 권총 강화(7 → 9 → 12 → 15발)도 들어갔다.


서비스 쪽에서 본 어려움 (간접적으로 본 것)

나는 풀스택을 맡지 않았다. 아래는 GitHub의 PR #7 · #19 설명과 C가 남긴 개발 진행 현황 문서, 그리고 통합본을 직접 돌려 보면서 확인한 내용이다.

  • 한 사람이 서비스 전체를 맡았다. 계정, 상점, 결제 서버, 문의 채팅, 관리자, 안드로이드 결제 플러그인, 윈도우 실행본까지 C 한 명의 범위였다. 시간이 가장 빠듯했던 쪽이다.
  • 게임 쪽 데이터가 바뀔 때마다 서버가 따라와야 했다. 이틀 사이 팩 구성 · 가격 · 아이템 이름(광란 30 → 15초, 부활 개수, 아드레날린 추가)이 계속 바뀌었다. C는 기존 주문을 깨지 않으려고 상품 계약 버전을 1 → 2로 나눴다. 버전 2는 로컬 구현 · 검증까지 했고, Cloud 배포는 별도 승인 후 하기로 남겨 뒀다.
  • 통합 충돌: 팀 main과 C 브랜치가 같은 게임 파일(stage_preview.gd, showcase.gd)을 함께 고쳐서, C가 부활 · RETRY · 완주 흐름 충돌을 직접 풀어야 했다.
  • APK 빌드가 매끄럽지 않았다.
    • 결제 플러그인이 들어가면서 안드로이드 빌드가 Gradle 방식으로 바뀌었다. 처음 빌드할 때 빌드 도구와 토스 SDK 등 라이브러리를 내려받아야 했다.
    • 서버 주소 · 공개 키를 담은 설정 파일은 공개 저장소라 git에서 일부러 뺐다. 그래서 GitHub 파일만으로 만든 APK는 서버에 연결되지 않았다. 나도 처음엔 “키는 서버에 있고 자동으로 불러와야 하지 않나?”라고 물었다. 비밀 키는 서버에만 있지만, 서버 주소는 앱 안에 넣어서 빌드해야 한다는 걸 이때 정리했다.
    • 안드로이드 내보내기 설정에는 그 설정 파일을 넣는 줄이 없었다(윈도우 온라인용에는 있음).
    • 디버그 빌드에는 개발자 패널(무적 · 거리 이동 등)이 켜져서, 배포용은 릴리스 빌드 + 서명 키가 필요하다.
  • 결론적으로 배포용 APK는 C가 설정을 넣어 한 번에 빌드하기로 했다. 나는 다른 테스터와 똑같이 링크로 받아 설치해서 확인한다.

C 문서에 남은 항목: 윈도우 한글 입력(IME) 문제, 카드 · 계좌이체 각각의 실제 테스트 승인 확인, 계약 버전 2 Cloud 배포.


정리

  • 게임성: 750m · 좀비 150, 앞에서만 잡는 공정한 판정, 거리별 반전(광전사 · 매복 · 다리 · 끝 반전 · 땅속), 다크소울 YOU DIED
  • 아이템: 팩 아이템 9종을 실제 효과로 연결, 아드레날린 추가, 광란 15초, 출발 준비 창 디자인
  • 다리 이벤트: 시선은 왼쪽(폐차 · 좀비), 위협은 오른쪽 난간 밑 — 다른 좀비는 자기 줄 · 차에 막힘
  • 폰: 게임 폴더 밖 파일은 APK에 안 들어간다, 기기 글꼴에 기대지 말고 글꼴을 넣는다, 조작은 실제 손가락으로 확인한다
  • 소리 · 에셋: 라이선스 확인 → 원본은 git 제외 → 가공본만 커밋 → ASSETS_LICENSE.md 기록
  • 서비스: 데이터(팩 구성 · 가격)가 바뀌면 게임 · 카드 그림 · 서버 세 곳을 같이 맞춘다. 서버 주소는 빌드할 때 앱에 넣고, 비밀 키는 서버에만
  • 다음: C의 배포용 APK로 실제 테스터 배포, 다음 발표(10/2) 자료 정리
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.