<?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/%EB%82%9A%EC%8B%9C%EA%B2%8C%EC%9E%84/</link><description>Recent content in 낚시게임 on To the Moon</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Mon, 10 Aug 2026 09:00:00 +0900</lastBuildDate><atom:link href="https://junstellar.github.io/tags/%EB%82%9A%EC%8B%9C%EA%B2%8C%EC%9E%84/index.xml" rel="self" type="application/rss+xml"/><item><title>AI로 게임 만들기 #8 — 심해 1,200m까지 내려가서 물고기 27종 도감 채우기 (공개빌드 #8)</title><link>https://junstellar.github.io/p/ai-game-lab-build-8/</link><pubDate>Mon, 10 Aug 2026 09:00:00 +0900</pubDate><guid>https://junstellar.github.io/p/ai-game-lab-build-8/</guid><description>&lt;img src="https://junstellar.github.io/p/ai-game-lab-build-8/deep-fishing-poster.webp" alt="Featured image of post AI로 게임 만들기 #8 — 심해 1,200m까지 내려가서 물고기 27종 도감 채우기 (공개빌드 #8)" /&gt;&lt;p&gt;&lt;a class="link" href="https://junstellar.github.io/p/ai-game-lab-build-7/" &gt;지난 편&lt;/a&gt;의 조차장에 이어, 여덟 번째 게임은 &lt;strong&gt;심해 낚시&lt;/strong&gt;입니다. 수면에서 &lt;strong&gt;1,200m 심연까지&lt;/strong&gt; 내려가 물고기를 낚고, &lt;strong&gt;27종 도감&lt;/strong&gt;을 채우는 게임이에요.&lt;/p&gt;
&lt;p&gt;게임 랩에 처음 생긴 **&amp;ldquo;모으는 재미&amp;rdquo;**입니다. 앞의 게임들은 판이 끝나면 기록만 남는데, 이건 잡은 물고기가 &lt;strong&gt;영구히 쌓여요.&lt;/strong&gt;&lt;/p&gt;
&lt;video autoplay loop muted playsinline preload="metadata" poster="/p/ai-game-lab-build-8/deep-fishing-poster.webp" style="width:100%;max-width:420px;display:block;margin:1.2rem auto;border-radius:14px;box-shadow:0 6px 24px rgba(0,0,0,.25)"&gt;
 &lt;source src="https://junstellar.github.io/p/ai-game-lab-build-8/deep-fishing-play.mp4" type="video/mp4"&gt;
&lt;/video&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a class="link" href="https://junstellar.github.io/games/deep-fishing/" &gt;심해 낚시 직접 하러 가기&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="어떤-게임이냐면"&gt;어떤 게임이냐면
&lt;/h2&gt;&lt;p&gt;탭 세 번이면 한 마리입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;① &lt;strong&gt;깊이 정하기&lt;/strong&gt; — 움직이는 막대를 탭. 깊을수록 희귀하고 어렵습니다&lt;/li&gt;
&lt;li&gt;② &lt;strong&gt;챔질&lt;/strong&gt; — 물고기가 다가와 미끼를 &lt;strong&gt;툭툭 건드리다가&lt;/strong&gt;(가짜) &lt;strong&gt;확 무는 순간&lt;/strong&gt; 탭&lt;/li&gt;
&lt;li&gt;③ &lt;strong&gt;파이팅&lt;/strong&gt; — 누르면 감기고, 떼면 풀립니다. &lt;strong&gt;장력을 초록 구간에&lt;/strong&gt; 두세요&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;한 판은 캐스팅 12번. &lt;strong&gt;멸치부터 🐉크라켄까지 27종&lt;/strong&gt;이 있고, 가운데를 잘 유지할수록 &lt;strong&gt;정확도 보너스&lt;/strong&gt;(최대 +85%)가 붙습니다.&lt;/p&gt;
&lt;p&gt;&lt;img alt="도감 — 잡은 물고기는 컬러, 못 잡은 건 실루엣" class="gallery-image" data-flex-basis="138px" data-flex-grow="57" height="1252" 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-8/deep-fishing-dex.webp" width="720"&gt;&lt;/p&gt;
&lt;h2 id="물고기-27종은-comfyui로-직접-그렸다"&gt;물고기 27종은 ComfyUI로 직접 그렸다
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://junstellar.github.io/p/claude-local-image-generation/" &gt;예전에 노트북에 설치해둔 &lt;strong&gt;ComfyUI&lt;/strong&gt;&lt;/a&gt;로 27종을 전부 뽑았습니다. 이번에도 생성이 끝이 아니었어요 — 고래상어는 흰 배경 박스를 달고 나오고, 가오리는 모래바닥까지 딸려왔고, 방어는 두 마리가 겹쳐 나왔습니다.&lt;/p&gt;
&lt;p&gt;배경색을 자동 감지해 투명 처리하고, 물체에 딱 맞게 다시 자르고, 그래도 안 되는 건 프롬프트를 바꿔 다시 뽑았어요. &lt;strong&gt;ComfyUI가 그려준 걸 게임에 맞게 다듬는 게 절반의 일&lt;/strong&gt;이라는 게 이번에도 확인됐습니다.&lt;/p&gt;
&lt;h2 id="첫-버전은-허공에-대고-챔질하는-것-같았다"&gt;첫 버전은 허공에 대고 챔질하는 것 같았다
&lt;/h2&gt;&lt;p&gt;일단 돌아가게 만들어놓고 직접 해봤는데, 이상했습니다. 화면엔 &lt;strong&gt;줄 하나만 덩그러니&lt;/strong&gt; 있고, 아무것도 안 보이는데 &amp;ldquo;지금 탭!&amp;ldquo;이라는 글자만 떴거든요. 뭘 보고 채라는 건지 알 수가 없었어요.&lt;/p&gt;
&lt;p&gt;그래서 &lt;strong&gt;물고기를 실제로 보여주기로&lt;/strong&gt; 했습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;물고기가 &lt;strong&gt;옆에서 헤엄쳐 다가오고&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;미끼를 &lt;strong&gt;툭툭 건드립니다&lt;/strong&gt;(찌가 살짝 흔들림 = 가짜 입질)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;확 무는 순간&lt;/strong&gt; 찌가 쑥 들어가고 물보라가 터집니다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이러니 &amp;ldquo;너무 일찍 채면 실패&amp;quot;라는 규칙이 &lt;strong&gt;눈으로 납득되는 규칙&lt;/strong&gt;이 됐어요. 가짜와 진짜를 구분하는 게 실력이 되고요.&lt;/p&gt;
&lt;h2 id="물고기에-검은-배경이-붙은-것-같았는데-재보니-아니었다"&gt;물고기에 검은 배경이 붙은 것 같았는데, 재보니 아니었다
&lt;/h2&gt;&lt;p&gt;계속 해보니 어떤 물고기는 &lt;strong&gt;검은 배경이 붙어 있는 것처럼&lt;/strong&gt; 보였습니다. 배경 제거가 덜 됐나 싶었죠. 그래서 27종을 전부 계측해봤습니다.&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;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;127&lt;/td&gt;
					&lt;td&gt;130&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;흡혈오징어&lt;/td&gt;
					&lt;td&gt;45&lt;/td&gt;
					&lt;td&gt;20&lt;/td&gt;
					&lt;td&gt;25&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;심해는 물 밝기가 20 아래인데 심해어도 어둡습니다. &lt;strong&gt;검은 배경에 검은 물체&lt;/strong&gt;였던 거죠.&lt;/p&gt;
&lt;p&gt;그래서 &lt;strong&gt;바늘에 심해 랜턴&lt;/strong&gt;을 달았습니다. 미끼 주변을 비추니 물고기가 보이고, 심해 낚시 분위기도 살았어요. 물고기 외곽에 은은한 발광 테두리도 더했고요.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;감으로 스프라이트를 다시 뽑았으면 시간만 날렸을 겁니다. 재보니 문제는 완전히 다른 곳에 있었어요.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="줄은-그대로인데-물고기만-올라갔다"&gt;줄은 그대로인데 물고기만 올라갔다
&lt;/h2&gt;&lt;p&gt;끌어올릴 때 뭔가 따로 노는 느낌이라 코드를 열어봤더니, 줄 끝이 화면 중앙에 &lt;strong&gt;고정&lt;/strong&gt;돼 있었습니다. 물고기만 위로 움직이니 둘이 분리돼 보인 거예요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;줄 끝을 &lt;strong&gt;물고기 입에 고정&lt;/strong&gt;했습니다. 올라오면 줄도 같이 짧아져요&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;장력에 따라 줄 모양이 변합니다&lt;/strong&gt; — 팽팽하면 직선, 느슨하면 축 처진 곡선, 한계 근처면 &lt;strong&gt;붉게 굵어짐&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;끌어올린 만큼 &lt;strong&gt;깊이 숫자도 줄고&lt;/strong&gt;, 덤으로 &lt;strong&gt;물이 밝아집니다&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="잡은 순간 — 정확도 보너스까지" class="gallery-image" data-flex-basis="138px" data-flex-grow="57" height="1252" 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-8/deep-fishing-catch.webp" width="720"&gt;&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;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;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;curDepth&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;targetDepth&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mf"&gt;0.012&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// 항상 1.4초
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;100m든 1,200m든 하강 시간이 똑같았습니다.&lt;/strong&gt; 심해 낚시인데 심해로 가는 느낌이 0이었죠. 깊이 비례 하강(최대 3.5초)으로 바꾸고, 배경이 위로 흐르게 하고, &lt;strong&gt;&lt;code&gt;200m 황혼대&lt;/code&gt; &lt;code&gt;500m 심해층&lt;/code&gt; &lt;code&gt;900m 심연&lt;/code&gt;&lt;/strong&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="164px" data-flex-grow="68" height="1050" 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-8/deep-fishing-descent.webp" width="720"&gt;&lt;/p&gt;
&lt;h2 id="크기가-무게를-말해준다"&gt;크기가 무게를 말해준다
&lt;/h2&gt;&lt;p&gt;물고기 크기를 &lt;strong&gt;희귀도&lt;/strong&gt; 기준으로 잡았더니 &lt;strong&gt;1kg 복어가 900kg 고래상어만 하게&lt;/strong&gt; 보였습니다. 무게(로그) 기준으로 바꾸고, &lt;strong&gt;입질 전에 무게를 미리 굴려서&lt;/strong&gt; 보이는 크기와 실제 잡는 무게를 일치시켰어요. 이제 화면만 봐도 대물인지 잔챙이인지 압니다.&lt;/p&gt;
&lt;h2 id="밀당을-넣었다가-게임을-망칠-뻔했다"&gt;밀당을 넣었다가 게임을 망칠 뻔했다
&lt;/h2&gt;&lt;p&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;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;83%&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;33%&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;p&gt;이번에도 &lt;strong&gt;&amp;ldquo;재미있을 것 같아서&amp;rdquo; 넣은 기능이 게임을 망가뜨릴 뻔한 걸 숫자가 잡아줬습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="이제-게임-랩이-8개"&gt;이제 게임 랩이 8개
&lt;/h2&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;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;🎨&lt;/td&gt;
					&lt;td&gt;&lt;a class="link" href="https://junstellar.github.io/games/guess-image/" &gt;AI 그림 맞히기&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;머리 (퀴즈)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🟩&lt;/td&gt;
					&lt;td&gt;&lt;a class="link" href="https://junstellar.github.io/games/hangul-word/" &gt;한글 단어 맞히기&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;습관 (데일리)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🍰&lt;/td&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;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🕹️&lt;/td&gt;
					&lt;td&gt;&lt;a class="link" href="https://junstellar.github.io/games/dodge/" &gt;낙하 회피&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;반사신경 (액션)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🗑️&lt;/td&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;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🪐&lt;/td&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;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🚂&lt;/td&gt;
					&lt;td&gt;&lt;a class="link" href="https://junstellar.github.io/games/shunting/" &gt;조차장&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;논리 (3D 퍼즐)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;🎣&lt;/td&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;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="이번-편에서-배운-것"&gt;이번 편에서 배운 것
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&amp;ldquo;뭔가 어색하다&amp;quot;는 느낌은 그 자체로는 정보가 아닙니다. 하지만 그 아래엔 항상 구체적인 원인이 있어요.&lt;/strong&gt; 이번엔 세 번에 걸쳐 파고들었고, 그때마다 코드에서 원인을 찾았습니다 — 회전이 없었고, 하강 시간이 고정이었고, 줄 끝 좌표가 고정이었죠. 전부 &lt;strong&gt;한두 줄짜리 원인&lt;/strong&gt;이었습니다.&lt;/p&gt;
&lt;p&gt;그리고 한 번은 &lt;strong&gt;제가 짚은 원인이 틀렸어요.&lt;/strong&gt; &amp;ldquo;배경 제거가 실패했나?&amp;rdquo; 싶었는데 재보니 대비 문제였습니다. 고치기 전에 재보는 게 훨씬 빨랐습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class="link" href="https://junstellar.github.io/games/deep-fishing/" &gt;심해 낚시 한 판&lt;/a&gt;&lt;/strong&gt; 해보시고 몇 종이나 잡았는지 알려주세요. 저는 아직 &lt;strong&gt;크라켄&lt;/strong&gt;을 못 봤습니다. 🐉&lt;/p&gt;
&lt;p&gt;&lt;em&gt;다음 편엔 아홉 번째 게임을 들고 오겠습니다.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>