2022/8/3 水曜日

■ ARKのマルチサーバー構築の話

Filed under: PC,ゲーム — inor @ 17:15:34

ARKを自前のサーバーで動かすときに、1台では処理能力とメモリ容量の制限で動かせるマップ数にすぐ限界が来るため、複数のサーバーをリンクして動かすといいのですがそのノウハウをまとめているところがあまりないので、自分がやっていた方法を軽く書きます。

※ Linuxでマップの単独起動はできて公開もできるくらいの知識がある人向けですが、win版サーバープログラムでも理屈は同じなのでできるはず。

サーバーは小型BOX PCにメインメモリ 32GBを載せたものが2台で身内向けに1台につき3マップで6マップ運用していました。

オベリスクやトランスミッターからのアイテムを持ったままでのサーバー移動は自由にできて、それなりに快適に遊べるものになっていたと思います。

※ メインメモリ32GBのサーバー1台につき、1マップごとに8GBくらい必要なので3マップが現実的なところじゃないでしょうか?

まずマルチマップで行き来しながら遊びたいときに重要なのがグループ内マップで共通のクラスターid。

マップごとの起動オプションに -clusterid=<任意の暗号キーワード> を与えます。

これを入れると同じPC上で動いている同じclusteridのマップでのオベリスクなどでのサーバー間移動ができるようになります。

※ 複数のマップを起動するときにハマりやすいのは、Game port、Raw UDP port、Query port、RCON portの被りです。全部違うものを与えましょう。セーブデータのフォルダも分けておいたほうが無難です。

ARKのサーバー移動の仕様として、移動用のセーブデータのファイルを作られて新しいマップでそれを参照して読み込まれるて再現されるという仕様になっています。サバイバーや恐竜、アイテムのアップロード、ダウンロードのシステムがファイル作成の動作になっているようです。
だから公式だと負荷にやられて同期とロールバックのタイミングがずれたりしてロストが発生したりするんですね。

なので複数PCでの移動したい場合、clusteridを同じにしても別のPCのマップでは参照するファイルがないためそのままでは移動することはできません。

そこで、そのclusterid用のデータフォルダをクラウド自動同期ソフトで同期させることでPC間でのサーバー移動が実現します。

dropboxとかonedriveとかそういうのがいろいろありますが、外を経由するので反応速度も遅いし面倒くさいなと思ったのでsyncthingというソフトを使いローカルネットワーク内だけで完結させました。

syncthingをインストールし、これを設定し、cluster用のセーブフォルダが作られるclustersフォルダをサーバー2台で同期するようにして準備完了です。

うちの例だと、このフォルダですが、自分の環境に合わせて変えてください。
/home/<ユーザー名>/<arkインストール先>/ShooterGame/Saved/clusters/

※ GUIを使えない環境でも設定は可能でした。

設定ができたらゲーム内で転送する前に、なにかテスト用のファイルを置いてみて同期されるかどうか試してみてください。

うまく設定ができてれば同じファイルが作られ、片方で消せば両方消え、物理的に分けられているサーバー間でのサバイバー転送ができるようになります。

うちの体感だと転送でタイムアウトがあったというのは数年のarkプレイの中で数回で、タイムアウトしてもログインすればサバイバーのダウンロードは無事可能でした。一緒に遊んでいた数人の友達からも特にクレーム等はなかったので普通に遊べていたようです。

一度設定できてしまえばもう同期についてはノーメンテで遊べていたのでとても快適でした。

HTML convert time: 0.130 sec. Powered by WordPress