前振りです。
セールで66%引きの\503だったのでDon't Starve Togetherというゲームを買いました。
でも全然やる気が出ませんでした。
折角買ったのにつまらないな、と思っていると、なにやら独立してサーバが立てられるそうなので、CentOS7でやってみました。そういう手間が好きなので。
実際にやってみると、そこらへんに出回っている情報が古くて、そこかしこで齟齬が生じていることが分かりましたので、現時点(具体的な日付は当ブログの日時をご覧ください)での設置方法をメモしておく次第です。
今回使用したOS及びアプリのバージョンは以下の通りです。
Don't Starve Together Dedicated Serverのバージョン: 510124 LINUX 64-bit版
CentOSのバージョン: 7.9.2009
CentOSはGUIが無効にされています。
なお、現時点でも接続確認のみでゲームはプレイしていません。我ながら馬鹿です。
前準備その1 steamユーザを準備する
ValveさんとKLeiさんを絶対的に信用していない場合は、システムにsteamユーザを追加してください。
# useradd steam -d /home/steam
steamユーザになる
# su - steam
以下の記事は、上記を行っているものとして記述しております。
前準備その2 SteamCMD をインストールする
手順は以下の通りです。
1 2 3 4 5 6 7 | $ mkdir /home/steam/steamcmd$ cd /home/steam/steamcmd$ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz -O steamcmd_linux.tar.gz$ tar zxvf steamcmd_linux.tar.gz$ cd linux32$ ./steamcmd |
前準備その3 cluster_tokenを取得する
ゲームクライアントを起動してコンソールから次のコマンドを入力してください。ゲームクライアントはWindowsでも何でもいいです(Linuxである必要はありません)。
TheNet:GenerateClusterToken()
すると、Windows版クライアントの場合、 cluster_token.txt というファイルが以下のディレクトリに生成されます。
C:\Users\<ユーザ名>\Documents\Klei\DoNotStarveTogether\<数字の羅列>\
Documents\Klei\DoNotStarveTogetherの直下ではない点にご注意ください。
またはホームページから取得する方法もあるようですがやったことないので知りません。
以上で前準備は整いましたのでいよいよDedicatedサーバをインストールします。
手順その1 Don't Starve Together Dedicated Serverをインストールする
1 2 | $ cd /home/steam$ ~/steamcmd/steamcmd.sh +@ShutdownOnFailedCommand 1 +@NoPromptForPassword 1 +force_install_dir dont_starve_together_dedicated_server +login anonymous +app_update 343050 validate +quit |
手順その2 一度起動してディレクトリのひな形を作成する
以下のスクリプトを~/start_servers.shとして保存、実行してください。
スクリプト中でリダイレクトしているテキストはサーバプロセスが出力しているファイルと同様なので不要なら/dev/nullに捨てて構わないでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #!/bin/env bashpushd . >/dev/nullSTEAMHOME=/home/steamDSTSVRDIR=$STEAMHOME/dont_starve_together_dedicated_serverDSTSVR_BINDIR=$DSTSVRDIR/bin64DSTSVR_LIBDIR=$DSTSVR_BINDIR/lib64PERSISTENT_STORAGE_ROOT=$DSTSVRDIRCONF_DIR=confCLUSTERNAME=Cluster_1LOGDIR=$PERSISTENT_STORAGE_ROOT/$CONF_DIR/$CLUSTERNAME/logSVRPROC=dontstarve_dedicated_server_nullrenderer_x64SVRPROCOPT=" -persistent_storage_root $PERSISTENT_STORAGE_ROOT -conf_dir $CONF_DIR -cluster $CLUSTERNAME"if [ ! -e $DSTSVRDIR ]; then echo サーバがインストールされていない exit 1fiif [ ! -e $LOGDIR ]; then mkdir -p $LOGDIRficd $DSTSVRDIR# サーバプログラムの更新を確認する# dedicated_server_mods_setup.luaが上書きされるのを防ぐため、+app_updateオプションに対してvalidateを指定していない$STEAMHOME/steamcmd/steamcmd.sh \ +@ShutdownOnFailedCommand 1 \ +@NoPromptForPassword 1 \ +force_install_dir $DSTSVRDIR \ +login anonymous \ +app_update 343050 \ +quit > $LOGDIR/app_update.log 2>&1if [ ! -e $DSTSVR_LIBDIR ]; then mkdir -p $DSTSVR_LIBDIRfiif [ ! -e $DSTSVR_LIBDIR/libcurl-gnutls.so.4 ]; then # CentOS7にはlibcurl-gnutls.so.4が用意されていないためlibcurl.so.4を使用する ln -s /usr/lib64/libcurl.so.4 $DSTSVR_LIBDIR/libcurl-gnutls.so.4fi# メインと洞窟サーバを起動するnohup ./$SVRPROC $SVRPROCOPT -shard Master > $LOGDIR/Master.log 2>&1&nohup ./$SVRPROC $SVRPROCOPT -shard Caves > $LOGDIR/Caves.log 2>&1&popd >/dev/null |
手順その3 Dedicatedサーバを停止する
10秒くらい経ったら、以下のコマンドで停止してください。
killall dontstarve_dedicated_server_nullrenderer_x64
正確を期すなら、Master.logを監視して、cluster_tokenがないので起動できないというメッセージを確認してから停止してください。
この一行のコマンドをstop_servers.shとして保存しておくと便利と思います。
手順その4 生成されたひな形に肉付けする
以下のディレクトリが生成されていますので、それぞれのディレクトリに必要な設定を行います。
肉付けが必要なファイルの説明は次のURLが詳しいです。
https://steamcommunity.com/sharedfiles/filedetails/?id=635281092
- ~/dont_starve_together_dedicated_server/conf/Cluster_1
このディレクトリには先ほど取得したcluster_token.txtを配置してください。
また、cluster.iniを生成して配置してください。
cluster.iniの内容は以下の通りです。12345678910111213141516171819202122232425[GAMEPLAY]game_mode = endlessmax_players = 16pvp = falsepause_when_empty = truevote_enabled = true[NETWORK]cluster_name = クライアントから見えるサーバー名を設定してくださいcluster_description = 何か夢とか希望とか書いてくださいcluster_intention = socialautosaver_enabled = trueoffline_cluster = falselan_only_cluster = false[MISC]console_enabled = true; サーバ用日本語modをインストールする予定なのでjapaneseと指定language_code = japanese[SHARD]shard_enabled = truebind_ip = 127.0.0.1master_ip = 127.0.0.1cluster_key = Cluster_1_tokuni_imi_ha_nai - ~/dont_starve_together_dedicated_server/conf/Cluster_1/Master
このディレクトリにはserver.iniというファイル名で以下の内容を記述してください。123456[ACCOUNT]encode_user_path = true[SHARD]is_master = truename = Master - ~/dont_starve_together_dedicateCavesd_server/conf/Cluster_1/Caves
このディレクトリにもserver.iniというファイル名で以下の内容を記述してください。123456789[ACCOUNT]encode_user_path = true[SHARD]is_master = falsename = Caves[NETWORK]server_port = 10998
また、 worldgenoverride.lua というファイル名で、中身が下記のファイルを作成してください。
このファイルでDST_CAVEを指定して初めて洞窟とみなされますので、このファイルを忘れると森が二つあるサーバとなります。ただし、私はゲームとしては遊んだことがないので、それがどういう動作につながるのかまではわかりません。
1234567return {override_enabled = true,preset = "DST_CAVE",overrides = {start_location = "default",},} - MastarとCavesディレクトリの両方にmodoverrides.luaというファイル名で以下を記述してください。
123
return {["workshop-1636779445"] = { enabled = true } -- 日本語化} - ~/dont_starve_together_dedicated_server/mods
このディレクトリには dedicated_server_mods_setup.lua というファイルがあるはずなので、以下の行を追記してください。ファイルがない場合は、どうせもともとコメントしかないファイルなので自分で作って構いません。
なお、このファイルはSteamCMDで本サーバアプリをvalidateすると消されてしまいますのでそのあたりは別途コピーを保管しておくなりして料簡してください。1ServerModSetup("1636779445") --日本語化mod - ここまでで設定はおおむね完了したので、~/start_servers.shでDedicatedサーバを起動してください。
ゲームクライアントを起動し、オンラインにしてから clustar.iniで定義したcluster_name でサーバを検索すれば接続できる状態になっているはずです。