좀비 러너 게임성 다듬기와 서비스 통합
지난 글에서 맵과 아트를 잡았고, 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) 자료 정리