「오늘 누가 쏘냐?」를 만들고 나서 혼자 하는 게임을 하나 만들고 싶어졌다. 파티게임은 여럿이 모여야 켜는 앱이다. 이번에는 지하철에서 한 손으로 30초씩 하다가 끄는 게임을 목표로 했다.
이름은 「네온 다이브」(Neon Dive)다. 화면 아래 바 하나를 좌우로 끌어 위에서 떨어지는 블록을 피한다. 블록을 아슬아슬하게 스치면 보너스가 붙고, 별을 모아 바 스킨을 산다. 지금은 브라우저에서 바로 해 볼 수 있다. → neondive.addsoft.co.kr

한 판의 흐름
PLAY를 누르면 바로 판이 열리지 않고 안내 문구가 먼저 뜬다. 화면을 누른 채 좌우로 끄는 순간 시작된다. 시작 버튼을 따로 누르고 손가락을 다시 옮기는 사이에 첫 블록이 떨어지는 일을 없애고 싶었다.

떨어지는 것은 네 가지다.
| 낙하물 | 모양 | 효과 |
|---|---|---|
| 블록 | 산호색 둥근 사각형 | 닿으면 끝. 페이즈마다 색이 바뀐다 |
| 별 | 노란 별 | +50점 × 콤보 배수, 스킨을 사는 재화 |
| 쉴드 | 청록색 링 | 12초 동안 블록 한 번을 막아 준다 |
| 슬로우 | 보라색 링 | 5초 동안 낙하 속도 절반 |

점수는 세 군데서 나온다. 살아 있는 동안 초당 10점에 현재 속도를 곱한 만큼 계속 오르고, 별을 먹으면 50점, 블록을 바 옆 40px 안쪽으로 스치면 「아슬!」 25점이 붙는다. 별과 니어미스는 콤보를 하나씩 올리고, 콤보 하나에 배수가 0.1씩 커진다.

20초가 지날 때마다 페이즈가 오르고 배경과 블록 색이 바뀐다. 속도는 시간이 갈수록 빨라져서, 40초를 넘기면 3페이즈다.

골격은 파티게임에서 그대로 가져왔다
새 게임이지만 프로젝트 골격은 「오늘 누가 쏘냐?」와 같다. 거기서 한 번 검증한 규칙을 그대로 옮기니 처음부터 게임 규칙에만 집중할 수 있었다.
- 씬에는 카메라 하나만 있다.
Bootstrap이 실행 시점에 캔버스와 화면을 코드로 만든다. 프리팹도 없다. 방법은 「오늘 누가 쏘냐?」 2편에 정리해 두었다. - 게임 본편도 uGUI 위에서 돈다. 블록·별·바는 전부
Image이고 좌표는 캔버스 좌표(화면 중앙 기준 x ±540, y ±960)다. 물리 엔진은 쓰지 않고 충돌은 사각형 겹침으로 직접 판정한다. - 그림은 런타임에 텍스처로 만든다. 둥근 사각형(9-slice), 원, 방사형 글로, 별, 그라디언트 다섯 가지 스프라이트를
UIFactory가 코드로 그린다. 네온 느낌은 몸체 뒤에 반투명 글로 하나를 더 깐 것이다. - 효과음·아이콘·한글 폰트는 Python 스크립트로 만든다. 효과음 9종(별, 니어미스, 충돌, 쉴드, 페이즈 업 등)은 numpy로 파형을 합성했다. 방식은 「오늘 누가 쏘냐?」 3편과 같다.
- 파티클 시스템 대신
Image풀링. 터지는 파편, 떠오르는 「+50」 글자, 화면 흔들림을Fx클래스 하나가 맡는다. 파편은 최대 160개를 돌려 쓴다. - 외부 서버 없음. 기록·별·스킨·미션은
PlayerPrefs에 JSON 하나로 저장한다.
| 오늘 누가 쏘냐? | 네온 다이브 | |
|---|---|---|
| 장르 | 여럿이 하는 파티게임 15종 | 혼자 하는 반사신경 게임 1종 |
| 화면 | 세로, 메뉴 위주 | 세로, 매 프레임 움직이는 게임 화면 |
| 핵심 코드 | 게임마다 500~1,100줄 | GameScreen 650줄 |
| 통신 | 같은 Wi-Fi LAN | 없음 |
| 공개 | Play 스토어 비공개 테스트 | 브라우저 버전 |
C# 코드는 스크립트 17개, 2,100줄 정도다. 그중 3분의 1이 게임 화면 하나다.
브라우저 버전부터 공개했다
처음 목표는 Google Play였다. 그런데 반사신경 게임은 직접 해 보기 전에는 재미를 설명하기 어렵다. 스토어 등록을 기다리는 대신 WebGL로 빌드해 주소 하나로 바로 해 볼 수 있게 먼저 올렸다.

PC에서는 마우스로 끌거나 ←/→ 키로 움직인다. 폰 브라우저에서는 화면 전체가 게임이 된다. 첫 로딩은 7MB 정도다.
웹 버전에는 두 가지가 빠져 있다. 브라우저에서는 진동을 쓰지 않고, 광고가 없으니 결과 화면의 「광고 보고 이어하기」 버튼도 숨긴다. 광고는 IRewardedAd 인터페이스만 만들어 두고, 개발 빌드에서는 1.2초 뒤 성공을 돌려주는 가짜 광고로 이어하기 흐름을 확인했다.
연재 순서
| 편 | 주제 |
|---|---|
| 1 | 반사신경 게임 「네온 다이브」 개발기 (이 글) |
| 2 | 「아슬!」 한 번에 손맛이 생긴다 — 니어미스, 콤보 배수, 판정 박스 (10월 13일 공개) |
| 3 | 20초마다 색이 바뀌고 빨라진다 — 난이도 곡선과 페이즈 팔레트 (10월 13일 공개) |
| 4 | 매일 다시 켜게 만드는 장치 — 날짜 시드 데일리 미션과 스킨 상점 (10월 14일 공개) |
| 5 | 세로 게임을 브라우저에 — WebGL 템플릿과 회색 로딩 화면 (10월 14일 공개) |
다음 글 2편 (10월 13일 공개)에서는 이 게임의 손맛을 만드는 니어미스와 콤보를 다룬다.