설계 판단

정형 격자를 버린 이유 — 숫자 찾기 게임의 눈동선

5×5 격자형 숫자 찾기는 눈이 바둑판 축을 따라 기계적으로 움직인다. 지터드 그리드와 타깃 소멸로 리듬을 만들었다.

게임 설계 · 알알콕 · UX

5×5 격자의 문제

숫자를 1부터 순서대로 찾아 누르는 게임을 만들기로 했습니다. 가장 흔한 형태는 5×5 격자에 1부터 25까지 숫자를 흩어 놓는 방식입니다. 구현이 쉽고 익숙합니다.

그런데 이 형태에는 구조적인 약점이 있습니다. 눈의 동선이 바둑판 축을 따라 기계적으로 움직입니다.행을 훑고 열을 훑는 식으로 탐색이 고정되니 시각적으로 피로하고, 무엇보다 지루합니다. 격자가 탐색 경로를 정해 버리는 셈입니다.

지터드 그리드

격자를 완전히 버리면 숫자끼리 겹치거나 한쪽에 몰립니다. 그래서 격자를 기준으로 삼되 각 칸 안에서 위치를 흔드는 지터드 그리드를 썼습니다.

논리 해상도 360×640 중 320×480을 플레이 영역으로 잡고, 그 안에 25개의 원형 알을 격자 기준 + 시드 난수 오프셋으로 배치합니다. 결과적으로 겹치지 않으면서도 줄이 보이지 않는 배치가 나옵니다. 시드를 쓰기 때문에 같은 시드는 항상 같은 배치를 만들고, 그래서 기록 비교가 공정합니다.

찾은 알은 사라진다

격자형 게임의 또 다른 불편은 이미 누른 숫자가 자리에 남는다는 점입니다. 비활성 상태로 흐려 놔도 시야에 계속 들어와 남은 숫자를 찾는 것을 방해합니다.

여기서는 올바른 알을 누르면 파티클과 함께 즉시 사라집니다.이 선택이 만든 효과가 생각보다 큽니다. 게임이 진행될수록 화면의 알 개수가 줄고 여백이 넓어집니다. 남은 알을 찾는 속도가 자연스럽게 빨라지고, 후반으로 갈수록 타격감이 가속됩니다.

난이도가 뒤로 갈수록 쉬워지는 구조인데, 이게 오히려 리듬을 만듭니다. 초반의 막막함과 후반의 속도감이 한 판 안에 들어갑니다. 타임어택이라 전체 기록은 여전히 긴장을 유지합니다.

이전 게임에서 가져온 것

입력 처리는 앞서 만든 낙하 퍼즐에서 겪은 것을 그대로 적용했습니다. 고주사율 화면에서 단발 입력이 사라지는 문제를 알고 있었기 때문에, 처음부터 탭과 포인터 입력을 상태 버퍼에 담고 고정 타임스텝이 돌 때 정확히 1회 소비하도록 설계했습니다. 같은 버그를 두 번 겪지 않았습니다.

이 게임을 만들면서 이전 게임에 뭉쳐 있던 유틸리티도 공용 모듈로 뽑았습니다. 안전한 저장소 래퍼, 공유 기능, 캔버스 논리 좌표 변환 세 가지입니다. 세 번째 게임을 만들 때가 중복이 눈에 보이기 시작하는 시점이었습니다.

개발 노트 목록으로