같은 UI를 세 번 갈아엎고 나서야 알았습니다
초등 3~6학년용 타워 디펜스를 만들었습니다. 특이한 점은 수학 문제를 푸는 게 유일한 성장 수단이라는 거예요. 레벨업이 없고, 영웅을 합치는 게 유일한 강화 방법인데 합칠 때마다 수학 관문이 열립니다.
문제는 이 관문의 난이도를 어떻게 정하냐였는데, 같은 UI를 세 번 갈아엎었습니다. 실패 두 번이 꽤 교훈적이라 남겨둡니다.
1차 시도: 플레이어에게 고르게 하기
처음엔 난이도 카드 세 장을 펼쳐놓고 직접 고르게 했습니다. 쉬운 문제는 보상이 적고 어려운 문제는 보상이 크게요. 플레이어에게 선택권을 주는 좋은 설계라고 생각했어요.
그런데 이 게임은 합치기가 연쇄로 이어집니다. 두 개 합쳐서 상위 등급 만들고, 그걸 또 합치고요. 한 판에 열댓 번씩 같은 메뉴를 넘기게 됐습니다.
선택이 재미가 아니라 짐이 됐어요. 처음 두세 번은 고민하지만 그 뒤론 그냥 아무거나 누르게 되더라고요.
2차 시도: 룰렛으로 뽑기
그래서 고르는 대신 룰렛을 돌렸습니다. 세 장을 펼쳐놓고 자동으로 하나가 뽑히는 방식이요. 의도대로 결정 비용은 0이 됐습니다.
그런데 다른 문제가 생겼어요. 뽑는 연출이 요란하다 보니 수학 문제를 푸는 게임이 아니라 뽑기 게임처럼 보이기 시작했습니다. 아이가 기억하는 게 “오늘 무슨 문제 풀었지”가 아니라 “룰렛 돌렸는데 꽝 나왔어”가 되면 곤란하죠.
3차: 뽑는 과정을 아예 안 보여주기
지금은 뽑는 걸 화면에 안 보여줍니다. 난이도는 여전히 무작위로 정해지지만 그 과정이 연출되지 않아요.
정리하면 변덕은 남기고 연출만 걷어낸 겁니다. 무작위성 자체는 게임에 필요했는데, 그걸 보여주는 것이 게임의 성격을 바꿔놓고 있었어요.
그리고 3학년에게 다섯 자리 나눗셈을 냈습니다
더 심각한 건 이쪽이었어요. 이 게임의 문제 일부는 화면의 실제 값을 읽어서 만들어집니다. “저 몬스터 체력이 445이고 마법사 한 방이 39인데 몇 번 때려야 할까?” 같은 식으로요.
의도는 좋았는데, 웨이브가 깊어질수록 숫자가 커졌습니다. 그리고 학년별로 문제 유형만 제한하고 숫자 크기는 안 막아뒀어요. 결과적으로 3학년에게 15420 ÷ 172 같은 게 나갔습니다.
고친 방식은 이랬습니다. 문제마다 어떤 연산이 필요하고 피연산자가 몇 자리인지 선언하게 하고, 학년 상한을 넘으면 그 문제를 버리고 다른 유형을 뽑습니다. 3학년은 나누는 수 한 자리, 나눠지는 수 세 자리까지 같은 식으로요.
재밌는 건 3학년은 두 자리로 나눌 수가 없어서 질문 방향이 뒤집힌다는 겁니다. “몇 번 때려야 잡을까”(나눗셈)가 안 되니 “한 방이 108인데 6번 때리면 피해는 얼마일까”(곱셈)로 바뀝니다.
💡 배운 것 & 주의할 점
- 팁: 문제 생성기에 규칙을 세 개 걸어뒀습니다. ①화면에 표시된 숫자는 게임이 실제로 쓰는 값일 것 ②표시된 숫자만으로 손으로 계산 가능할 것 ③문제를 내는 행위가 게임 상태를 바꾸지 않을 것. 특히 ②가 중요한데, 시뮬레이션을 돌려야만 나오는 답은 아이 입장에선 찍기랑 같습니다.
- 주의할 점: 교육용이라면 “틀린 문제”보다 “학년에 안 맞는 문제”가 더 위험합니다. 문법적으로 멀쩡한 문제라 테스트를 통과하거든요. 저는 이걸 막으려고 문제 3000개를 생성해서 학년 상한을 검사하는 자동 검사를 커밋 전 게이트에 넣었습니다.
정리
세 번 갈아엎으면서 배운 건 “플레이어에게 선택권을 주는 것”이 항상 좋지는 않다는 거였어요.
한 판에 한 번 나오는 선택이면 재밌는데, 열 번 나오면 그냥 일이 되더라고요.
태그: #게임개발, #타워디펜스, #threejs, #교육게임, #게임디자인, #UX, #초등수학, #클로드코드, #인디게임, #밸런싱