はじめに
最近、ビーバーが街をつくる神ゲー『Timberborn』にどっぷりハマっています。
特に中盤以降、普通の水に混ざって流れてくる「汚水(Badwater)」の処理と、水門の管理パズルが最高に熱いゲームです。
あまりにもゲームのパラメータ設計がよくできているので、ちょっと本気の腕試し(技術の無駄遣い)として、「LLMを脳にして、水門を自律制御する自動治水システム」を構築してみました。
※なお、本記事は個人開発のプロトタイプ検証(PoC)であるため、具体的なソースコードやプロンプトの核心部(技術コア)の公開は割愛し、アイデアと「何が起きたか」のログを中心に共有します。
背景:公式が用意した「HTTPレバー」という名の開発元からの挑戦状
『Timberborn』は、2026年3月の正式版(1.0)への大型アップデートにより、ゲーム内でセンサーやリレーを用いた「自動化システム」が公式にサポートされました。
さらに驚くべきことに、開発元のMechanistryは、自動化カテゴリーの中に「HTTPレバー」と「HTTPアダプター」という、前代未聞の公式建物を追加したのです。
- HTTPアダプター: ゲーム内の信号状態をAPI(Webhook)経由で外部に公開する。
- HTTPレバー: 外部のソフトウェアからWeb API(HTTP POSTリクエスト)経由で、ゲーム内のレバーのON/OFFを直接操作できる。
公式が「localhostにエンドポイントを晒すから、エンジニアの皆さんは何か面白い使い方を見つけてね」と、APIを公式に解放している。この狂った仕様(最大級の賛辞)を見たとき、私の脳内に浮かぶ選択肢は一つしかありませんでした。
「この公式HTTPレバーの先に最新のLLM(Gemini API)を繋いだら、ゲームの枠を超えた『超絶インテリジェント自律統治AI』が爆誕するのでは?」
これが、今回の腕試しを始めたキッカケです。
システムの構成(泥臭い布陣)
ゲームから自動でデータを引っこ抜くにはHTTPアダプターの解禁が必要ですが、今回は面倒だったので、以下のような超軽量な「半自動(人間センサー型)」の布陣を組みました。
- 人間(私): 画面を見て、現在の状況(水位や水質)をテキスト入力する「センサー」役。
- Pythonスクリプト: 過去数件の会話だけを保持する「サマリー型ローリングメモリ」を実装。会話の肥大化によるトークン枯渇を防ぐセキュリティ弁。
- LLM(Gemini API): 与えられた状況から水門の開閉を判断する「脳(司令塔)」。
-
実行: LLMが最終行に出力した
COMMAND: LEVER1=...をPythonがパースし、ローカルのHTTPレバーへPOSTリクエストを飛ばしてゲーム内の水門を駆動。
やっていることは、Qiitaの初心者チュートリアルにある「チャットbotに正規表現を組み合わせただけ」のシンプルな仕組みです。
【見どころ】AIが叩き出した「判断」
システムを動かして数時間。手動で現在のゲームステータスを流し込み、AIに判断を委ねた瞬間に「鳥肌」が立ちました。
私が渡したデータは以下の3つだけです。
- 第1水門下流の流量: 0.86(都市側は今、そこそこ潤っている)
- 第2水門下流水質: 完全な汚水(水が流れておらず、作物が枯れる危機)
- お天気予報: しばらくは干ばつの恐れなし(水源のキャパには余裕あり)
人間側は「こうなったらこうしろ」という条件分岐(if文)は1行も書いていません。しかし、このバラバラな環境データをインプットされたLLMは、脳内で以下のような因果関係を組み立て、自発的に驚くべきトレードオフの最適化を行いました。
以下、実際のAI(ビバートンと名付けています)の思考プロセスです。
【AIの思考プロセス(抜粋)】
この状況を考えると、一番の課題は第2水門の下流が干上がってしまっていることです。
お天気予報から全体の水量が枯渇するリスクは極めて低く、第1水門側(都市側)には現在0.86の流量の余裕があります。ですので、緊急事態として思い切った判断をします。
まず、**第1水門を一時的に「ON」(閉門)**にします。都市には貯水施設があるため、少しの間なら大丈夫なはずです。一時的に都市への水をせき止めることで、その分の水圧をすべて、干上がってしまった第2水門の方へ流します。そして、**第2水門は「OFF」(開門)**のままにします。第1水門から流れ込んできた大量の綺麗な水を農業用地へドバドバと流し、その勢いで汚水ごと一気に押し流して水質を改善させます!
COMMAND: LEVER1=switch-on, LEVER2=switch-off
「全体のキャパには余裕がある」「都市側は今潤っている」という前提から、**『都市の水を一時的に止め、その水圧をすべて農業・汚水エリアへ全振りしてフラッシング(相殺)する』**という、まるで本物の副市長のような高度な政治的・戦略的判断を自律駆動で叩き出してきたのです。
裏側のコマンド出力も、見事に狙い通りに2本のレバーを個別制御(第1を閉じ、第2を開ける)していました。
結び:Timberborn、すごすぎる
ちょこちょこっと数時間で組んだだけのシンプルなAPI連携botでしたが、お題の組み合わせ次第で、ゲームの中に「本当にビーバーの命を背負って悩むAI」を誕生させることができました。
ただ、これが実現できた一番の理由は、LLMの賢さもさることながら、Timberbornの「水位、流量、水質、気象予報」というゲーム内のパラメータ設計が、現実のスマートシティの制御ロジックに耐えうるほど精緻(せいち)に作られているからに他なりません。
ゲームの懐の深さに、改めて驚かされた実験でした。
海外勢は部屋のランプと連動させて干ばつ時は実際に家に置いている赤ランプをつけて遊んだりしているようです。楽しみ方は発想次第でいくらでもありそうですね。
次はこの「人間センサー」のボトルネックを解消し、完全に人間が介在しない「完全自動化・自律駆動治水システム」へ拡張できないか、夜な夜なハックを続けようと思います。
ビーバーたちの明日に、栄光あれ!