작은 게임에서 점수보다 먼저 보여야 하는 것
스네이크, 알림 선별판, 기억 게임, 벽돌깨기, 비행, 슈팅처럼 흩어진 짧은 조작 메모를 한 흐름으로 묶어 점수보다 먼저 보여야 할 화면 신호를 정리한 개발 기록입니다.
배포줄 빈칸 출구 찾기 바로 하기결과 숫자가 먼저 보이면 이상하게 숙제처럼 느껴진다
작은 게임을 만들 때 제일 쉽게 붙는 건 결과 숫자다. 몇 점인지, 시간이 얼마나 남았는지 같은 숫자는 만들기도 쉽고 화면도 채워준다. 그런데 막상 플레이해보면 숫자가 너무 앞에 있으면 손이 먼저 움직이지 않는다.
특히 웹에서 1분짜리 게임을 열었을 때는 더 그렇다. 사용자는 규칙을 외우러 온 게 아니라 일단 눌러보러 온다. 그런데 첫 화면에서 기록 조건과 실패 문구가 줄줄이 보이면 “아, 잘해야 하나?” 쪽으로 마음이 간다. 이건 작은 Play가 원하는 감각과 조금 다르다.
그래서 요즘 손보는 기준을 바꿨다. 점수와 기록은 남겨도 되지만, 첫 번째로 보여야 하는 건 지금 손이 어디로 가야 하는지다.
실패 직전의 한 박자를 보여줘야 했다
배포줄 빈칸 출구 찾기에서는 다음 칸 예고가 그 역할을 한다. 방향을 꺾은 것 같은데 실제 이동은 한 박자 늦게 들어갈 수 있다. 그 사이에 벽이나 꼬리로 들어가면 실패 이유가 조금 억울하게 느껴진다.
그래서 머리가 바로 들어갈 칸을 보이게 했다. 안전하면 길처럼 보이고, 위험하면 `벽`, `꼬리`, `피하기` 같은 짧은 신호가 먼저 뜬다. 긴 설명을 읽지 않아도 “아, 지금 이 방향은 위험하네”가 보이면 손이 바뀐다.
지금 볼 알림 선별판도 비슷했다. 볼 알림은 누르고, 꺼둘 알림은 흘려보내야 하는데 이전에는 둘 다 그냥 튀어나오는 물체처럼 보였다. 지금은 볼 알림에는 확인할 이유가, 꺼둘 알림에는 그냥 지나갈 이유가 더 빨리 보이게 했다. 남은 시간 링과 `보기`, `꺼둠` 표시가 없으면 이 게임은 결국 다 누르는 게임이 된다.
설명은 밖보다 안에 있어야 한다
게임 소개문에 규칙을 잘 써두는 것도 필요하지만, 실제 플레이 중에는 거의 안 읽힌다. 손은 캔버스 위에 있고, 눈도 보드 안을 보고 있다. 그러면 중요한 말도 보드 안에 있어야 한다.
요즘 넣는 문구는 대부분 짧다. `놓기`, `가까워짐`, `확인`, `꺼두기`, `피하기` 같은 말들이다. 예쁘게 설명하려고 하면 늦고, 개발자 입장에서 친절하게 다 풀어쓰면 길어진다. 작은 게임에서는 짧은 단어 하나가 긴 도움말보다 낫다.
복권 긁기에서 기록 숫자를 덜어낸 것도 같은 이유다. 복권은 성적표를 채우는 게임이 아니라 계속 한 장 더 긁는 흐름이 먼저다. 사과 합 10 게임도 기록 숫자보다 1분 안에 합이 보이는 순간을 잡는 쪽이 더 맞다. 숫자를 없애자는 게 아니라, 숫자가 게임의 첫인상을 가져가면 안 된다는 쪽에 가깝다.
흩어진 메모를 한 기준으로 묶었다
이 글은 원래 스네이크와 알림 선별판만 보며 쓴 짧은 생각에 가까웠다. 그런데 noindex로 돌린 개발 메모를 다시 보니 같은 질문이 여러 Play에 반복되어 있었다. 누를지 말지, 기다릴지 말지, 다시 볼지 그냥 갈지, 공이 어디로 떨어질지 같은 판단은 게임마다 다르게 생겼지만 모두 "점수보다 먼저 화면이 알려줘야 하는 것"이었다.
그래서 작은 메모를 각각 대표 글로 밀지 않고, 아래처럼 같은 판단 흐름 안에 넣어 보기로 했다. 이번에 남길 기준은 "기능을 붙였다"가 아니라, 손이 다음에 할 일을 화면이 한 박자 먼저 알려줬는가다.
| archive 메모 | 묶은 Play | 대표 글 안에서 흡수한 판단 |
|---|---|---|
| `mole-urgency-feedback-note` | 지금 볼 알림 선별판 | 남은 시간 링은 점수 압박이 아니라 지금 누를지 흘려보낼지 판단 시간을 보여주는 장치다 |
| `mole-priority-cue-note` | 지금 볼 알림 선별판 | `보기`와 `꺼둠` 표시는 모든 알림을 두드리는 흐름을 막고, 확인할 것과 지나칠 것을 먼저 가른다 |
| `brick-breaker-paddle-touch-note` | 패치 패들 벽돌 깨기 | 키보드 버튼보다 마우스/터치 패들이 먼저 반응해야 공을 받는 리듬이 살아난다 |
| `brick-breaker-landing-guide-note` | 패치 패들 벽돌 깨기 | 공 착지선과 패들 중심 표시는 벽돌보다 받을 자리와 맞힐 지점을 먼저 보이게 한다 |
| `flight-touch-hold-note` | 서버실 덕트 드론 띄우기 | 원버튼 비행은 버튼을 찾는 순간 늦으므로 누르는 동안 뜨고 떼면 내려가는 손맛이 먼저다 |
| `flight-hold-release-cue-note` | 서버실 덕트 드론 띄우기 | 상승, 하강, 유지 큐는 높이선을 설명하는 말보다 손을 뗄 박자를 짧게 보여줘야 한다 |
| `shooter-touch-aim-note` | 릴리스 게이트 방어포 | 터치 조준은 키보드 보조가 아니라 하단 발사대가 지금 보는 x좌표를 따라가게 하는 기본 조작이다 |
| `shooter-target-cue-note` | 버그 단서 버블 터뜨리기 | 단서표, 소문지 가까움, 정렬 배지는 보이는 것을 전부 쏘는 화면 청소를 늦추는 판단 신호다 |
| `crossing-next-lane-preview-note` | 배포표 차선 건너기 | 다음 차선의 초록, 노랑, 빨강 신호는 빨리 올라가라는 말보다 기다릴 빈틈을 읽게 한다 |
| `gem-swap-hint-note` | AI 질문 칩 맞추기 | 점선 한 수는 자동 풀이가 아니라 막힌 판처럼 느끼기 전에 지금 만질 수 있는 한 쌍만 보여준다 |
이렇게 묶으니 각 메모가 따로 공개 목록에 있을 때보다 더 읽을 만해졌다. 개별 글은 "버튼을 붙였다", "선 하나를 넣었다"에서 끝나기 쉽다. 대표 글은 왜 그 버튼과 선이 필요했는지, 그리고 다른 게임에서도 같은 문제가 반복되는지를 보여준다. 처음 들어온 사람이 보기에도 얇은 작업 조각을 많이 펼치는 것보다, 한 사람이 실제로 여러 Play를 만지며 같은 기준을 찾아간 흔적이 더 분명하다.
같은 신호라도 게임마다 역할이 달랐다
표로 묶어놓고 보니, 같은 "피드백"이라는 말 안에도 세 가지가 섞여 있었다. 하나는 손의 위치를 맞추는 신호다. 벽돌깨기 패들, 슈팅 조준선, 드론 누르기와 떼기처럼 사용자의 손이 이미 화면에 닿아 있을 때 필요한 신호다. 이 신호는 크거나 친절할 필요보다 빠른 쪽이 중요하다. 늦게 뜨면 도움말이 아니라 결과 설명이 된다.
두 번째는 위험을 미리 분리하는 신호다. 알림 선별판의 `보기`/`꺼둠`, 버블 슈터의 단서표와 소문지 구분, 차선 건너기의 다음 칸 게이트가 여기에 가깝다. 사용자가 실패한 뒤에 "그건 누르면 안 됐다"고 말하면 이미 늦다. 누르기 전에 무엇을 지나쳐야 하는지 작게 보이는 편이 낫다.
세 번째는 막힘을 풀어주는 신호다. AI 질문 칩 맞추기의 점선 한 수처럼, 정답을 대신 풀어주지는 않지만 지금 보드를 포기하지 않게 만드는 표시다. 작은 게임에서는 사용자가 막혔다고 느끼는 시간이 길면 바로 나간다. 그래서 힌트는 크게 설명하기보다 손을 다시 움직이게 할 만큼만 보여주는 쪽이 맞았다.
| 신호 종류 | 들어간 메모 | 검증할 장면 |
|---|---|---|
| 손 위치 신호 | `brick-breaker-paddle-touch-note`, `brick-breaker-landing-guide-note`, `flight-touch-hold-note`, `flight-hold-release-cue-note`, `shooter-touch-aim-note` | 터치나 마우스가 움직일 때 보드 안의 패들, 드론, 발사대가 같은 박자로 따라오는지 |
| 위험 분리 신호 | `mole-urgency-feedback-note`, `mole-priority-cue-note`, `shooter-target-cue-note`, `crossing-next-lane-preview-note` | 누르기 전에 확인할 것, 피할 것, 기다릴 것이 짧은 단어와 색으로 먼저 보이는지 |
| 막힘 해소 신호 | `gem-swap-hint-note` | 사용자가 멈춘 뒤에도 자동 풀이처럼 보이지 않는 작은 다음 행동이 남는지 |
이 기준으로 다시 보면 점수판은 세 번째나 네 번째 순서다. 먼저 손이 움직이고, 그다음 위험이 갈라지고, 그다음 막힘이 풀린다. 결과 숫자는 이 흐름이 끝난 뒤에 붙어도 늦지 않다.
대표 글로 남기는 기준
작은 조작 메모를 전부 없애지는 않는다. 직접 URL로 들어오면 noindex 보관 글로 남아 있고, 나중에 어떤 변경이 왜 들어갔는지 되짚을 수 있다. 다만 공개 목록과 제출 표면에서는 같은 종류의 메모를 한 대표 글로 묶는다.
- - 한 게임에 세부 메모가 여러 개 쌓이면 먼저 대표 제작 로그로 묶는다.
- - 같은 판단이 여러 게임에 반복되면 이 글처럼 공통 기준 글에 흡수한다.
- - 단순 구현 사실보다 화면에서 사용자가 먼저 봐야 하는 신호를 남긴다.
- - 점수, 기록, 숫자판보다 손이 다음에 할 행동을 설명하는 문장을 우선한다.
- - 보관 글은 삭제하지 않되 sitemap, feed, 검색 첫 표면에서는 밀지 않는다.
이 기준은 앞으로 새 Play를 추가할 때도 쓸 수 있다. 기능 하나가 생겼다고 바로 대표 글이 되는 것은 아니다. 그 기능이 어떤 조작 판단을 바꿨는지, 다른 Play에도 다시 쓸 기준인지, 실제 화면 검증에서 드러난 문제인지가 있어야 한다. 없으면 짧은 메모로 보관하고, 나중에 같은 문제가 반복될 때 한 묶음으로 끌어올리는 편이 낫다.
다음에는 게임별로 더 나눠야겠다
한 파일 안에서 여러 게임을 계속 고치다 보니, 이제는 엔진 내부도 슬슬 무겁다. 아직은 공통 캔버스 구조가 빨리 고치기 좋아서 버티고 있지만, 스네이크의 다음 칸 예고와 알림 선별판의 시간 링은 성격이 꽤 다르다.
다음 큰 개선부터는 게임별 상태 계산을 조금 더 분리해서 봐야겠다. 화면에 보이는 신호는 작아도, 그 신호를 만드는 로직은 게임마다 다르다. 이걸 억지로 한 덩어리로 계속 밀면 나중에 작은 수정 하나가 다른 게임 조작감까지 건드릴 수 있다.
일단 지금 기준은 이 정도다. 점수보다 먼저 다음 행동. 기록보다 먼저 손맛. 설명보다 먼저 보드 안의 짧은 신호. 그리고 짧은 메모를 전부 앞에 세우기보다, 같은 기준으로 묶어 읽을 수 있게 만드는 것.
읽고 나서 해볼 것