以下の手順で、1 人接続の小規模なサーバなら常時起動しても月$7 ぐらいで動かせそう。 …と思ったけどゲームプレイしてみると割と頻繁に重い状態になってだめそうだった。 サーバコストをケチるなら、低スペックのサーバで無理やり動かすのでなく、そこそこスペックのサーバをゲーム遊ぶときだけ起動するような方式のほうがよさそう。 以下の方法は参考までに、一応起動はして多少遊べるという程度であることを前提に読んでください。
- インスタンスタイプは t3a.nano
- サーバ起動時に 1 コアしかないと処理が進まないため、2 コア以上のインスタンスが必要
- そのままだとメモリが足りないが swapfile を使えば大丈夫
- セットアップ中はクレジット無制限モード ON にして、終わったら OFF にする
- 常時クレジット無制限にすると余計にコストかかることがあるので注意
- OS は Ubuntu 20.04
- セキュリティグループで 2456:2457/tcp, 2456:2457/udp を開けておく
- ルートボリュームは 15GB (もろもろセットアップ済んで半分ぐらいの使用率。swapfile を小さくしたりして、もっとケチってもよい)
- swapfile を設定
- https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-20-04-ja
- swapfile のサイズは 4GB とした(特に根拠なし)
- steamcmd をインストール
- Valheim Dedicated Server をインストール
- https://valheim.fandom.com/wiki/Valheim_Dedicated_Server
- steam ユーザのホームディレクトリ以下にインストールした /home/steam/valheim
- 起動用スクリプト valheim.sh を /home/steam にインストール
- サウンドの無効化
- 2021/03/09 時点の Build ID: 6315977 のビルドだと、サーバでもサウンド処理が走っており CPU を無駄に消費している
- 無効化するため、valheim_server_Data/globalgamemanagers ファイルの 0x1A30 を 01 に書き換える
- https://docs.unity3d.com/ja/2018.4/Manual/class-AudioManager.html の、「Disable Unity Audio」にチェックを入れたときと同じ状態になる
- steamcmd を用いたサーバのインストール手順を繰り返すとファイルは元の状態に戻る
- 変更するファイルの場所はビルドごとに変わるような気がする
- 自動起動設定
- /etc/systemd/system/valheim.service ファイルを作成
- CPUQuota の数値は EC2 インスタンスの Credit 量をみて調整する
- sudo systemctl daemon-reload
- sudo systemctl enable valheim
- /etc/systemd/system/valheim.service ファイルを作成