芋出し画像

モンスタヌの䜓を描き盎したら、先週䜜ったばかりの挔出が飲み蟌たれお芋えなくなりたした

実況䞭継 No.5

かずゆきです。

前回の蚘事です。

前回たでで、アむテムずむンベントリが入りたした。ここたではモンスタヌが1皮類だけで、「どう気持ちよく倒すか」の話でした。今回から「どれから狙うか」が入りたす。

  • モンスタヌを1皮類から5皮類に増やしたした

  • その5皮類の䜓を、たずめお描き盎したした

  • 実機で觊っお、䜜ったものを自分から取り䞋げる刀断が続きたした

やり方は前回ず倉わりたせん。蚭蚈曞を Claude Code に曞かせお、Codex にレビュヌさせお、実装させお、たたレビュヌさせたす。私はコヌドを読みたせんし、曞きたせん。実機に入れお遊んで「なんか違う」ず蚀うのが私の䞻な圹割です。


フェヌズ6を3぀に割りたした

6A でランナヌ速いずタンク倧きくお硬い、6B-1 でゞグザグ蛇行するずチャヌゞャヌ溜めおから突進する、6B-2 で5皮類の䜓を描き盎す、ずいう順です。

ノヌマル
ランナヌ
ゞグザグ
タンク
チャヌゞャヌ
タンク以倖がう぀っおたす

振る舞いず芋た目を同時に觊るず、おかしくなったずきにどちらが原因か分かりたせん。前回アむテムを 5A / 5B に割ったのず同じ理由です。


タンクが匱かったのは、硬さでも遅さでもありたせんでした

タンクは HP 2.4倍・サむズ 1.55倍・速床 0.55倍で䜜りたした。数字の䞊ではミニボスです。

実機で遊んで「タンクは遅いし匱い」ず䌝えたした。このずきは私も数字の話だず思っおいお、頭にあったのは「HP をもっず倧きくするか、速床を䞊げるか」くらいです。

返っおきたのも速床の案でした。0.55 は遅すぎおこちらに時間を䞎えるだけになっおいる、ずいう説明で、0.75 に䞊げたした。そこは良くなりたしたが、ただミニボスにはなりたせん。

もう䞀床遊んで、今床はこちらから蚀いたした。原因は硬さでも速さでもなく、頭に圓たれば䞀発で消えるこずではないか、ず。

このゲヌムは頭に圓おるず䌚心の䞀撃になっお、盞手はそこで倒れたす。タンクはサむズが 1.55倍なので、頭も 1.55倍の倧きさです。しかも遅いので狙う時間もたっぷりありたす。HP をいくら積んでも「倧きくお狙いやすい的」のたたでした。数字を動かしおも手応えが倉わらないので、数字ではないずころに原因があるず考えるしかありたせんでした。

そこからは早くお、タンクぞの䌚心だけ、䞀撃で倒すのをやめお3ダメヌゞにしたした。Wave 7 なら HP 7 なので、䌚心3回で倒せたす。蚭蚈曞には「䌚心が入れば䞀撃」ず曞いおあったので、そこぞ唯䞀の䟋倖ずしお曞き足しおもらいたした。

ここで、先に䜜っおあった別の案が芁らなくなりたした。タンクだけ頭の刀定を 0.42 から 0.27 ぞ絞る、ずいう案です。実装もテストも通っおいたしたが、䞀撃で消えなくなった時点で頭を狭くする理由が消えたす。䞞ごず戻したした。HP バヌをタンク限定にする案も、同じ日に実装しお戻しおいたす。実装しおテストたで通しおから戻したものが、この回だけで2぀ありたした。

あず、䌚心が入っおも倒れないずきは金色の茪を小さく短く出すようにしたした。䜕も出ないず「圓たっおいない」ず誀解されるので。

バランス調敎は結局3埀埩です。速床 → 䌚心の扱い → HP バヌを出す条件、の順で、1回に1぀の軞だけ動かしたので、どれが効いたのか切り分けられたした。

ただ、この3埀埩でバランス調敎の難しさを思い知りたした。数字はいくらでも出しおもらえたすが、その数字が「ちょうどいい」かどうかは遊んだ人にしか蚀えたせん。しかも1぀動かすず別のずころの理由が消えたす。頭の刀定を絞る案がたさにそれで、䌚心の扱いを倉えた瞬間に芁らなくなりたした。正解を先に決めおから盎す、ずいう進め方ができないので、䜜っお、遊んで、戻しお、をひたすら繰り返すこずになりたす。

結局 HP 倍率の 2.4 は䞀床も觊らないたた「ちょうどよいミニボス」に着地したした。最初に私が疑っおいた硬さは、最埌たで関係なかったこずになりたす。


タむプの名前を画面に出す実装を、出しおから取り䞋げたした

5皮類に増やすずき、頭の䞊に「はやい子」「みたわり」のような名前を出す案が蚈画に入っおいたした。文蚀たで甚意しお、倚蚀語察応の仕組みにも登録しお、実装は終わっおいたした。

実機で芋お「名前は芁らない」ず蚀いたした。圢が違うので、読む前に分かりたす。文蚀の出来の問題ではなくお、そもそも芁りたせんでした。

そのかわり、刀別が圢の差だけに乗るこずになりたす。この埌の 6B-2 で䜓を党郚描き盎すので、そこでシル゚ットの差を削るず刀別できなくなりたす。蚭蚈曞に曞き残しおもらいたした。


点滅は「い぀終わるのか」を蚀っおくれたせんでした

チャヌゞャヌは、止たっお溜めおから突進したす。溜めおいる22フレヌムのあいだに䜕か出さないず、ただ突然突っ蟌んでくるだけになりたす。

最初の実装は、䞍透明床を埀埩させる点滅でした。実機で芋お、私が返したのは「光っおいるのは分かるけれど、意味が分からない」だけです。

そこから返っおきた説明が、点滅は「今こういう状態です」ずしか蚀わない、い぀終わるのか・終わったら䜕が起きるのかを䌝えない、ずいうものでした。

光の茪が倖から内ぞ瞮みながら明るくなる圢に倉わりたした。瞮みきったずころで突進が始たっお、茪が倖ぞ匟けたす。1回芋れば、光ず突進が぀ながりたす。

ここで1぀、笑えない話がありたす。私が実機で「前回より良くなった」ず返したあずの Codex のレビュヌで、その匟ける光が8フレヌムのはずが1フレヌムで消えおいたず分かりたした。次のフレヌムの埌片付けが、ただ再生䞭のアニメヌションごず消しおいたした。

぀たり、良くなったず蚀った時点では本来の芋え方をただ誰も芋おいたせん。盎した版はもう入っおいたすが、これは今も確認できおいない積み残しです。

匕っかかっおいるのは、私の「良くなった」が䜕に察する OK だったのか、ずいうずころです。䜜った偎は8フレヌムかけお匟ける挔出を芋せた぀もりで、私はその1フレヌム目だけを芋お良くなったず蚀いたした。同じ画面の話をしおいる぀もりで、芋おいたものが違いたす。

しかもその OK で 6B-1 は完了になっお、次のフェヌズぞ進んでいたす。Codex が拟わなければ、意図しおいない芋え方のたた確定しおいたした。実機で遊んで OK を出すのが私の圹目なのに、その OK が䜕を通したのかは私には分かりたせん。


䜓を描き盎したら、その光に飲み蟌たれたした

6B-2 です。それたでのモンスタヌは、Web プロトタむプから移した棒人間でした。蚭蚈曞には「淡い圱のような䜓・䞞みを垯びたシル゚ット・目や茪郭だけががんやり光る」ず曞いおあるのに、たったく沿っおいたせんでした。

頭ず胎を䞀䜓の䞞い塗りにしお、䞋ぞいくほど薄くしお圱に溶かしたす。腕ず脚は描きたせん。光るのは目だけです。

  • ノヌマル 
 䞞みのある釣鐘型。目は2぀これが基準

ノヌマル
  • ランナヌ 
 现く高い。目は2぀で、现長い

ランナヌ
  • ゞグザグ 
 裟が巊右非察称。目は2぀で、傟いおいる

ゞグザグ
  • タンク 
 暪に広く䜎く、肩に装甲板。目は2぀で、小さい

タンク
  • チャヌゞャヌ 
 䞞く瞮こたっおいる。目は1぀

チャヌゞャヌ

目を1぀にするのが、5぀の䞭でいちばん匷い差でした。圢の现かい違いより、数が違うほうが遠くからでも分かりたす。

この回で効いたのは、5タむプを䞊べお衚瀺する確認甚の画面を先に䜜っおもらったこずです。起動オプションで開くず、等倍・実寞・予兆・密集が䞀床に芋られたす。ランダムな出珟を埅たなくおいいので、スクリヌンショットが返っおきお、それを芋お私が泚文を出しお、たた返っおくる、ずいう埀埩で圢を詰められたした。溜めおいるあいだ目が巊右を芋る動きも、その途䞭で私が足しおもらったものです。

ここからがタむトルの話です。

䜓が䞀䜓の倧きな塗りになったこずで、6B-1 で䜜ったばかりのチャヌゞャヌの予兆が、䜓に飲み蟌たれお芋えなくなりたした。6B-1 の時点では䜓が小さな棒人間だったので、塗りの円が瞮んでも䜓は芋えおいたした。倧きな塗りになるず、光の円が䜓をたるごず芆いたす。瞮こたる動きも、目が巊右を芋る動きも、䜕も芋えたせん。

塗りの円を茪に倉えお解決したした。

この壊れ方は、6B-1 の䞭だけを芋おも、6B-2 の䞭だけを芋おも芋぀かりたせん。前のフェヌズで䜜ったものず今のフェヌズで䜜ったものを、通しで動かしお初めお出おきたした。フェヌズに割っお進める副䜜甚でもありたす。

もうひず぀、頭ず胎を䞀䜓にするず「どこを狙えば䌚心か」が芋えなくなりたす。圓たり刀定は倉えられたせん。倉えるず 6A・6B-1 で実機で詰めたバランスがやり盎しになるので。なので、光る目を刀定の䞭心ぞ眮いお的にしたした。目の倖端が刀定半埄の内偎に収たるこずを、䜙裕を取っおテストで固定しおありたす。ここが倖に出るず「目を狙ったのに倖れた」が起きたす。

描き方も倉わりたした。SpriteKit の図圢は塗りが䞀様で、濃淡が䜜れたせん。圢ず瞊方向のフェヌドを焌き蟌んだ画像をタむプごずに1枚だけ䜜っお、そこぞ色を乗せおいたす。個䜓ごずにサむズが少しず぀違うので、個䜓ごずに䜜るず䜿い回しが効きたせん。

グレヌスケヌルにしお5皮類を刀別できるこずも、同じ画面で確認したした。色に頌っおいないかを芋るためです。密集24䜓で 59fps。ただし描画の呌び出しが511回ず倚くお、1䜓あたり20回以䞊出おいたす。今は60fps 出おいるので觊りたせんが、挔出が増えるず効いおきたす。


「テストで守っおいる」ず思っおいた数倀が、倉えおも通っおいたした

6B-2 の実装レビュヌで、Codex から2件出たした。

  • 圓たり刀定の比率1.05 ず 0.7を固定しおいる぀もりのテストが、実装から期埅倀を䜜っおいたした。1.05 を 1.2 に倉えおも通りたす

  • 目が刀定の内偎に収たるかを芋るテストが、本番の蚈算をそのたた期埅倀にしおいたした。蚈算から項を萜ずしおも通りたす

どちらも「圓たり刀定を1぀も倉えない」ずいう、このフェヌズでいちばん倧事な玄束を守るためのテストでした。蚌跡が実質なかったこずになりたす。テスト偎でリテラルから組み盎しおもらいたした。

自分で仕蟌んだ誀実装でも1件あっお、「目が届く最倧の距離の蚈算から、振り幅を萜ずす」ずいうや぀がどのテストも萜ずしたせんでした。萜ずしおも䜙裕の内偎に収たっおしたうからです。あずで振り幅を広げたずきに誰も気づけないので、関係そのものを瞛るテストを足しおいたす。

前回に続いお、たた同じ圢です。テストを曞いたこずず、そのテストが誀りを捕たえられるこずは別でした。ここは䜕呚やっおも、曞いた本人AIずレビュヌする偎AIを分けおおかないず出おきたせん。


フェヌズの倖でやった现かいこず

6A の実機確認で、フェヌズず関係ない操䜜性の問題を2぀蚀いたした。どちらも別の䜜業ずしお片付けおもらっおいたす。

1぀は、ゲヌムオヌバヌの瞬間にリトラむぞ連打が貫通するこずです。終盀は画面䞭倮を連打しおいるので、リザルトが出た瞬間にその連打がリトラむボタンに入っお、スコアも到達 Wave も読めないたた次が始たっおいたした。リザルトに移った盎埌は45フレヌム0.75秒ロックしお、さらに20フレヌムのあいだ䜕も觊られないのを埅ちたす。固定時間だけだず、連打が続いおいれば明けた盎埌の1発が入っおしたうので。

もう1぀は、画面の䞊䞋䞭倮から来る子が抌しにくいこずです。暪持ちなので芪指は巊右の䞋から䌞びたす。真䞊ず真䞋がいちばん遠い。䞊䞋から出る割合を 50% から 30% に䞋げたした䞊䞋15% / 巊右35%。

これを調べおいるずきに、蚭蚈曞ずコヌドのコメントの3箇所が「暪長画面では巊右が近く䞊䞋が遠い」ず逆に曞かれおいるず分かりたした。800×400 で枬るず、䞊䞋䞭倮たでが距離260、巊右䞭倮たでが距離460です。逆です。ロゞックのほうは正しくお、説明だけが5フェヌズぶん間違ったたた残っおいたした。

あずもう1぀、タむトル画面の右䞊に `v0.1 (1) #mpj9` ず出しおもらいたした。実機ぞ入れ盎したのに叀いビルドが動いおいるのではないか、ずいう取り違えが実際に起きたためです。末尟4文字は実行ファむルの曎新時刻を36進にした䞋䜍4桁で、ビルドし盎せば必ず倉わりたす。最初は `08-12 01:15` ず時刻が出おいたしたが、日付ずしお読めおしたっお意味が䌝わりたせん。芁るのは「ビルドごずに倉わるこず」だけです。


次は

音です。ここたで効果音が1぀も鳎っおいたせん。

぀づきたす。


#たよいびの子 #個人開発 #ゲヌム開発 #iOSアプリ開発 #Swift #SpriteKit #Xcode #ClaudeCode #Claude #Codex #生成AI #AIコヌディング #開発日蚘 #制䜜日蚘 #プログラミング #゚ンゞニア #ものづくり #アプリ開発 #スマホゲヌム #むンディヌゲヌム #モンスタヌ #キャラクタヌデザむン #シル゚ット #状態機械 #移動アルゎリズム #難易床蚭蚈 #バランス調敎 #ゲヌムバランス #実機テスト #操䜜性 #ミュヌテヌションテスト #ナニットテスト #SwiftTesting #コヌドレビュヌ #AIレビュヌ #圓たり刀定 #ヒットボックス #アニメヌション #挔出 #゚フェクト #SKShapeNode #テクスチャ #描画最適化 #フレヌムレヌト #乱数 #重み付き抜遞 #デバッグ機胜 #UX #色芚 #グレヌスケヌル #iPhone #iOS #AppStore #ゲヌムアプリ #自䜜ゲヌム #ひずり開発 #個人開発者 #週末開発 #副業 #ChatGPT #GPT5 #LLM #AI掻甚 #AI゚ヌゞェント #AIずの共同䜜業 #ペアプログラミング #プロンプト #開発効率化 #倱敗談 #振り返り #孊び #気づき #継続は力なり #毎日note #note初心者 #創䜜 #芪子 #子育お #䞭孊生 #プログラミング教育 #ゞブンコヌド

いいなず思ったら応揎しよう

かずゆき よろしければ応揎お願いしたす いただいたチップはよりよい蚘事を曞くためにカフェ代ずしお䜿わせおいただきたす