ろじかるんるんものがたり

病人が特に何も書かない。無駄だからだ。

AI Ship 解説

ちょっと体調が悪く寝たいので早めに投稿。

AI Ship の話題で Discord の Stormworks JP サーバーが俄かに賑わっていたので、現在(v1.0.23)の AI Ship について簡単に調べました。
ミッションの Lua コード直接読んでるので細かい数値まで分かってしまうんですが、そこまで書くと完全に Spoiler なのでその辺りはぼかして書きます。細かい数字まで知りたい人は 500 行もないコードなので、自分で読んで調べてみてください。

11 月 28 日、Stormworks に AI Ship がリリースされました。experimental ブランチにも 11 月 21 日に実装されたばかりなので、出来立てほやほやもほやほやです。
store.steampowered.com
これは以前、Offical の Discord チャンネルで初めて行われた機能投票の結果を受けての物です"AI" と "path finding" の二つの投票先がありましたが、両方 AI Ship のためのものなので、リリースの速さも鑑みるに、ぶっちゃけ開発者が実装したかったんだと思います。以前 Stormworks の海は寂しいみたいなことどこかで言ってましたし…

まず AI Ship とはなんぞという話なのですが、AI Ship という呼称は大分大袈裟で、決められた航路を自律して航行する、NPC 船とでも呼ぶべき物です。経路計算は別として、制御してるのはたかだか 500 行の Lua プログラムですからね。
目の前に他の船が現れたりしても避けようとしたりはしません。他の船が航路に現れようと、海が荒れようと、ただただ決められた航路を進もうとします。普通に環境次第で転覆する可能性もあります。航路自体は、座礁したりしないよう安全な航路が計算されています。
ざっくりまとめると、一般の人が AI という言葉から受けるであろう印象に比べると、そこまで賢いものではないです。NPC 船です。
ただ、API 自体は公開されているため、ミッション用の Lua プログラムと Vehicle を自作すれば、デフォルトの AI Ship よりも高度な自動航行を行う船を作ることは可能です。

ここからはデフォルトのプレイリストに含まれている AI Ship の挙動についての詳細です。
ミッションプレイリストに AI Ship が含まれている場合、AI Ship が有効になります。有効な場合、ワールド生成時に 250 隻程度の船が海上のランダムな位置に Spawn します。250 隻というと多い気がしますが、海は広いな大きいななので、意外と見つからなかったりもします。運です。
ランダムな位置、といってもさすがに北極とかはなくて、ある程度範囲が決まっています。ソーヤー島を中心に、ソーヤー島の端から東西に数キロ、南北には十数キロ、くらいです。
話は変わりますが、ソーヤー島と北極の間に中継地点的な固定島があってもいいと思うんですが、どうなんでしょうね…
話を戻します。Spawn した地点から、これまたランダムな範囲内に目的地が設定され、そこに向かって航行を開始します。複数の船の航路や目標地点が運悪く重なってしまった場合…?事故は起こるものさ。
目標地点に到達すると 10 分間停止した後、次の目的地が設定され航行を再開します。

さて、普通に 250 隻以上の船が普通に動いていると当然滅茶苦茶ゲームが重くなります。AI Ship に限りませんが、プレイヤーから一定以上離れている Vehicle(や NPC)は、とりあえずいないものとして処理されます。
その間も AI Ship の「位置だけ」は一定時間毎に動き続けるようになっています。といっても船の性能に関わらず、一定の速度で航行している前提で位置情報が書き変えられているだけなのですが…この間に目的地に着いた場合も、矢張り 10 分間停止した後、次の目的地が設定され航行を再開…するのですが、ここの処理にバグがあったので報告しておきました。

AI Ship は無限のディーゼル燃料と電力を供給されます。鹵獲すればディーゼル燃料と電力を無限に得ることができますね!現在のところジェットエンジンを使った AI Ship は存在しません。
今のところ自分がゲームをプレイして見つけた AI Ship は全てモーターを動力としていました。ディーゼルエンジンは、ワールドのシード値によってはソーヤー島付近に温かい気候のエリアが出来たりする関係で炎上のリスクを抱えているため、それを避けたのかもしれません。AI Ship で使われている船は Steam ワークショップで公開されている船から選ばれています。それら全てが、温かい気候でも問題なく航行できるかを調べるのは大変だったのでしょう。
Steam ワークショップには色々な作品があります。結果として、AI Ship としてはちょっと問題のある船が採用されてしまっていたりもするんですが…まあ、その内こっそり無くなってると思います。

といったところで簡単にですが AI Ship についての解説でした。AI Ship のために API に undocumented な変更が入ってたりとか、細かい話も含めればまだまだ色々あるんですが、その辺は気になったら自分で調べてねということで…

明日は Liber_00 さんです。タキシング中とのこと。大丈夫かしら。