2026.09.23 泊まれる場所4,223 立ち寄りスポット59,693 営業中を確認したキャンプ場1,005 note を読む

提案を一つ足しただけで街が壊れた。優先度の順番がすべてだった

上げても下げても、どちらかの機能が犠牲になった。

日本進化シミュレーション第11回 / 全17回目次

AIに、離れた町同士を街道でつなぐ提案を追加した。
機能としては単純で、僕としては既存の「何を提案するか」というリストに、項目を一つ足しただけのつもりだった。

ところが動かしてみると、商業ゾーンが1マスも増えなくなった。
商業の需要は上限いっぱいまで積み上がっているのに、AIはずっと街道ばかり作り続けている。

優先度という数字ひとつで、全体の挙動が決まる

このAIは、複数の提案候補にそれぞれ優先度の数字を付けて、一番高いものから実行する、という仕組みで動いている。
街道の提案を足すとき、それなりに大事な機能だろうと思って、ゾーン拡張の提案より高い優先度を付けた。

これが良くなかった。
街道の提案は、条件さえ揃えば毎ターン顔を出す。
優先度が上なら、毎回それが選ばれて、ゾーン拡張の番が永遠に回ってこない。
機能としては正しく動いているのに、他の全部を握りつぶしてしまっていた。

下げれば直るかというと、そうでもなかった

それなら優先度を下げればいいと考えて、思い切って全ゾーン拡張より下まで下げてみた。
今度は街道がほとんど作られなくなり、道路網が建物にぐるりと囲まれて身動きが取れなくなった。

行き場を失ったAIは、孤立した1マスだけの道路をあちこちに落とすようになり、最終的に一つの町だったはずのものが、10個ほどの断片に分裂してしまった。
上げても下げても、どちらかの機能が犠牲になる。
単純な綱引きでは解決しない問題だった。

「役割を分ける」ことで折り合いをつけた

最終的にたどり着いたのは、優先度をひとつの数字で調整するのではなく、目的の違う提案を2つ用意する、という方法だった。

街道そのものの提案は、全ゾーン拡張より低い優先度に固定する。
これで、通常時はゾーン拡張が優先され、商業も工業もちゃんと育つ。

そのうえで、もう一つ「道路の総量が建物の数の6割を切ったら、全ゾーン拡張より高い優先度で道を通す」という別の提案を足した。
普段は出番が無く、道路網が本当に痩せてきた時だけ発動する、緊急用の提案という位置づけだ。

優先度の調整は、想像より繊細な作業だった

1つの数字を上げ下げするだけの単純な話だと思っていたが、実際にはそうではなかった。
どちらに転んでも別の何かが壊れる、という状況で、数字の綱引きではなく、条件そのものを分けるという発想の転換が必要だった。

提案を一つ足すだけのつもりが、結果的にAI全体の優先順位の設計を見直すことになった。
機能を追加するとき、その機能単体の正しさだけでなく、既存の全部と並んだときにどう振る舞うかまで考える必要があるのだと、身をもって学んだ。

ゲームを1本作るときの進め方を、noteにまとめています(書いているのは私です)。
noteで読む

まる子パパ

まる子パパ

会社員。受託開発のエンジニアを15年以上続けていて、その前は寿司職人・長距離運転手・農業。 技術ブログは、キャンプの合間に踏んだバグと、AI・Web開発の運用の失敗を書いています。 このサイト自体が、開発に携わっているCMS「コンテナ」の稼働中の実例です。 このサイトについて / 小さな自動化の相談

—

ほかにも書いています

受託・note・スタンプ

※受託の相談とnoteは、運営者が個人で受けている・書いているものです。

技術ブログ一覧へ戻る