日記メインのゲームブログです。

ARK SAの非公式サーバーについて

訳あってサーバーを建てることになったので調査&構築を試してみました。

※更に追記(最終)

かごやのVPSでサーバー建てられました。
パスワードも設定出来ましたし、最大プレイヤー数の設定も出来ました。
サーバー設定については以下を参考に。

https://ark.wiki.gg/wiki/Server_configuration#GameUserSettings.ini

サーバーの構築方法についてですが、
1、インスタンスを作成する(Ubuntu22.04)
2、セキュリティグループを作成し、1のインスタンスに適用する(おそらく停止中じゃないとダメ)
 →7777,7778,27015をUDP、27020をTCP
3、1のインスタンスを起動し、必要に応じてスワップ領域を設定する
4、ufwでセキュリティグループに設定したのと同じポートを許可する
5、以下のshに記載のあるコマンドを1つずつ実行していく
 https://github.com/cdp1337/ARKSurvivalAscended-Linux/blob/main/server-install-debian12.sh
 ※ifは無条件で実行し、29行目~48行目までは無視し、ark-island.serviceの中身の変数については変数の中身に置き換えて記載(変数使えないっぽい?)

こんな感じです。
サーバー検索画面でUNOFFICIALタブを開いて右上の検索欄にSessionNameを入れて、パスワードかけてる場合は画面下部のSHOW PASSWORD~にチェックを入れて検索し、対象のサーバーが表示されれば少なくともサーバー自体は正常に動いていると思います。
ちなみにsystemctl startして3分後くらいにサーバーは起動しますが、一覧に表示されるタイミングはもうちょっと遅れます。
たぶんサーバー情報を取得してインデックス化する間隔が15分間隔くらいになっている気がします。

サーバーを選んでパスワードを入力するときに、わざと間違ったパスワードを入力して「Invalid Password」って出てきた場合は正常に入れる状態になっていると思います。
「Invalid Password」が表示されずに「接続がタイムアウトしました」ってなった場合はPortの設定が間違っているか、接続が不安定で単純にタイムアウトしてるかのどちらかだと思います。
タイムアウトのときは何度か接続試してみると入れることもありました。

結論から言うと、Nitrado借りるのが一番良いと思います。

ARK: Survival Ascended Server Hosting | NITRADO

1ヶ月単位だと月3000円とお高めですが、日本の有名どころでVPS借りようとすると要求スペック満たすためにはもっとお金かかります。
試しにカゴヤのVPSで4コア4GBメモリの日額55円のサーバーを借りて仮想メモリ設定して試してみたのですが、そもそもの話、現時点でLinux用の実行ファイルが用意されてないっぽいです。
WindowsServer向けのexeしかありませんでした。
WindowsServerのVPSはもっと高額になります。
NitradoがWindowsServerで動いているのであれば、独占契約が終了するまではLinux向けは提供されない気がしますね。
しかし、DockerとかProtonを使えばLinuxでもexeを実行できるようです。

※追記
ARK SAの日本の有志wikiに「nitradoは対応が悪い」とコメントがありました。
エラーが発生しやすく、エラーが発生したらサーバーをインストールし直せと言われるそうです。
値段だけ見れば圧倒的にnitradoなので、悩みどころです。
そもそもエラーが発生しやすいのはnitradoではなくARK SAの問題だと思うので、自前でサーバー建てるメリットは復旧手順を上手いこと構築できる”かもしれない”という程度なんですよね。
ちなみに私が色々試した結果、必要スペックはLinuxサーバーであればCPU6コア、メモリ16GBです。
どこかで見かけた4コア8GBというのはおそらくARKのサーバー使う部分で、サーバー自体が使うリソースが残らないっぽいんですよ。
私が借りたカゴヤの4コア4GB(+スワップ領域12GB)でサーバーを起動したとき、アイドル状態でCPU使用率は80%前後、メモリ使用量は12GB前後でした。
カゴヤの場合6コア6GBで月額3850円、8コア8GBで月額7150円です。
nitradoのスペックがわからないのですが、最小単位で同時接続20人まで対応しているので、メモリはそれなりに大きいはずです。
それでいて月3000円はめちゃくちゃ破格なのでは・・・
いずれにせよARK SAの出来が悪すぎるので、今サーバー構築するのはやはり時期尚早ですね。

Dockerを使うパターンに関しては、Dockerを動かすためにもメモリ食うからか、要求RAMが16GBに膨れ上がっていました笑
構築自体はサクッと終わるんですけどね・・・さすがに一瞬でout of memory出てしまいました。
公式?でアナウンスされているサーバーの最低要求スペックはRAM8GBだったかと思いますが、2倍にまでなっています。
カゴヤのVPSで16GBとなるとCPUも10コアになってしまい、日額500円の月額15,000円です笑
これCPUのコア数だけ低くして安くなったりしないのかな・・・
カゴヤのVPSはどうやら従量課金っぽくて、インスタンス作った段階ではまだ課金されてないんですよね。
恐ろしいので慎重に作業せねば・・・考え無しに複数のインスタンス作った日には料金2倍請求されそうですし。
当然といえば当然ですが、何も警告が出ないのが怖いです。

Protonを使うパターンに関してはおそらくそこまでメモリ食わないと思いますが、まだ起動確認出来ていないのでなんとも言えません。

https://github.com/cdp1337/ARKSurvivalAscended-Linux

上記はdebian向けですけど、ubuntuでもコマンドを1つずつ適宜置き換えながら実行していったら一応最後までたどり着けました。
起動後のstatusで変な警告が出ているのと、メモリの使用量が全然増えてないので多分起動失敗していますが笑
まだ接続確認していません。
解消できたら追記しますが、他にも色々問題があるんですよねぇ。

まずゲーム上でのサーバー設定ですけど、パスワード設定するとクラッシュするという説があります。
パスワード設定無しではさすがにプレイできないですよね・・・
想定利用者が誰も使っていないタイミングで知らない人が入ってきていたずらされる可能性もありますし。
Nitradoであれば設定可能なようですが。

次にRAMの問題ですが、仮想メモリなんて追加していいの?という話です。
仮想メモリを好きなだけ追加して不足分補えるなら、上位のプランを契約する必要がないですからね。
さくらのVPSでは一定の基準に達すると利用制限(速度制限?)が課せられるそうです。
仮想メモリはSSDをRAMとして使おうっていう話なので、SSDの寿命を考えると禁止されていてもおかしくないですよね。
VPSの提供元で仮想メモリ(というかスワップ領域)の設定手順を紹介しているので、やっちゃいけないってことはないと思います。
でも想定している利用方法としては、一時的にメモリ使用量がオーバーすることに備えての保険でしょうし、常時オーバーする前提では無いんだと思いますが笑
そんなわけで、設定自体はできるけど制限食らう可能性が非常に高いです。

などなど、諸々の事情を考えるとNitrado借りて利用者で料金折半するのが一番良いなと思いました。
元々別のVPS使う場合も折半するつもりだったのですが、少しでも安く済ませたいと思って・・・笑
自宅PCにサーバー構築する案も考えたのですが、VPN接続してローカルIP指定して接続する方式でもなければ怖くて出来ませんね・・・
電気代や部品へのダメージも怖いですし、そもそも自宅PCに構築するならnon-dedicatedでよくね?という。
それとnitradoなら構築も済んでいる状態で提供してくれるでしょうし、それを考えると月額3000円はむしろ安いのでは?という気すらしてきますね笑

冒頭でも書いたとおり、現在はカゴヤのVPSを日額55円で借りている状態です。
正常に構築可能で、パスワード設定も出来て、リソース制限もかからずに安定プレイできそうであればこのまましばらく借りておきます。
駄目そうなら明日にでも解約します。

※追記
とりあえずサーバー一覧に表示されることは確認できました。
スワップ領域8GBだとかつかつなので、12GBで合計RAM16GBにしたら見かけ上は余裕があるようになりました。
実際に上手く動いているかはわかりませんが笑
というのも、サーバー一覧に表示されているだけで接続ができず・・・笑
パスワード設定するとクラッシュするという話がありましたが、それが原因でしょうか?
ちなみにServerPasswordの設定を追加したらパスワードの入力を求められるようにはなりましたが、そこから先接続しようとするとタイムアウトする状況ですね。

それで思い出したのですが、確かServerPasswordってexe実行時の引数で与えるんじゃなかったでしょうか。
MaxPlayerとかもそうでしたけど、引数が不足していて正常に動いていない説が出てきました。
これどこかにログ残ってないのかな・・・
単に”タイムアウト”と表示されても原因がわからないんですよね。