Valheimは2021-02-08現在アーリーアクセスです。
この手順は将来的に使えなくなる可能性が高いです。
対象
- 以下のすべてを満たす人
- Linuxサーバーがある
- 固定IPを持ってる
- sudoができる
- ポート開放ができる
- ファイルアップロードができる(ローカルのワールドを移行したい場合)
エラーが出た場合の対処法はほぼ解説しません
※ サーバーなんて持ってないけど専用サーバー立てたいという方はG-Portalで借りることもできます。
ヴァルハイムサーバーホスティング | G-Portal
利用したことがないので通信速度や管理のしやすさ等は知りません。
ただ月あたりのコストはVPSやその他IaaSを自身で管理するより低い気がします。
三行で(拡張形式)
- Valheimが楽しげ。だけど誰かがホストとしてゲーム起動しっぱなしにしなきゃいけない。大変。
- 専用サーバーアプリが同梱されてるしValheimのゲームサーバー立てたい。ここではUbuntuを使う。
- やること
[サーバーの設定]
3a-1. VPSなりEC2なりGCEなりでサーバーを構築(書きません)
3a-2. steamcmdをインストール
3a-3. Valheim Dedicated Serverをインストール
3a-4. ポート開放
(option) ローカルのワールドデータを移行する
3a-5. ゲームの設定
3a-6. ゲームサーバーを起動
[クライアントの設定]
3b-1. steamクライアントにサーバーを登録
3b-2. Valheimのゲーム参加メニューからサーバーに入る
やった時の環境
- GCE (GCP側の設定方法は書きません)
- ubuntu-1604-xenial-v20210203
サーバーの設定
(2021-02-16追記)
筆者が無知なのでこの記事で扱ってないんですが、
Valheimのサーバーを立てるのにはLinuxGSMっていうゲームサーバー用便利ツールが使えるみたいです。
Valheim | LinuxGSM_
こっちの方が絶対楽です。
LinuxGSMを使ったValheimサーバーの立て方を日本語で簡潔に解説されている記事があります(しかもGCEのインスタンス作成から教えてくれる!)。この記事より参考になると思います。
ValheimのサーバーをGoogleから借りて、LinuxGSMでかんたんに設定する方法:ぬどマガ:ぬャンネル(ぬどん)
(追記ここまで)
sudoができるユーザーでサーバーに接続してください
3a-2. steamcmdをインストール
steamcmdはSteamクライアントのコマンドラインツール版です
コマンドラインからSteamのゲームをインストールしたりできます
次のコマンドでインストールします
$ sudo apt install steamcmd
最新のサーバーでデフォルトのままだとおそらくエラーになります
エラーを吐いた場合は次の通りにコマンドを実行してください
$ apt-get install software-properties-common
$ sudo add-apt-repository multiverse
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install lib32gcc1 steamcmd
これでsteamcmdはインストール完了です
RedHatな方はyum install steamcmd
でどうぞ
参考:公式のガイド
3a-3. Valheim Dedicated Serverをインストール
Valheimサーバーアプリをインストールするディレクトリを作成してそこに入ります
$ mkdir valheim_server(任意の名前)
$ cd valheim_server
次のコマンドでValheimのサーバーアプリをインストールします
$ steamcmd +login anonymous +force_install_dir ./ +app_update 896660 validate +exit
上記コマンドは"ログイン情報なし"で[+login anonymous] "Valheim Dedicated Server"[89660]を "現在のディレクトリにインストール"[+force_install_dir ./ ] 的な意味です
3a-4. ポート開放
外部のゲームクライアントとやり取りできるようポートを開放します
まずステータスを確認します
$ sudo ufw status
Statusがactive
でない場合は$ sudo ufw enable
でファイアウォールを有効化してください
言うまでもありませんがsshやその他のサービスへ接続不能にならないよう注意してください
Valheimが使う2456-2458番ポートとssh接続用の22番ポートを開け、設定を再読み込みしてステータスを確認します
$ sudo ufw allow 22/tcp
$ sudo ufw allow 2456:2458/tcp
$ sudo ufw allow 2456:2458/udp
$ sudo ufw reload
$ sudo ufw status
だいたいこんな感じになると思います
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
2456:2458/tcp ALLOW Anywhere
2456:2458/udp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
2456:2458/tcp (v6) ALLOW Anywhere (v6)
2456:2458/udp (v6) ALLOW Anywhere (v6)
RedHatな方はfirewalldでどうぞ
(option) ローカルのワールドデータを移行する
Windowsでプレイしていた場合、おそらくワールドのデータはC:\Users\[ユーザー名]\AppData\LocalLow\IronGate\Valheim
の中にあります
中身をまるっと移行先のサーバーにアップロードしてください
移行先のワールドデータはおそらく ~/.config/unity3d/IronGate/Valheim
になりますので、アップロードしたデータをまるっとコピーしてください
3a-5. ゲームの設定
ゲームの起動スクリプトを編集してワールドやパスワードを設定します
お好みのエディタ ~/.steam/steamapps/common/Valheim\ dedicated\ server/start_server.sh
export templdpath=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH
export SteamAppId=892970
# Tip: Make a local copy of this script to avoid it being overwritten by steam.
# NOTE: Minimum password length is 5 characters & Password cant be in the server name.
# NOTE: You need to make sure the ports 2456-2458 is being forwarded to your server through your local router & firewall.
./valheim_server.x86_64 -name "MyServer(サーバーリストでの表示名)" -port 2456 -world "Dedicated(使用するワールド)" -password "hogehoge(6文字以上らしい)" -public 1 > /dev/null &
export LD_LIBRARY_PATH=$templdpath
echo "Server started"
echo ""
read -p "Press RETURN to stop server"
echo 1 > server_exit.drp
echo "Server exit signal set"
echo "You can now close this terminal"
8行目の""で囲っている部分をご自身の環境に合わせて変更してください
(コメント訳)
- サーバーアプリを更新する際にスクリプトファイルが上書きされる可能性があるので、余所にコピーをとっておきましょう
- パスワードは5文字以上でサーバー名と同じにはできません
- 2456-2458ポート開けといてね
3a-6. ゲームサーバーを起動
起動スクリプトのあるディレクトリへ移動します
cd ~/.steam/steamapps/common/Valheim\ dedicated\ server/
ゲームサーバーを起動します
$ ./start_server.sh
↓こんな感じのログが出ていればゲームサーバーは起動できています
Server started
Press RETURN to stop serverCAppInfoCacheReadFromDiskThread took 2 milliseconds to initialize
CApplicationManagerPopulateThread took 11 milliseconds to initialize (will have waited on CAppInfoCacheReadFromDiskThread)
RecordSteamInterfaceCreation (PID 13515): SteamGameServer012 / GameServer
RecordSteamInterfaceCreation (PID 13515): SteamUtils009 / Utils
Setting breakpad minidump AppID = 892970
RecordSteamInterfaceCreation (PID 13515): SteamGameServer012 / GameServer
RecordSteamInterfaceCreation (PID 13515): SteamUtils009 / Utils
RecordSteamInterfaceCreation (PID 13515): SteamNetworking005 / Networking
RecordSteamInterfaceCreation (PID 13515): SteamGameServerStats001 / GameServerStats
RecordSteamInterfaceCreation (PID 13515): STEAMHTTP_INTERFACE_VERSION002 / HTTP
RecordSteamInterfaceCreation (PID 13515): STEAMINVENTORY_INTERFACE_V002 / Inventory
RecordSteamInterfaceCreation (PID 13515): STEAMUGC_INTERFACE_VERSION010 / UGC
RecordSteamInterfaceCreation (PID 13515): STEAMAPPS_INTERFACE_VERSION008 / Apps
エラーが出ている場合もあるので、このあとのクライアントの設定で接続がうまくいかない場合はログを見返してみてください
この画面のままなにかキーを押すとゲームサーバーは終了します
sshを切断してもサーバーの実行を続けたい or バックグラウンドで実行したい場合は次のコマンドでゲームサーバーを起動します
nohup ./start_server.sh &
サーバーを停止したい場合はvalheim_server.
プロセスをkillしてください
以上でゲームサーバーの準備は完了です
クライアントの設定
ゲームをプレイする側の設定です
一緒に遊ぶお友達には以下の設定をしてもらってください
3b-1. steamクライアントにサーバーを登録
外部に立てたValheimサーバーは、Steamクライアントのサーバーリストに登録しないとゲーム内のコミュニティサーバー一覧に表示されません
Steamクライアントを起動し、左上の[表示] > [サーバー] でサーバーリストを開き、[お気に入り]タブへ移動します
IPアドレス欄に [サーバーのIPアドレス]:2457(起動スクリプトで設定したポート+1)
を入力します
入力できたら[このアドレス内でゲームを検索]ボタンをクリックします
うまくゲームが起動できていれば起動スクリプトで設定したサーバー名が表示されるので、
サーバー名をクリックして[選択したゲームをお気に入りに追加]ボタンをクリックします
3b-2. Valheimのゲーム参加メニューからサーバーに入る
Valheimを起動して、[ゲームスター] > [キャラ選択 > スタート] > [ゲーム参加] と進みます
[コミュニティ]にチェックを入れ、Filterに立てたサーバー名を入力してください
サーバーが表示されたら後は通常通り接続してプレイできます
2021-02-11追記:サーバー側のアプリアップデートについて
クライアントとサーバーでアプリケーションのバージョンが異なるとゲームにログインすることができません。
サーバー側でのアプリアップデートには、インストールを実行したディレクトリで次のコマンドを実行します。
※ アップデートを実行すると既存のstart_server.sh
などが上書きされるため事前にバックアップをとっておきましょう。
$ steamcmd +login anonymous +app_update 896660 validate +exit
おまけ
GCEインスタンス
マシンタイプ | e2-medium(vCPU x 2、メモリ 4 GB) |
ゾーン | asia-northeast1-b |
ディスクタイプ | SSD 永続ディスク 50GB |
プリエンプティブ | オン |
4人で遊んでみましたがとりあえず超序盤では特に問題なさそうでした
CPU使用率はプレイヤーのあるなしにかかわらず常時80%くらい
クラフトが増えると重くなったりするかも?
GCP料金について
2/7~2/14(GMT)までの中間報告
え…高…
サービス | 24hあたり | 30日換算 |
---|---|---|
GCEインスタンス*1 (ゲーム鯖用・プリエンプティブ) |
高くて35円 | 1050円 |
GCEインスタンス (鯖管理discordボット用 f1-micro 2/14~) |
たぶん安い | 未定 |
SSD 50GB | 41円 | 1230円 |
静的IP(JP) | 37円 | 1110円 |
ネットワーク転送量*2 | 平均20円くらい (標準ティア) |
600円 |
その他 | - | - |
合計 | 130円くらい? | 4000円くらい? |
*1 メモリ,CPU,外部IP料金の合算
*2 ゲーム鯖用インスタンスのネットワークティアは2/14にプレミアムに変更した(1GBあたり$0.01高くなる)
対策できそうなところ
-
SSD
現状のディスク使用量が約3.5GB(うちワールドデータが100MB)なので20GBくらいに落としていいかも -
ゲーム鯖用GCEインスタンス
Valheim Dedicated ServerはプレイヤーがいなくてもCPUがぶん回っているので遊んでいないときはプロセスを止める(本末転倒では?)
→ 2021-02-17のアプデでだいぶ軽量化されました(うちのインスタンスでは待機時のCPU使用率が80% → 20%まで改善しました)
この辺がdiscordボットで管理できるとよいけどまだできてない
ちなみにインスタンスごと止めてしまうと静的IP料金が割高になる -
静的IP料金
気持ち的に一番つらいけどどうにもならない
エフェメラルIPにして適当なドメイン+自分でDNSを立てれば安くなる気もするけど絶対にやりたくない
最適化すれば2000円/月くらいになりますかね?わからんけど
ゲームデータを自由にいじれるメリットを除けばG-Portalで借りた方がいい気がしてきました
打開策をお持ちの方は助けてください
2021-03-11料金最終報告
1日あたりの料金
ゲーム起動日 | ゲーム未起動日 | |
---|---|---|
SSD50GBの場合 | 100円程度 | 60円程度 |
SSD20GBの場合(予測) | 75円程度 | 35円程度 |
忙しくてなかなか手が着かないんですがはやくSSDのサイズちっちゃくしてインスタンス作り直したい…
皆様はプレイ頻度等に併せてGCEにするかVPSにするか決めたらよいかと思います。