홈 › 읽을거리 › 개발노트

게임 소개 문구와 소스가 어긋난 열세 곳 정정 기록

개발노트 · 2026-10-08 · GamePool 편집팀

GamePool 의 게임 소개 문구는 사람이 쓰고 게임 소스는 따로 고쳐집니다. 둘 사이의 간격은 시간이 지나면 벌어지게 마련입니다. 2026년 10월 8일, 게임 페이지에 화면 캡처와 본문을 보강하는 작업을 하면서 소개 문구를 소스와 한 줄씩 대조했고, 그 과정에서 어긋난 곳을 바로잡았습니다. 이 글은 그 정정 가운데 소스 값으로 확인되는 열세 곳을 정리한 기록입니다. 변경 전후 문장은 git 이력에서, 근거 값은 현재 소스(public/games/<게임>/index.html)에서 가져왔습니다. 어긋난 이유는 이력으로 확인되는 것만 적고, 확인이 안 되는 건 모른다고 적었습니다.

숫자가 틀렸던 곳: 배수, 시간, 점수

가장 눈에 띄는 오류는 숫자였습니다. 솔저 러쉬의 팁에는 "큰 적(브루트)은 체력이 5배입니다" 라고 적혀 있었는데, 소스의 적 생성부는 브루트의 체력을 기본 체력의 4배(hp0 × 4)로 잡고 있었습니다. 이력을 보면 커밋 (10월 7일, 넓은 도로와 무기 해금을 넣은 대규모 개편)에서 이 줄이 hp0 × 5, 코인 6 에서 hp0 × 4, 코인 4 로 바뀌었습니다. 난이도 개편 때 수치를 바꾸고 소개 문구는 그대로 둔 것이 원인입니다. 문구는 해당 커밋에서 "체력이 4배" 로 고쳤습니다.

동물 연결하기는 "연속으로 3초 안에 이으면 콤보가 쌓입니다" 가 "3.2초" 로 바뀌었습니다. 소스의 match() 안에 comboT = 3.2 가 있고, 이 값은 게임이 처음 추가된 해당 커밋에서부터 3.2 였습니다. 즉 수치를 바꾼 뒤 문구를 안 고친 경우가 아니라 처음 추가된 커밋부터 문구는 3초, 소스는 3.2초로 서로 달랐던 경우입니다. 0.2초 차이처럼 보여도 콤보는 이어 붙이는 속도를 겨루는 게임에서 체감이 있는 값이라 그대로 두지 않았습니다. 같은 게임의 콤보 점수는 100 + min(콤보 − 1, 10) × 25 라 11콤보부터는 하나당 350점이 상한입니다.

과일 합치기의 마지막 팁은 "수박까지 만들면 엄청난 점수를 얻을 수 있습니다!" 였습니다. 틀린 말은 아니지만 읽는 사람에게 남는 정보가 없었습니다. 합칠 때의 점수 식은 (lv + 1) × (lv + 2) 이고(소스에서는 (lv+1)(lv+2)/2 × 2), 수박은 과일 11종의 마지막인 인덱스 10 이라 11 × 12 = 132점이 한 번에 들어옵니다. 또 합치기 조건에 a.lv < FRUITS.length − 1 이 있어서 수박끼리는 합쳐지지 않습니다. 정정 후 문구는 "수박을 만드는 합치기 한 번에 132점이 들어옵니다. 수박끼리는 합쳐지지 않으니 공간 관리를 먼저 하세요." 입니다. 이 건은 틀림이 아니라 모호함을 고친 사례입니다.

개수와 조건이 달랐던 곳

스페이스 슈터의 소개 문구에는 보스를 쓰러뜨리면 고르는 능력이 "11가지" 라고 적혀 있었습니다. 능력 선택 목록(소스의 { ic: '...', name: '...' } 항목)을 세어 보니 12개였습니다. 정정은 소개문과 본문 두 곳에서 했습니다. 흥미로운 것은 이력입니다. 10월 7일의 구역 2 개편 전에 이미 12개였고, 마지막 항목인 아이템 자석(🧲)도 10월 1일 병합 커밋 시점부터 있었습니다. 그래서 구역 2 개편 때문에 틀어진 것이 아니고, 처음 쓸 때 집계를 잘못했거나 그 이전에 항목이 하나 늘어난 것으로 보이는데 어느 쪽인지는 이력으로 확정되지 않습니다.

벽돌깨기의 "은색 테두리 벽돌은 두 번, 금색 테두리 벽돌은 세 번" 에는 조건이 빠져 있었습니다. 소스는 행 번호 r 이 level − 5 보다 작으면 내구도 3, level − 2 보다 작으면 2, 나머지는 1 로 정합니다. 금색 벽돌은 r = 0 인 줄이 r < level − 5 를 만족하는 스테이지 6부터 나옵니다. 그래서 문구가 "금색 테두리 벽돌(스테이지 6부터 등장)은 세 번" 으로 바뀌었습니다. 1~5스테이지에서 금색 벽돌을 기다리던 사람에게는 틀린 안내였던 셈입니다.

챔피언 방어전 FAQ 의 "건물은 최대 5레벨까지 업그레이드됩니다" 는 1스테이지 소스(스테이지 설정의 bldMax: 3, mainMaxLv: 3)와 부딪혔습니다. 5레벨 상한은 2스테이지 이후 설정(bldMax: 5, mainMaxLv: 5)의 값입니다. 해당 커밋에서 "최대 5레벨까지 업그레이드되지만, 1스테이지에서는 3레벨까지만 올릴 수 있습니다" 로 고쳤습니다. 게임은 1스테이지 하나로 시작해 50스테이지까지 확장되었는데(여러 커밋), 확장 때 상한이 단계별로 갈라지면서 문구가 한 값으로 남은 것으로 보입니다.

"어떻게 하느냐"가 달랐던 곳: 조작과 방식

뷰티 스파 메이크오버는 가장 많이 고친 게임입니다. 소개문에는 "아이섀도·블러셔·립스틱을 직접 문질러 바르고" 라고 적혀 있었습니다. 소스의 메이크업 단계는 아래 도구와 색을 고르면 바로 적용되고 얼굴을 눌러도 적용되는 방식이며, 문지르기는 세수와 팩 바르기·닦기 단계에서만 쓰입니다. 그래서 소개문은 "색과 모양을 골라 얼굴에 적용하고" 로, 사용법 항목은 "고르면 바로 적용되고, 얼굴을 눌러도 적용됩니다" 로, 본문 팁은 "세수와 팩 바르기·닦기 단계는 마우스나 손가락으로 얼굴을 직접 문지르는데" 로 바뀌었습니다. 한 가지 오해가 소개문, 사용법, 본문 세 곳에 퍼져 있었던 경우입니다.

스페이스 슈터의 마우스 조작도 비슷했습니다. 사용법에는 "마우스는 커서 위치로" 움직인다고 적혀 있었습니다. 소스의 pointerdown 과 pointermove 는 버튼을 누르고 있는 동안(dragging)에만 목표 위치를 갱신하고, 손을 떼면 이동도 자동 발사도 멈춥니다. 문구는 "마우스는 버튼을 누른 채 움직이면" 으로 바뀌었습니다. 같은 게임의 FAQ 에는 이미 맞게 적혀 있었으니, 같은 게임 안에서 문구끼리도 어긋나 있던 경우입니다.

목록과 보너스가 달랐던 곳

뷰티 스파의 헤어스타일 목록도 틀렸습니다. 소개문은 "생머리·웨이브·양갈래·포니테일·단발·똥머리·땋은 머리" 7종이라고 했으나, 소스의 HAIR_STYLES 는 생머리, 웨이브, 양갈래, 단발, 땋은 머리, 앞머리 단발, 숏컷의 7종입니다. 개수는 같았는데 이름이 두 개 달라서 눈으로 숫자만 세어서는 못 잡는 오류였습니다. 포니테일과 똥머리는 소스에 없었고, 앞머리 단발과 숏컷은 문구에 없었습니다. 개발 중 스타일을 바꾸고 문구를 안 고친 것으로 보이는데, 어느 커밋에서 바뀌었는지는 확인하지 못했습니다.

같은 게임의 테마 보너스 문구는 "다섯 군데 이상 손님 색으로 맞추면 테마 보너스 150점" 뿐이었습니다. score() 함수에는 match >= 5 ? 150 : match >= 3 ? 60 : 0 이 있습니다. 세 군데만 맞춰도 60점이 붙는데 그 사실이 빠져 있었습니다. 정정 후 문구는 "세 군데 이상 맞추면 60점, 다섯 군데 이상이면 150점" 입니다. 맞추는 대상은 섀도·블러셔·립 중 손님 색과 같은 것의 수에 머리, 액세서리, 의상을 더한 값이라는 점도 소스에서 확인했습니다.

정반대로 쓰여 있던 곳과 게임 쪽이 틀렸던 곳

가장 아쉬웠던 오류는 카드 짝맞추기였습니다. 더 잘하는 법 본문이 "두 장을 열었을 때 첫 번째 카드와 짝이 아니라면, 두 번째 카드는 이미 위치를 아는 카드 중에서 고르는 것이 정보를 더 얻는 방법" 이라고 적고 있었습니다. 이미 아는 카드를 열면 새로 알게 되는 것이 없으니 전략이 정반대였습니다. 해당 커밋에서 "아직 본 적 없는 카드를 고르는 것이 정보를 더 얻는 방법이며, 이미 위치를 아는 카드를 열면 짝이 아니라는 사실만 다시 확인할 뿐" 으로 바꿨습니다. 이건 소스 값과의 불일치가 아니라 논리 자체가 뒤집힌 것이라 소스와 대조하는 방법으로는 못 잡고, 문장을 실제 플레이 상황에 대입해 읽어야 보였습니다.

블록 월드의 "배고픔이 가득할 때 체력이 회복됩니다" 는 소스(체력 회복 루프)의 조건을 풀어 쓰면 더 정확해집니다. 3초마다 판정하고, 음식 수치가 16 이상(20칸 중)이고 체력이 20 미만이면 체력이 1 오릅니다. 문구는 "20칸 중 16칸 이상에서는 3초마다 체력이 1씩 회복됩니다" 로 바뀌었습니다. 같은 게임의 "좀비는 햇빛에 타 버립니다" 도 낮에 햇빛을 받는 적대 몬스터는 모두 타는 소스 구조(m.hostile 조건, 1초마다 피해 3)에 맞춰 좀비 외에 크리퍼와 거미도 포함한다고 고쳤습니다.

반대로 문구가 맞고 게임이 틀린 경우도 한 건 있었습니다. 스도쿠에서 힌트를 쓴 직후 되돌리기를 누르면 그 칸이 힌트로 고정된 채 비어 판을 끝낼 수 없던 버그입니다. 게임 소개 글에 되돌리기 동작을 설명하다 발견했고, 소스의 undo() 에 given[h.i] = false 한 줄을 넣어 고쳤습니다. 문구를 소스와 맞추는 작업이 소스의 결함을 찾아내기도 한다는 사실을 확인한 사례입니다.

왜 어긋나는가, 그리고 이후의 점검 방식

이력으로 확인되는 이유는 세 가지입니다. 첫째 개편 때 수치만 바뀌고 설명은 남은 경우(솔저 러쉬 브루트 5배에서 4배, 챔피언 방어전의 단계별 상한), 둘째 처음 쓸 때부터 문구가 소스와 달랐던 경우(동물 연결하기 3초와 3.2초, 뷰티 스파 보너스 60점 누락), 셋째 설명 안에 같은 오해가 여러 곳에 복사된 경우(뷰티 스파 문지르기)입니다. 스페이스 슈터의 능력 수와 뷰티 스파의 헤어스타일 이름은 이력만으로 시점을 확정하지 못했습니다. 안 확인되는 것을 꾸며 쓰지 않기로 했기 때문에 "원인 미확정" 으로 남깁니다.

지금은 게임 소개 문구에 숫자나 개수, 조건이 들어가면 그 값을 소스에서 직접 찾아 한 번 대조하는 것을 작성 순서에 넣고 있습니다. 구체적으로는 배수와 시간은 상수나 대입문을 검색해 값을 찾고, "N가지" 같은 개수는 해당 배열 항목을 직접 세고, "~부터 등장" 같은 조건은 그 조건식을 읽습니다. 그리고 한 게임의 소개문, 사용법, 팁, FAQ, 본문이 서로 같은 말을 하는지도 함께 봅니다. 이번처럼 한 오해가 세 곳에 퍼진 경우는 한 곳만 고치면 반드시 남기 때문입니다. 소스를 고치는 날에는 같은 날 문구를 다시 읽는 습관도 필요합니다. 문구와 소스의 간격은 대개 소스를 고친 바로 그날 생기기 때문입니다.

관련 게임 플레이하기

다른 읽을거리

개발노트솔저 러쉬 개발 노트: 넓은 도로와 난이도 조정도로를 9에서 15로 넓히자 게이트 글씨가 늘어났고, 쉬워졌다는 의견에 체력 곡선과 무리 크기를 다시 맞춘 과정을 변경 전후 수치로 적었습니다.개발노트챔피언 방어전 개발 노트: 3D 번들 한계를 우회한 기록Box3 없이 건물 크기를 재고, Float32BufferAttribute와 AdditiveBlending 없이 연출을 만든 방법, 건설 연출과 공중 몬스터를 구현하며 부딪힌 문제를 정리했습니다.개발노트레오니스 몬스터를 사진 스프라이트로 바꾼 기록레오니스의 몬스터를 도형 그림에서 사진 스프라이트로 바꾼 작업을 SPRITES·SPRITE_CLIPS·SPRITE_H 값과 커밋 시각으로 정리한 개발 노트입니다.공략군단 점령전 공략: 문 배수와 대장 게이지 활용군단 점령전에서 병사를 폭발적으로 불리는 문 활용법, 벽·황금 문·연타 문 공략, 대장 게이지와 업그레이드 투자 순서까지 정리했습니다.공략솔저 러쉬 공략: 무기 해금, 타이어 탑, 문 선택솔저 러쉬의 무기 5종 해금 순서와 특징, 보급 상자 타이어 탑, 거대 적 대처, 게이트를 고르고 키우는 법을 게임 수치로 설명합니다.개발노트군단 점령전 연타 배수문, 세 번 고쳐 맞춘 기록군단 점령전의 연타 배수문과 부서지는 벽을 어떤 수치로 세 번 조정했는지, 실패한 두 설정과 최종 상수, 내구도 공식을 소스와 커밋 근거로 되짚은 개발 노트입니다.