<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>게임 디자인 on To the Moon</title><link>https://junstellar.github.io/tags/%EA%B2%8C%EC%9E%84-%EB%94%94%EC%9E%90%EC%9D%B8/</link><description>Recent content in 게임 디자인 on To the Moon</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Sun, 06 Sep 2026 09:00:00 +0900</lastBuildDate><atom:link href="https://junstellar.github.io/tags/%EA%B2%8C%EC%9E%84-%EB%94%94%EC%9E%90%EC%9D%B8/index.xml" rel="self" type="application/rss+xml"/><item><title>AI로 게임 만들기 #11 — 60초 스네이크를 만들었습니다 (공개빌드 #11)</title><link>https://junstellar.github.io/p/ai-game-lab-build-11/</link><pubDate>Sun, 06 Sep 2026 09:00:00 +0900</pubDate><guid>https://junstellar.github.io/p/ai-game-lab-build-11/</guid><description>&lt;img src="https://junstellar.github.io/p/ai-game-lab-build-11/snake-play.webp" alt="Featured image of post AI로 게임 만들기 #11 — 60초 스네이크를 만들었습니다 (공개빌드 #11)" /&gt;&lt;p&gt;AI 게임 랩 열 번째 게임으로 스네이크를 만들었습니다. 점수 나는 방식 하나만 바꿨는데 게임이 꽤 달라졌습니다.&lt;/p&gt;
&lt;p&gt;시간은 60초로 고정입니다. 그 안에 최대한 높은 점수를 내면 됩니다. 부딪혀도 판이 끝나지 않아요. 몸이 처음 길이인 세 칸으로 돌아가고 1.2초 멈췄다가 이어집니다. 그동안에도 시계는 흘러가니 결국 누구나 60초를 씁니다. 랭킹으로 겨루려면 쓴 시간이 같아야 해서 이렇게 잡았습니다.&lt;/p&gt;
&lt;p&gt;조작은 방향키나 WASD, 휴대폰에서는 화면을 쓸면 됩니다. 격자는 16×16이고 뱀은 초당 여덟 칸씩 움직입니다.&lt;/p&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a class="link" href="https://junstellar.github.io/games/snake60/" &gt;60초 스네이크 하러 가기&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="점수-규칙"&gt;점수 규칙
&lt;/h2&gt;&lt;p&gt;보통 스네이크는 먹이를 먹으면 점수가 오릅니다. 여기서도 먹이가 30점이긴 한데, 그보다 중요한 건 머리가 지나가는 칸의 좌우가 얼마나 막혔는지입니다.&lt;/p&gt;
&lt;p&gt;옆이 트여 있으면 0점입니다. 한쪽에 제 몸이 있으면 1점. 양옆이 다 막힌 한 칸 틈을 지나가면 15점이 들어오고, 여기에 HEAT라는 배수가 최대 세 배까지 붙습니다. HEAT는 좁은 틈을 연달아 통과할 때만 올라가고, 넓은 데로 나오면 금방 식습니다.&lt;/p&gt;
&lt;p&gt;&lt;img alt="옆이 어떻게 막혔는지에 따라 점수가 갈린다. 벽만 있으면 0점이다" class="gallery-image" data-flex-basis="513px" data-flex-grow="213" height="860" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/p/ai-game-lab-build-11/snake-rule.webp" srcset="https://junstellar.github.io/p/ai-game-lab-build-11/snake-rule_hu_f5036dfb72dc9fd5.webp 800w, https://junstellar.github.io/p/ai-game-lab-build-11/snake-rule_hu_a4451cc669ffafec.webp 1600w, https://junstellar.github.io/p/ai-game-lab-build-11/snake-rule.webp 1840w" width="1840"&gt;&lt;/p&gt;
&lt;p&gt;바깥 벽은 세지 않습니다. 벽에만 붙어서 달려서는 아무 점수도 안 나와요. 왜 그렇게 했는지는 아래에 적었습니다.&lt;/p&gt;
&lt;p&gt;좁은 틈은 몸이 길어야 생깁니다. 그래서 먹이도 결국 필요해요. 먹이 하나에 몸이 네 칸 자라고, 좁은 틈에 놓인 먹이를 먹으면 5배인 150점이 들어옵니다. 한 판에서 제일 크게 버는 순간이 여기입니다.&lt;/p&gt;
&lt;p&gt;&lt;img alt="똬리 튼 몸 사이 한 칸 틈을 빠져나오는 중. HEAT가 2.8배까지 올라 42점이 붙었다" class="gallery-image" data-flex-basis="200px" data-flex-grow="83" height="1030" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/p/ai-game-lab-build-11/snake-play.webp" srcset="https://junstellar.github.io/p/ai-game-lab-build-11/snake-play_hu_65d8e86d4fa342b8.webp 800w, https://junstellar.github.io/p/ai-game-lab-build-11/snake-play.webp 860w" width="860"&gt;&lt;/p&gt;
&lt;h2 id="왜-이렇게-만들었나"&gt;왜 이렇게 만들었나
&lt;/h2&gt;&lt;p&gt;스네이크를 그냥 만들면 두 가지가 걸렸습니다.&lt;/p&gt;
&lt;p&gt;하나는 스네이크가 순수 실력 게임이라는 점입니다. 잘하는 사람이 항상 이깁니다. 게임 랩 게임들은 하루 한 판씩 남들과 점수를 겨루는 형태라, 실력 순서가 그대로 고정되면 못하는 사람은 영영 못 이깁니다. 운이 좀 섞여야 뒤집힐 여지가 생깁니다.&lt;/p&gt;
&lt;p&gt;다른 하나는 60초라는 시간입니다. 1분 안에는 몸이 별로 안 길어집니다. 스네이크가 조여드는 느낌은 몸이 화면을 채우기 시작할 때 오는데, 거기까지 갈 시간이 없어요.&lt;/p&gt;
&lt;p&gt;그래서 점수를 지나간 자리의 위험도로 옮겼습니다. 안전하게만 돌면 점수가 안 나오게 만들어두면, 짧은 시간에도 위험을 감수할 이유가 생기니까요. (&lt;a class="link" href="https://junstellar.github.io/p/ai-game-lab-build-10/" &gt;지난 편&lt;/a&gt;에서는 주사위 게임을 두 번 만들었다 두 번 다 버렸는데, 이번 건 남았습니다.)&lt;/p&gt;
&lt;h2 id="봇을-풀어놨더니-테두리만-돌더군요"&gt;봇을 풀어놨더니 테두리만 돌더군요
&lt;/h2&gt;&lt;p&gt;밸런스를 감으로 잡고 싶지 않아서 자동 플레이어를 만들었습니다. 겁쟁이, 먹이만 쫓는 놈, 위험하게 노는 놈, 무모한 놈. 넷을 각각 80판씩 돌렸습니다.&lt;/p&gt;
&lt;p&gt;처음 버전에서는 바깥 벽도 막힌 면으로 셌습니다. 옆이 막혀 있으면 위험한 거라고 봤거든요.&lt;/p&gt;
&lt;p&gt;결과가 이상했습니다. 테두리를 따라 60초 내내 뱅뱅 도는 것만으로 2,800점이 나왔고, 그동안 한 번도 부딪히지 않았습니다. 안전하면 점수가 없게 만들겠다고 해놓고 가장 안전한 길을 최고점으로 만들어둔 셈이었습니다.&lt;/p&gt;
&lt;p&gt;이유는 간단했습니다. 벽은 움직이지 않습니다. 벽에 붙어 달리는 건 그림으로는 아슬아슬해 보여도 실제로는 아무 일도 일어나지 않아요. 저는 &amp;ldquo;옆이 막혀 있다&amp;quot;를 위험이라고 착각하고 있었습니다.&lt;/p&gt;
&lt;p&gt;그래서 막힌 면 중에 제 몸이 최소 하나는 있어야 점수를 주도록 고쳤습니다.&lt;/p&gt;
&lt;h2 id="이번엔-자기-몸-옆에-딱-붙어서"&gt;이번엔 자기 몸 옆에 딱 붙어서
&lt;/h2&gt;&lt;p&gt;고치고 다시 돌렸습니다. 순서는 맞게 나왔어요. 위험하게 노는 봇이 겁쟁이보다 훨씬 높았습니다. 그런데 그 옆 칸의 숫자를 보고 또 걸렸습니다. 평균 2,911점을 내면서 &lt;strong&gt;부딪힌 횟수가 0.0번&lt;/strong&gt;이었거든요. 480칸 중 393칸에서 점수를 뽑았는데도 말이죠.&lt;/p&gt;
&lt;p&gt;자기 몸 옆에 나란히 붙어 달리는 게 안정적인 자세였습니다. 몸이 제 뒤를 그대로 따라오니까 옆은 계속 막혀 있는데, 정작 부딪힐 일은 없습니다. 벽으로 하던 짓을 몸으로 하고 있었을 뿐이었어요.&lt;/p&gt;
&lt;p&gt;이번에는 규칙 대신 배점을 손봤습니다. 나란히 달리기는 1점 고정으로 낮추고 HEAT가 안 붙게 했습니다. HEAT는 양옆이 다 막힌 좁은 틈에서만 오릅니다.&lt;/p&gt;
&lt;p&gt;돌이켜보면 두 경우 다 같은 착각이었습니다. 벽도, 나란히 가는 제 몸도, 옆에 있기는 한데 저를 쫓아오지는 않습니다. 위험한 건 옆이 막혀 있는 상태가 아니라 제가 다음에 갈 자리를 누가 먼저 차지할 수 있느냐였습니다.&lt;/p&gt;
&lt;h2 id="없는-점수를-쫓던-봇"&gt;없는 점수를 쫓던 봇
&lt;/h2&gt;&lt;p&gt;중간에 이상한 일도 있었습니다. 봇 하나가 네 칸을 뱅뱅 돌면서 아무것도 안 했습니다. 로그를 한 수씩 찍어보니 매번 옆이 막혔다고 판단하는데 실제 점수는 0이었어요.&lt;/p&gt;
&lt;p&gt;게임 쪽 문제가 아니었습니다. 봇이 후보 칸의 위험도를 이동하기 전 상태로 재고 있었습니다. 뱀은 앞으로 가면 꼬리가 한 칸 빠져나가죠. 그러니까 지금은 막혀 있어도 머리가 도착할 때쯤에는 비어 있을 칸이었던 겁니다. 봇은 있지도 않은 점수를 보고 제자리를 돌고 있었습니다.&lt;/p&gt;
&lt;p&gt;로그를 안 찍었으면 멀쩡한 게임을 뜯어고쳤을 겁니다.&lt;/p&gt;
&lt;h2 id="봇이-사람보다-잔인한-테스터인-이유"&gt;봇이 사람보다 잔인한 테스터인 이유
&lt;/h2&gt;&lt;p&gt;이 두 가지를 봇으로 찾은 데는 이유가 있습니다. 봇에게는 부끄러움이 없습니다.&lt;/p&gt;
&lt;p&gt;사람은 테두리만 60초 도는 짓을 잘 안 합니다. 이길 수 있어도 안 해요. 이렇게 이기면 재미없잖아, 하는 감각이 있으니까요. 제가 직접 백 판을 했어도 못 찾았을 겁니다. 자기 게임은 자기가 의도한 방식으로 플레이하게 되거든요. 봇은 그런 게 없고 점수만 봅니다.&lt;/p&gt;
&lt;p&gt;나중에 찾아보니 게임 디자인에서는 오래된 이야기더군요. 게임 디자이너 소렌 존슨이 남긴 말인데, 기회만 주면 플레이어가 게임에서 재미를 최적화해 없애버린다는 겁니다. 플레이어가 최적화하는 건 재미가 아니라 승리니까요.&lt;/p&gt;
&lt;h2 id="숫자로-본-결과"&gt;숫자로 본 결과
&lt;/h2&gt;&lt;p&gt;전략별로 80판씩 돌린 최종 수치입니다.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;전략&lt;/th&gt;
					&lt;th&gt;평균&lt;/th&gt;
					&lt;th&gt;상위 10%&lt;/th&gt;
					&lt;th&gt;최고&lt;/th&gt;
					&lt;th&gt;부딪힘&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;트인 곳만 달림&lt;/td&gt;
					&lt;td&gt;1,155&lt;/td&gt;
					&lt;td&gt;1,465&lt;/td&gt;
					&lt;td&gt;2,248&lt;/td&gt;
					&lt;td&gt;1.1번&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;먹이만 쫓음&lt;/td&gt;
					&lt;td&gt;1,949&lt;/td&gt;
					&lt;td&gt;2,627&lt;/td&gt;
					&lt;td&gt;3,788&lt;/td&gt;
					&lt;td&gt;1.0번&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;몸 옆 나란히&lt;/td&gt;
					&lt;td&gt;1,682&lt;/td&gt;
					&lt;td&gt;2,138&lt;/td&gt;
					&lt;td&gt;2,635&lt;/td&gt;
					&lt;td&gt;0.0번&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;좁은 틈 사냥&lt;/td&gt;
					&lt;td&gt;1,935&lt;/td&gt;
					&lt;td&gt;2,390&lt;/td&gt;
					&lt;td&gt;6,671&lt;/td&gt;
					&lt;td&gt;2.9번&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;노린 데까지는 왔습니다. 몸 옆에 나란히 달리기가 그냥 잘 두는 것보다 낮아졌으니까요. 위험을 하나도 안 지는 전략이 최적해 자리에서 내려온 겁니다.&lt;/p&gt;
&lt;p&gt;다만 좁은 틈 사냥이 압도적으로 유리하지는 않습니다. 평균이나 상위 10%로 보면 먹이만 착실히 쫓는 쪽과 비슷해요. 다른 건 분포입니다. 6,671점 같은 판은 틈을 노린 쪽에서만 나오는데, 그 대신 열에 한 번쯤은 부딪힙니다.&lt;/p&gt;
&lt;p&gt;궁금해서 위험 감수 정도만 바꿔가며 한 번 더 재봤습니다. 앞을 안 보고 틈에 들이받는 쪽은 중앙값이 1,755점, 적당히 조심하는 쪽은 1,747점으로 거의 같았습니다. 최고 기록만 7,981점 대 2,872점으로 크게 갈렸고요. 죽는 게 이득은 아니라는 뜻입니다. 부딪히면 몸이 초기화되는데 이 게임에서 몸은 점수를 뽑는 도구라서, 1.2초 멈추는 것보다 몸을 다시 키우는 10여 초가 훨씬 비쌉니다. 크게 터지는 판이 죽을 자리에 들어간 쪽에서만 나올 뿐입니다.&lt;/p&gt;
&lt;h2 id="몇-점이면-잘한-걸까"&gt;몇 점이면 잘한 걸까
&lt;/h2&gt;&lt;p&gt;봇 기준으로는 트인 곳으로만 다니면 1,100점대, 먹이를 착실히 쫓으면 1,900점대가 나옵니다. 좁은 틈까지 노리면 운이 따를 때 6,000점을 넘고요.&lt;/p&gt;
&lt;p&gt;다만 봇은 매 수마다 남은 공간을 전부 계산해서 움직입니다. 사람은 그렇게 못 하니 실제로는 더 낮게 나올 겁니다. 저는 2,000점 넘기기가 쉽지 않았습니다.&lt;/p&gt;
&lt;p&gt;해보실 때 참고하실 만한 것 몇 가지입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;처음 10초쯤은 먹이를 먹어 몸을 키우는 게 낫습니다. 몸이 짧으면 좁은 틈 자체가 생기지 않습니다.&lt;/li&gt;
&lt;li&gt;HEAT는 좁은 틈을 연달아 지나야 오릅니다. 한 번 통과하고 넓은 데로 나오면 금방 식어요.&lt;/li&gt;
&lt;li&gt;후반에 부딪히면 회복할 시간이 없습니다. 몸이 길어졌을 때가 제일 벌기 좋으면서 제일 위험합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="그림-없이-만들기"&gt;그림 없이 만들기
&lt;/h2&gt;&lt;p&gt;이 게임에는 이미지 파일이 한 장도 없습니다. 뱀도 먹이도 파티클도, 소리까지 전부 코드로 만들었고 파일 하나에 44KB입니다.&lt;/p&gt;
&lt;p&gt;지난 편에서 &amp;ldquo;그래픽을 줄이자&amp;quot;를 &amp;ldquo;화면이 안 움직여도 된다&amp;quot;로 잘못 읽고 게임을 두 개 버렸던 터라 이번엔 신경을 썼습니다. 도형과 선만으로도 움직일 건 다 움직이더군요.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a class="link" href="https://junstellar.github.io/games/snake60/" &gt;60초 스네이크&lt;/a&gt; 한 판 해보시고 몇 점 나왔는지 알려주세요. 혹시 제가 아직 못 막은 지름길을 찾으시면 그것도 알려주시고요. 바로 막겠습니다. 🐍&lt;/p&gt;
&lt;p&gt;다음 편은 새 게임을 들고 오겠습니다.&lt;/p&gt;</description></item><item><title>AI로 게임 만들기 #10 — 두 번 만들고 두 번 버렸습니다 (공개빌드 #10)</title><link>https://junstellar.github.io/p/ai-game-lab-build-10/</link><pubDate>Sat, 29 Aug 2026 09:00:00 +0900</pubDate><guid>https://junstellar.github.io/p/ai-game-lab-build-10/</guid><description>&lt;img src="https://junstellar.github.io/p/ai-game-lab-build-10/dice-push.webp" alt="Featured image of post AI로 게임 만들기 #10 — 두 번 만들고 두 번 버렸습니다 (공개빌드 #10)" /&gt;&lt;p&gt;&lt;a class="link" href="https://junstellar.github.io/p/ai-game-lab-build-9/" &gt;지난 편&lt;/a&gt;의 오디세이아에 이어, 열 번째 게임을 만들었습니다. &lt;strong&gt;두 번 만들었고, 두 번 다 버렸습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;그래서 이번 편에는 새 게임이 없습니다. 대신 &lt;strong&gt;두 번 물린 이야기&lt;/strong&gt;를 씁니다.&lt;/p&gt;
&lt;p&gt;버린 두 개는 지우지 않고 그대로 올려뒀습니다. 게임 랩 목록에는 없지만 주소로는 들어갈 수 있어요. 읽으시다가 궁금하면 직접 눌러보세요.&lt;/p&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a class="link" href="https://junstellar.github.io/games/dice-yacht/" &gt;첫 번째 시제품 — 오늘의 주사위&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a class="link" href="https://junstellar.github.io/games/dice-push/" &gt;두 번째 시제품 — 한 번 더&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="열-번째는-그림-없는-게임으로-가려-했습니다"&gt;열 번째는 그림 없는 게임으로 가려 했습니다
&lt;/h2&gt;&lt;p&gt;지금까지 만든 게임들은 &lt;a class="link" href="https://junstellar.github.io/p/claude-local-image-generation/" &gt;ComfyUI&lt;/a&gt;로 그린 이미지를 씁니다. 그런데 이미지는 유한합니다. 아무리 많이 그려도 언젠가 나왔던 게 또 나오고, 그때부터 흥미가 떨어지죠.&lt;/p&gt;
&lt;p&gt;그래서 이번엔 &lt;strong&gt;그림 없이 만들자&lt;/strong&gt;고 정했습니다. 주사위 눈까지 CSS 점으로 찍는 게임. 이 판단 자체는 지금도 맞다고 생각합니다.&lt;/p&gt;
&lt;h2 id="첫-번째--완성했는데-손이-안-갔습니다"&gt;첫 번째 — 완성했는데 손이 안 갔습니다
&lt;/h2&gt;&lt;p&gt;야추(Yacht) 방식으로 만들었습니다. 주사위 다섯 개를 세 번까지 굴려 열두 개 족보를 채우는 게임.&lt;/p&gt;
&lt;p&gt;잘 돌아갔습니다. 족보 채점은 경계값까지 열여덟 가지를 검증했고, 보너스도 라운드 진행도 정확했습니다. 파일 하나 21KB, 그림 한 장 안 썼습니다.&lt;/p&gt;
&lt;p&gt;그리고 열었는데 — &lt;strong&gt;손이 안 갔습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="첫 번째 시제품 — 열두 칸에 숫자를 채우는 화면" class="gallery-image" data-flex-basis="208px" data-flex-grow="86" height="1040" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/p/ai-game-lab-build-10/dice-yacht.webp" srcset="https://junstellar.github.io/p/ai-game-lab-build-10/dice-yacht_hu_764d70869ad5e92a.webp 800w, https://junstellar.github.io/p/ai-game-lab-build-10/dice-yacht.webp 904w" width="904"&gt;&lt;/p&gt;
&lt;p&gt;처음엔 설명이 부족한 줄 알았습니다. 점수판에 &lt;code&gt;포카드&lt;/code&gt; &lt;code&gt;풀하우스&lt;/code&gt; &lt;code&gt;S.스트레이트&lt;/code&gt;라고만 적혀 있었으니까요. &lt;strong&gt;뭘 만들어야 그 점수가 나는지가 화면 어디에도 없었습니다.&lt;/strong&gt; 야추를 아는 사람만 읽을 수 있는 화면이었죠.&lt;/p&gt;
&lt;p&gt;그런데 규칙을 다 정리하고 나서도 그대로였습니다. 문제는 설명이 아니었습니다.&lt;/p&gt;
&lt;h2 id="야추엔-긴장이-없습니다"&gt;야추엔 긴장이 없습니다
&lt;/h2&gt;&lt;p&gt;&lt;img alt="긴장 곡선 비교 — 야추는 한 판 내내 평평하고, 푸시-유어-럭은 굴릴 때마다 치솟았다 터진다" class="gallery-image" data-flex-basis="469px" data-flex-grow="195" height="940" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/p/ai-game-lab-build-10/dice-tension.webp" srcset="https://junstellar.github.io/p/ai-game-lab-build-10/dice-tension_hu_41997b6820b72825.webp 800w, https://junstellar.github.io/p/ai-game-lab-build-10/dice-tension_hu_d8ebc0ef7fee0d74.webp 1600w, https://junstellar.github.io/p/ai-game-lab-build-10/dice-tension.webp 1840w" width="1840"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;잃을 게 없습니다.&lt;/strong&gt; 매 라운드 무조건 점수를 챙기고 넘어갑니다. 0점을 박아도 그냥 다음 라운드죠. 위험이 없으면 긴장도 없습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;결정이 스릴이 아니라 숙제입니다.&lt;/strong&gt; &amp;ldquo;5의 합 20점이냐 포카드 23점이냐&amp;quot;는 심장이 뛰는 선택이 아니라 계산 문제입니다. 최적해가 있어서, 익숙해지면 기계적으로 두게 됩니다.&lt;/p&gt;
&lt;p&gt;그리고 결정적으로 — &lt;strong&gt;야추는 원래 여럿이 둘러앉아 떠들면서 하는 게임입니다.&lt;/strong&gt; 재미의 절반이 사람인데, 혼자 폰으로 하면 그게 빠지고 &lt;strong&gt;엑셀 채우기&lt;/strong&gt;만 남습니다.&lt;/p&gt;
&lt;h2 id="두-번째--이번엔-숫자로-맞췄습니다"&gt;두 번째 — 이번엔 숫자로 맞췄습니다
&lt;/h2&gt;&lt;p&gt;갈아엎었습니다. 같은 주사위인데 매 순간 결정이 있는 방식으로요.&lt;/p&gt;
&lt;p&gt;굴려서 점수 나는 눈만 챙기고, 남은 걸로 &lt;strong&gt;또 굴릴지 멈출지&lt;/strong&gt; 고릅니다. 굴렸는데 점수 나는 눈이 하나도 없으면 &lt;strong&gt;그 라운드는 전부 소멸.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="두 번째 시제품 — 한 번 더 굴릴지 멈출지 고르는 화면" class="gallery-image" data-flex-basis="230px" data-flex-grow="95" height="880" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://junstellar.github.io/p/ai-game-lab-build-10/dice-push.webp" srcset="https://junstellar.github.io/p/ai-game-lab-build-10/dice-push_hu_ba7b3e9764c84bed.webp 800w, https://junstellar.github.io/p/ai-game-lab-build-10/dice-push.webp 844w" width="844"&gt;&lt;/p&gt;
&lt;p&gt;이번엔 감으로 안 맞추고 &lt;strong&gt;자동 플레이어를 3천 판씩 돌렸습니다.&lt;/strong&gt; 겁쟁이(한 번 챙기고 바로 멈춤), 신중(터질 확률 30%에서 멈춤), 욕심(45%까지), 무모(터질 때까지).&lt;/p&gt;
&lt;p&gt;주사위 다섯 개일 땐 &lt;strong&gt;라운드당 굴림이 평균 1.8회&lt;/strong&gt;였습니다. 두 번 굴리면 라운드가 끝나니 긴장이 쌓일 틈이 없었죠. &lt;strong&gt;여섯 개로 늘리자 최적점이 생겼습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;전략&lt;/th&gt;
					&lt;th&gt;평균 점수&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;겁쟁이&lt;/td&gt;
					&lt;td&gt;1058&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;신중&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;1343&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;욕심&lt;/td&gt;
					&lt;td&gt;1082&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;무모&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;덜 굴려도 손해, 더 굴려도 손해. 원하던 모양이었습니다.&lt;/p&gt;
&lt;h2 id="짐작이-또-틀렸습니다"&gt;짐작이 또 틀렸습니다
&lt;/h2&gt;&lt;p&gt;라운드가 아직 짧게 느껴져서, 파클(Farkle)의 고전 규칙을 떠올렸습니다. &lt;strong&gt;&amp;ldquo;최소 300점을 넘겨야 멈출 수 있다.&amp;rdquo;&lt;/strong&gt; 강제로 더 굴리게 만드니 긴장이 늘겠거니 했죠.&lt;/p&gt;
&lt;p&gt;재보니 정반대였습니다.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;&lt;/th&gt;
					&lt;th&gt;겁쟁이&lt;/th&gt;
					&lt;th&gt;신중&lt;/th&gt;
					&lt;th&gt;격차&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;최소 없음&lt;/td&gt;
					&lt;td&gt;1058&lt;/td&gt;
					&lt;td&gt;1343&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;+27%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;최소 300점&lt;/td&gt;
					&lt;td&gt;1282&lt;/td&gt;
					&lt;td&gt;1321&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;+3%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;최소 점수는 긴장을 더한 게 아니라 &lt;strong&gt;결정을 없앴습니다.&lt;/strong&gt; 모두를 같은 플레이로 몰아버려서, 잘 두든 못 두든 점수가 비슷해졌습니다. 그대로 넣었으면 게임을 망칠 뻔했습니다.&lt;/p&gt;
&lt;h2 id="다-맞췄는데-재미가-없었습니다"&gt;다 맞췄는데 재미가 없었습니다
&lt;/h2&gt;&lt;p&gt;확률까지 버튼에 그대로 띄웠습니다. &amp;ldquo;한 번 더 — 2개 · 터질 확률 44%&amp;rdquo; 옆에 &amp;ldquo;멈추기 — 550점 확정&amp;rdquo;. 확률을 보여주니 결정이 진짜 결정이 되더군요.&lt;/p&gt;
&lt;p&gt;그리고 다시 열었는데 — &lt;strong&gt;여전히 재미가 없었습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;여기서 접었습니다. 규칙을 통째로 바꿔서 두 번 만들었는데 두 번 다 안 걸렸으면, 문제는 규칙이 아니라 &lt;strong&gt;장르&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;h2 id="답은-이미-제-게임-목록에-적혀-있었습니다"&gt;답은 이미 제 게임 목록에 적혀 있었습니다
&lt;/h2&gt;&lt;p&gt;버리기로 하고 나서야 지금까지 만든 걸 다시 봤습니다.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;게임&lt;/th&gt;
					&lt;th&gt;재미의 정체&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;🗑️ &lt;a class="link" href="https://junstellar.github.io/games/paper-hoop/" &gt;종이 농구&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;당겨서 놓고 → &lt;strong&gt;날아가는 걸 본다&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🎣 &lt;a class="link" href="https://junstellar.github.io/games/deep-fishing/" &gt;심해 낚시&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;챔질하는 &lt;strong&gt;찰나의 손맛&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🪐 &lt;a class="link" href="https://junstellar.github.io/games/space-merge/" &gt;우주 진화&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;떨어뜨리면 &lt;strong&gt;터지듯 합쳐진다&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🍰 &lt;a class="link" href="https://junstellar.github.io/games/stack-tower/" &gt;디저트 탑&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;타이밍&lt;/strong&gt; 맞춰 딱&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;제가 제일 아끼는 것들은 죄다 &lt;strong&gt;손과 눈으로 하는 게임&lt;/strong&gt;이었습니다. 결과가 0.5초 안에 몸으로 옵니다.&lt;/p&gt;
&lt;p&gt;주사위는 야추든 파클이든 &lt;strong&gt;머리로 숫자를 판단하는 게임&lt;/strong&gt;입니다. 화면에 움직이는 게 없어요. 제가 뭘 만들면 재밌어하는지는 이미 만들어놓은 것들에 다 적혀 있었는데, 정작 저만 그걸 안 보고 있었습니다.&lt;/p&gt;
&lt;h2 id="그래픽-줄이자가-화면이-안-움직인다가-됐습니다"&gt;&amp;ldquo;그래픽 줄이자&amp;quot;가 &amp;ldquo;화면이 안 움직인다&amp;quot;가 됐습니다
&lt;/h2&gt;&lt;p&gt;이번에 제가 세운 조건은 **&amp;ldquo;이미지 에셋을 줄이자&amp;rdquo;**였습니다. 그런데 만들다 보니 어느새 **&amp;ldquo;화면이 움직이지 않아도 된다&amp;rdquo;**로 바뀌어 있었습니다.&lt;/p&gt;
&lt;p&gt;이 둘은 전혀 다릅니다. &lt;strong&gt;그림 파일이 없는 것과 화면이 정지해 있는 건 다른 문제입니다.&lt;/strong&gt; 도형과 선만으로도 얼마든지 움직일 수 있는데, 저는 한 번에 둘 다 없애버렸습니다.&lt;/p&gt;
&lt;p&gt;바이브 코딩을 하면서 계속 겪는 일인데, &lt;strong&gt;조건을 애매하게 잡으면 결과는 가장 극단으로 갑니다.&lt;/strong&gt; &amp;ldquo;줄이자&amp;quot;라고 하면 &amp;ldquo;없애자&amp;quot;가 되어 돌아옵니다. 이번엔 그걸 눈으로 확인할 때까지 몰랐습니다.&lt;/p&gt;
&lt;h2 id="이번에-배운-것"&gt;이번에 배운 것
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;재미는 측정이 안 됩니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;지난 편들에서 저는 측정으로 많은 걸 잡았습니다. &lt;a class="link" href="https://junstellar.github.io/p/ai-game-lab-build-6/" &gt;병합할수록 공간이 남는&lt;/a&gt; 구조적 결함도, &lt;a class="link" href="https://junstellar.github.io/p/ai-game-lab-build-8/" &gt;배경이 아니라 대비가 문제였던 것&lt;/a&gt;도, &lt;a class="link" href="https://junstellar.github.io/p/ai-game-lab-build-9/" &gt;화면이 시키는 대로 하면 지는&lt;/a&gt; 판도 숫자가 알려줬습니다. 이번에도 측정은 제대로 작동했습니다. 밸런스는 잡혔고, 확률은 정확했고, 틀린 짐작도 잡아냈습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;그런데 그게 재미를 만들어주진 않았습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;숫자로 답할 수 있는 건 &lt;em&gt;어떻게 만들 것인가&lt;/em&gt;까지였습니다. &lt;em&gt;무엇을 만들 것인가&lt;/em&gt;는 재보기 전에 정해야 하는 문제였고, 저는 거기서 두 번 틀렸습니다.&lt;/p&gt;
&lt;p&gt;그래서 다음부터는 순서를 바꾸기로 했습니다. &lt;strong&gt;&amp;ldquo;이 게임의 재미는 정확히 이 순간이다&amp;quot;를 한 문장으로 먼저 적고 시작합니다.&lt;/strong&gt; 그 문장이 안 써지면 만들지 않습니다. 완성한 뒤에 재미를 묻는 건 늦습니다. 두 번 버리고서 알았습니다.&lt;/p&gt;
&lt;h2 id="목록을-다시-짰습니다"&gt;목록을 다시 짰습니다
&lt;/h2&gt;&lt;p&gt;다음에 만들 후보에서 &lt;strong&gt;머리로 계산하는 게임을 통째로 걷어냈습니다.&lt;/strong&gt; 주사위도, 카드 배치도, 암산도 뺐습니다. 대신 &lt;strong&gt;그림 없이도 화면이 움직이는 게임&lt;/strong&gt;으로 다시 채웠습니다.&lt;/p&gt;
&lt;p&gt;버린 두 개가 아깝진 않습니다. 두 번 만들어보고서야 &lt;strong&gt;제가 뭘 만들면 안 되는지&lt;/strong&gt; 알았으니까요. 아홉 개를 만드는 동안 몰랐던 걸, 열 번째를 버리면서 알았습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;버린 시제품 둘은 그대로 열어뒀습니다. 어디가 재미없는지 직접 확인해 보셔도 좋고요. 저는 두 번째가 그래도 좀 낫다고 생각하는데, 어느 쪽도 다시 켜고 싶진 않더군요.&lt;/p&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a class="link" href="https://junstellar.github.io/games/dice-yacht/" &gt;오늘의 주사위 (첫 번째)&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a class="link" href="https://junstellar.github.io/games/dice-push/" &gt;한 번 더 (두 번째)&lt;/a&gt;&lt;/strong&gt; · &lt;a class="link" href="https://junstellar.github.io/games/" &gt;AI 게임 랩 전체 보기&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>