■ 시작: 탭 한 번이 전부인 게임

떠도는 도깨비불 링이 달무리에 겹치는 찰나에 탭. 조작은 그게 전부다. 정확할수록 혼불(점수)을 많이 얻고, 연달아 맞히면 신명(콤보)이 오른다. 한 밤은 60초.

프로토타입 단계에서 이미 손맛은 검증됐다. 그래서 이번 개발의 규칙을 하나 세웠다 — 검증된 자산은 리팩토링 명목으로도 갈아엎지 않는다. 가야금풍 펜타토닉 플럭 사운드(오디오 파일 없이 Web Audio 합성), 먹 실루엣 산등성이, 판정어의 톤("얼쑤! / 좋다! / 아쉽 / 놓침…")을 '절대 보존 목록'으로 못 박고, 그 위에만 쌓기로 했다.

■ 쌓기: 마일스톤 게이트

작업은 완료 조건을 전부 통과해야 다음으로 넘어가는 게이트 방식으로 진행했다.

흩어진 밸런스 숫자를 CONFIG 객체로 모으고 디버그 오버레이를 만들었다(M0). 얼쑤 순간 75ms 히트스톱, 신명이 오르면 화면 가장자리에 번지는 청록 비네트, 얼쑤가 쌓일수록 달무리가 차오르는 5단계 연출을 얹었다(M1). 라운드 패턴 4종 — 거꾸로 자라는 링, 숨쉬는 달무리, 0.25초씩 사라지는 도깨비 장난 — 과 시간 공방(얼쑤 +1.5초, 놓침 -3초), 신명 10에서 터지는 피버를 넣었다(M2). 마지막으로 mulberry32 시드로 전 세계가 같은 시퀀스를 받는 '오늘의 밤' 모드, 그리고 결과를 부적(符籍) 카드로 뽑아 Wordle처럼 공유하는 기능을 붙였다(M3).

■ 삽질 1: 카톡으로 이미지가 안 간다

부적 카드를 이미지로 공유하는 기능에서 제대로 삽질했다. 폰에서 자랑하기를 눌러도 이미지가 붙지 않았다. 원인은 iOS Safari의 제약 — navigator.share()에 파일을 실으려면 탭 제스처 안에서 동기적으로 호출돼야 한다. 탭 → 이미지 렌더링을 기다림 → 공유, 이 순서로 짰더니 iOS가 조용히 파일을 떨궜다. 결과 화면이 뜨는 순간 이미지를 미리 만들어두고, 탭하면 기다림 없이 바로 공유 시트를 열도록 뒤집으니 해결됐다.

■ 삽질 2: 크레이지게임즈 QA에서 화면이 검다

글로벌 도전을 위해 CrazyGames SDK를 붙였다. 미드게임 광고, 리워드 부활, 사이트 음소거 연동까지. 그런데 QA 환경에서 게임 화면이 새까맣게 나왔다. 점수와 타이머는 멀쩡히 도는데 캔버스만 빈 화면.

범인은 iframe이었다. 게임이 로드되는 시점에 iframe 크기가 0이라 캔버스가 0픽셀로 잡혔고, 이후 iframe이 제 크기가 돼도 resize 이벤트가 안으로 전달되지 않았다. 매 프레임 실제 크기를 비교해 어긋나면 재설정하는 가드 한 줄로 잡았다.

■ 그리고, 리젝

"The overall quality of the game does not yet meet the expectations of our platform."

솔직히 맞는 말이었다. 복기해보니 원인은 세 겹이었다. 첫째, 재미를 전부 뒤에 숨겨놨다. 패턴 변화는 5·9·13라운드에, 피버는 신명 10에 잠겨 있는데 심사자는 처음 4라운드 — 가장 밋밋한 구간 — 만 보고 떠난다. 둘째, 원버튼 타이밍 게임은 그 플랫폼에 이미 수백 개 있는 포화 장르다. 셋째, 정체성을 지키겠다고 영어판에서도 Honbul, Shinmyeong, Eolssu를 로마자로 밀었는데, 한국적 개성이 비주얼이 아니라 텍스트로만 전달되는 상태에서 이건 개성이 아니라 불친절로 읽혔을 것이다.

한국 유저에게 "얼쑤!"는 설명이 필요 없는 흥이지만, 처음 보는 외국인 심사자에게 "Eolssu!"는 뜻 모를 단어다. 플랫폼이 바뀌면 개성과 불친절의 경계선도 움직인다는 걸 리젝 메일로 배웠다.

■ 우회로: 심의는 MS 스토어에서

이 게임의 원래 목적지는 한국 미니앱 플랫폼이다. 그런데 한국에서 게임을 유통하려면 등급분류가 필요하다. 게임위 직접 심의 대신 자체등급분류사업자 경로를 골랐다 — 그중 최선은 의외로 마이크로소프트 스토어였다. 개인 계정 $19 1회, PWA 그대로 제출, IARC 설문 몇 분이면 등급이 나온다. 애플은 연 $99에 단순 웹 게임 리젝 위험이 크고, 구글은 신규 개인 계정에 테스터 20명×14일을 요구한다. 서비스 워커 하나 추가해서 PWA 요건을 채우고 제출 준비를 마쳤다.

■ 남은 것

앱인토스 SDK 실연동(어댑터는 mock으로 준비 완료), 그리고 백로그에 잠들어 있는 민화 도깨비 캐릭터 — 얼쑤 때마다 화면 아래서 덩실덩실 춤추는. 리젝 분석을 하고 보니 이 캐릭터가 정확히 "비주얼로 전달되는 한국적 개성"의 답이었다. 다음 업데이트 1순위다.

■ 배운 것

하나. 재미는 뒤에 쌓아두지 말고 앞에 배치할 것. 심사자도 유저도 처음 60초로 판단한다.
둘. 정체성 용어의 번역은 게임의 문제가 아니라 플랫폼의 문제다. 같은 단어가 어디서는 흥이고 어디서는 벽이다.
셋. 광고는 "있으면 트는 것"으로 설계할 것. SDK가 없는 환경에서도 게임이 100% 돌아가게 만들어두니, 플랫폼을 갈아탈 때 코드가 아니라 zip 파일만 바꾸면 됐다.


여기까지 읽어주셔서 감사합니다. 게임은 여기서 바로 해볼 수 있습니다 → 도깨비불 홀리기 
https://www.midnightai.net/play/dokkaebi-fire/

오늘의 밤은 전 세계가 같은 시퀀스입니다. 여러분의 부적을 자랑해주세요 — 만신 달성하신 분, 계신가요?