2020年2月26日にARK:Survival Evolvedの新DLC、Genesisが発売しました。
Genesisをみんなで遊ぶためのサーバーを構築したので、そのログです。
サーバーをさわったことのない人も読むかもしれませんが、用語やコマンドやエディタ、ターミナルの操作方法などには、あまり詳しく言及していませんのでご注意ください。
構築自体はそこまで大変な作業ではないですが、バージョンや環境が違うとエラーが出ることもあり、またターミナル(サーバーを操作するソフト)の操作方法は独特で癖があるので、はじめてサーバーをさわる場合は、検索を繰り返して頑張る覚悟は必要です。
また、サーバーを構築する上で何かハマった場合はとりあえず、ARKのGamepediaにあるサーバー構築とサーバー設定の2ページの確認をおすすめします。(英語)
バージョン情報
システム | バージョン |
---|---|
OS | Ubuntu 19.10 x64 |
VPSを選ぶ
ARKのサーバーには最低6GBのRAMと、64bitOSが必要です。
快適な動作を考えると、メモリは8GB程度確保したほうが無難だと思います。
それだけのメモリを使うとなると、海外VPSでないと予算が嵩みます。また、戦闘も多いARKではPingも重要なため、サーバーのロケーションはアジアにしておきたいです。
以上の理由から、VPSにはロケーションに東京を選べるVULTRを採用しました。
アカウントの登録と、paypalでの残高チャージの後、サーバーには「Cloud Compute」、OSには「Ubuntu」を選択、「IPv6」を有効に設定してデプロイしました。
8GBでGenesisのサーバーを動かしてみたところ、5人程度ならラグもあまりなくプレイできました。
それ以上の人数になるとラグが増えるかなという印象です。
Ubuntuの初期設定
ARKのサーバー構築とは関係ありませんが、セキュリティ的にもセットアップ後の初期設定をやっておきます。
終わっている方は飛ばしてください。
パッケージリストのアップデート
SSHでサーバーに接続後、まずは初回起動プロセスが動いている場合があるので、以下のコマンドで確認します。
1 | # ps aux | grep apt | grep -v 'grep' |
このコマンドを叩いても何もでてこなくなったら、まずはパッケージリストのアップデートをします。
1 | # apt-get update && apt-get upgrade |
Y/nを聞かれるので、確認後 Y
を入力します。そこそこ時間がかかるのでのんびり待ちます。
作業ユーザーと公開鍵認証の設定
新規ユーザーを追加します。
1 | # adduser <作業ユーザー名> |
パスワードを聞かれるので設定します。その後のユーザー情報は、Enter連打で問題ありません。
次にsudoグループに追加します。
1 | # gpasswd -a <作業ユーザー名> sudo |
以降、すべての作業はsudoで行います。
まずは、ssh-keyを作成します。
1 | $ ssh-keygen -t ed25519 -C "<作業ユーザー名>'s key" |
Keysの保存先を聞かれますが、そのままEnterを入力します。
秘密鍵用のパスワードを求められるので設定します。
次に、公開鍵を移動と、パーミッションの設定をします。
1 | $ cd ~/.ssh/ |
次に秘密鍵を確認します。
1 | $ cat id_ed25519 |
ローカルのPCにid_ed25519というファイルを作成し、表示された内容をコピーします。
1 | $ rm id_ed25519 |
コピー完了後、サーバーから秘密鍵を消去します。
1 | $ exit |
いったん、サーバーへのSSH接続を終了します。
SSHクライアントで作業用のユーザー名・秘密鍵・パスフレーズを設定して、接続をテストします。
うまく接続できたら完了です。
sshdの設定
sshdの設定をします。vimでの編集方法は割愛します。
編集後、ssh接続をするときのポート番号が変更されますのでご注意ください。
1 | $ sudo vim /etc/ssh/sshd_config |
編集内容はこちらになります。
1 | - #Port 22 |
編集完了後、sshサービスを再起動します。
1 | $ sudo service ssh restart |
ファイアウォールのインストール
ファイアウォールをインストールと設定をします。
1 | $ sudo apt-get install ufw |
編集内容はこちらになります。
1 | - IPV6=yes |
sshのポートと、ARKのサーバーに使うポートを解放します。
1 | $ sudo ufw allow <sshのポート番号> |
Y/nを聞かれるので、確認後 Y
を入力します。
正しく設定できているか確認します。
1 | $ sudo ufw status |
再起動
最後に再起動をします。
1 | $ sudo reboot |
ARKサーバーの構築
SteamCmdのインストール
SteamCmdは32Bitでないと動かないようなので、インストールします。
1 | $ sudo dpkg --add-architecture i386 |
Y/nを聞かれるので、確認後 Y
を入力します。
終了後、OSのアップデートとSteamCmdのインストールを行います。
1 | $ sudo apt-get update |
Y/nを聞かれるので、確認後 Y
を入力します。
ライセンスが表示されるので、TABを押し、OKを選択して、Enterを押します。
I AGREEを選択して、Enterを押します。
ファイルオープン数の上限の設定
1 | $ sudo vim /etc/sysctl.conf |
このファイルの最終行に、以下のテキストを追記します。
1 | fs.file-max=100000 |
うまく設定できているか確認し、次にlimits.confを編集します。
1 | $ sudo sysctl -p /etc/sysctl.conf |
# End of file
というコメントの前の行に、以下のテキストを追加します。
1 | * soft nofile 1000000 |
pam.dのセッションファイルの編集
1 | $ sudo vim /etc/pam.d/common-session |
# end of pam-auth-update config
というコメントの前の行に、以下のテキストを追加します。
1 | session required pam_limits.so |
ARKサーバーのインストールと設定
ARKサーバー用のユーザーを作成しパスワードを設定します。
1 | $ sudo adduser <ARKユーザー名> |
その後、ユーザーを変更し、ARKサーバー用のディレクトリを作成してインストールを行います。
1 | $ su <ARKユーザー名> |
インストールにはかなりの時間がかかりますので、ゆっくり待ちます。
インストールが終了したら、作業ユーザーに戻り、ARKの設定ファイルを作成します。
1 | $ exit |
以下のテキストをペーストします。
いくつか、自分で設定が必要な箇所がありますので、 <>
で囲まれた箇所の書き換えは忘れないようにしてください。
1 | [unit] |
<ARKユーザー名>
には、さきほど作成したARKユーザーの名前を設定します。<マップID>
には、マップIDを設定します。ARKのGamepediaのサーバー設定ページの、 <map_name>
の項目に、マップIDのリストアップがありますので、参考にしてください。Genesisに設定したい場合は、 Genesis
を設定します。<サーバー名>
には、ARKのサーバーリストに表示されるサーバー名を設定します。<最大入室プレイヤー数>
には、ARKのサーバーに入室できる最大人数を整数で設定します。<入室パスワード>
には、ARKのサーバーに入室するためのパスワードを設定します。<管理者パスワード>
には、ARKのチートコマンドなどを使用するためのパスワードを設定します。
最後に、systemctlの設定を行います。
1 | $ sudo systemctl daemon-reload |
これで、ARKのサーバーに接続できるはずです。
ARKサーバーの運用
ARKサーバーへの接続手順
構築したサーバーに接続するためには、まず、Steamのゲームクライアントを起動します。
その後、メニューバーの「表示」→「サーバー」を選択し、お気に入りタブを選択します。
右下の「サーバーを追加」ボタンを押下し、 <VPSサーバーのIPアドレス>:27015
を入力します。
次にARKのゲームを起動します。
セッション一覧の左下にある、セッションフィルターから「お気に入り」を選択すると、先ほど設定したサーバーがでてくるので、接続します。
一度接続すると、 /home/<ARKユーザー名>/ark/ShooterGame
の中に、Savedディレクトリが生成されているはずですので、確認します。
1 | $ sudo ls -l /home/<ARKユーザー名>/ark/ShooterGame |
できていなかった場合、arkディレクトリのパーミッション設定や、手順に抜けがある可能性がありますので、ご注意ください。
ARKサーバーの設定変更
/home/<ARKユーザー名>/ark/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini
/home/<ARKユーザー名>/ark/ShooterGame/Saved/Config/LinuxServer/Game.ini
この2ファイルを編集することで、サーバーのテイム速度やPvP設定などを変更できます。
詳しくは、ARKのGamepediaのサーバー設定ページを参考にしてください。
また編集後は、サーバーの再起動とステータスの確認を忘れないようにしましょう。
1 | $ sudo reboot |
筆者のサーバー設定
参考までに、現在筆者がサーバーで使用している設定を掲載しておきます。
GameUserSettings.ini
1 | [ServerSettings] |
Game.ini
1 | [/script/shootergame.shootergamemode] |
解説
上から解説をしていきます。
- PvPオフ
- PvEでのガンマ値の変更を許可
- 三人称視点可能
- 飛行恐竜で人間の持ち運び可能
- PvEでの建築物の破壊タイマーをオフ
- ボイスチャットオフ
- 経験値(XP)30倍
- 採取の収穫量4倍
- プレイヤーのHP回復量1倍(通常)
- プレイヤーのスタミナ消費量1倍(通常)
- プレイヤーの食料消費量1倍(通常)
- プレイヤーの水分消費量1倍(通常)
- テイム速度10倍
- 難易度マックス (マックスにしないと、野生の恐竜の出現レベルが低くなるため、マックスにしています)
- 孵化/妊娠速度50倍
- Babyの成長速度50倍
- Babyのインプリントボーナス30倍
- Babyのインプリント可能間隔0.01倍
- Babyのインプリント猶予期間20倍
- Babyのインプリントボーナス減少速度0.001倍
- Babyの食料消費速度 0.1倍
ハマったエラー
SteamAPI_Init() failed
1 | $ sudo systemctl status ark.service |
を実行すると、
1 | ShooterGameServer[997]: [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed. |
というエラーメッセージがでてきますが、調べた限りでは、これは無視しても問題ないようです。
error while loading shared libraries: libsteam_api.so:
Genesis発売日にサーバーを構築したところ、下のようなエラーメッセージがでました。
1 | /ShooterGame/Binaries/Linux/ShooterGameServer: error while loading shared libraries: libsteam_api.so: cannot open shared object file: No such file or directory |
どうやら、ARKのDLCリリース直後は、Linuxの個人サーバーに対応していないようです。
こちらのフォーラムに解決方法がありました。
フォーラムに貼られたGoogleDriveから足りないファイルをダウンロードし、 /home/<ARKユーザー名>/ark/Engine/Binaries/Linux
にすべてのファイルを転送し、転送したファイルのパーミッションを775に設定して再起動したところ、無事にエラーが解決しました。
ファイルのダウンロードなど、くれぐれも自己責任でお願いします。
マップの変更
プレイするマップを変更したい場合は、
1 | $ sudo vim /lib/systemd/system/ark.service |
で、<マップID>を変更し、再起動します。
マップを変更した場合、プレイヤーキャラクターは引き継ぎますが、アイテムは引き継がないようです。(要確認)
おわりに
以上でARKのサーバー設定を終わります。
いつか気が向いたら、セーブデータのバックアップ方法や、Modなどについても追記したいと思います。