「오늘 누가 쏘냐?」를 만들고 나서 혼자 하는 게임을 하나 만들고 싶어졌다. 파티게임은 여럿이 모여야 켜는 앱이다. 이번에는 지하철에서 한 손으로 30초씩 하다가 끄는 게임을 목표로 했다.

이름은 「네온 다이브」(Neon Dive)다. 화면 아래 바 하나를 좌우로 끌어 위에서 떨어지는 블록을 피한다. 블록을 아슬아슬하게 스치면 보너스가 붙고, 별을 모아 바 스킨을 산다. 지금은 브라우저에서 바로 해 볼 수 있다. → neondive.addsoft.co.kr

네온 다이브 — 타이틀, 플레이, 2페이즈, 결과 화면

한 판의 흐름

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

시작 전 안내 「화면을 누른 채 좌우로 움직여 시작」

떨어지는 것은 네 가지다.

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

1페이즈 플레이. 산호색 블록은 피하고 노란 별은 모은다

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

별 하나에 +50

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 브라우저. 세로 캔버스를 창 높이에 맞춰 가운데 둔다

PC에서는 마우스로 끌거나 ←/→ 키로 움직인다. 폰 브라우저에서는 화면 전체가 게임이 된다. 첫 로딩은 7MB 정도다.

웹 버전에는 두 가지가 빠져 있다. 브라우저에서는 진동을 쓰지 않고, 광고가 없으니 결과 화면의 「광고 보고 이어하기」 버튼도 숨긴다. 광고는 IRewardedAd 인터페이스만 만들어 두고, 개발 빌드에서는 1.2초 뒤 성공을 돌려주는 가짜 광고로 이어하기 흐름을 확인했다.

연재 순서

편 주제
1 반사신경 게임 「네온 다이브」 개발기 (이 글)
2 「아슬!」 한 번에 손맛이 생긴다 — 니어미스, 콤보 배수, 판정 박스 (10월 13일 공개)
3 20초마다 색이 바뀌고 빨라진다 — 난이도 곡선과 페이즈 팔레트 (10월 13일 공개)
4 매일 다시 켜게 만드는 장치 — 날짜 시드 데일리 미션과 스킨 상점 (10월 14일 공개)
5 세로 게임을 브라우저에 — WebGL 템플릿과 회색 로딩 화면 (10월 14일 공개)

다음 글 2편 (10월 13일 공개)에서는 이 게임의 손맛을 만드는 니어미스와 콤보를 다룬다.