はじめに
みなさん7days to Dieやってますか!?正式版リリースから何か月たったんでしょうか!
わかりません!
自分は最近はじめてどはまり中です ← どういうつながり?
そんなこんなで、自分が作成したローカルのセーブデータにフレンドを招待して絶賛プレイ中です。
そんな中、マルチサーバーを借りたいと思って、
サーバーにこれまで遊んできたセーブデータを移管したい
というニーズが発生してしまったため、備忘録的な意味で残します。
対象者
結構用語を端折ってたりするので、
- ターミナル触れる人
- 特段説明なくsshやscp等がわかるかた
が対象となります。
ゴール
- ローカルに保存されているセーブデータをConoHa VPS for Game上にアップロードできること
をゴールとして、本記事は作成いたしました。
借りたVPSについて
今回お借りしたのはConoHa VPS for Game をお借りしました。
https://www.conoha.jp/game/
こちら借りる利点として、
- 長期割引がきくこと
- ゲームテンプレートから選べば爆速でマルチサーバーを立てられること
- SSHログインしたときに必要な情報をターミナル内に出力してくれること(IPアドレスとかログインパスワードとか)
その他、ConoHa VPSについては割愛します。
ディレクトリ構成について
この節では、ローカルとサーバー上の2つに分けてご紹介いたします。
ローカル側
環境としては
- Windows 11 Home
- Steam
を使用しています。(それ以外でできるのかわかんない)
セーブデータの保存先
デフォルトで設定されているのは
C:\Users\<<user_name>>\AppData\Roaming\7DaysToDie\Saves\<<game_world>>\<<game_name>>
user_name : Windowsのログインユーザー
game_world : 7days to die のセーブデータ作成時に選ぶNavezgane
などのワールドタイプ
game_name : 新規セーブデータ作成時に入れたセーブデータ名
となります。game_name直下部に、そのセーブデータの記録が保管されています。
ConoHa VPS for Game側
ここまでは、記事を漁ればよくでてくるラインだとは思うのですが、ConoHaのほうがわからなかった。
Linuxサーバー上で構築されているサーバーではあるのですが、Windowsとのディレクトリの差異があるため、時間がかかりました。
結論を言うと、ローカルのセーブデータへの移管先は以下のディレクトリになります。
/home/sdtd/.local/share/7DaysToDie/Saves/<<game_world>>/<<game_name>>
こちらにSCPコマンド等で、ローカルのセーブデータを渡してあげると無事に移管は終了します。
サーバー側の設定
セーブデータをSCPコマンド等でコピーしただけでは、server上でセーブデータが反映されません。
なぜなら、サーバー上の設定で、ほかのセーブデータを参照しているためです。
そのため、セーブデータの向き先を変更する必要があります。
/opt/7dtd/7dtd_server/
直下にseverconfig.xml
というxmlファイルが存在します。
こちらのファイル内に以下のような記述部があると思います。
(コメントや、スペース等は省いております)
<!-- GAMEPLAY -->
<!-- World -->
<property name="GameWorld" value="Navezgane"/>
<property name="WorldGenSeed" value="syAdv0eJ"/>
<property name="WorldGenSize" value="6144"/>
<property name="GameName" value="MyGame"/>
<property name="GameMode" value="GameModeSurvival"/>
この中のGameWorld
, GameName
を以下のように修正します。
適宜、GameWorldとGameNameは変更ください。あくまで例となります。
<!-- World -->
<property name="GameWorld" value="Pregen080k1"/> <!-- Navezgane → Pregen080k1-->
<property name="WorldGenSeed" value="syAdv0eJ"/>
<property name="WorldGenSize" value="6144"/>
<property name="GameName" value="MyGameMulti"/> <!-- MyGame → MyGameMulti-->
<property name="GameMode" value="GameModeSurvival"/>
これにより、サーバー上でセーブデータの向き先が変更されます。
注意事項
- 本記事と同様に移管した場合、経過日数が1日からとなってしまいます
- その他、インベントリや装備品、スキルなどなどは引き継がれます
一応、経過日数に関しては、管理者権限を自身に付与後、経過日数を変更するコマンドがありますので、そのコマンドを実行すれば解決します。
詰まったところ
私だけなのかは不明ですが、一応メモ程度に残しておきます。
サーバー再起動時にエラーが発生する
移管したセーブデータ内部にPlayer
ディレクトリがあり、ユーザーがログインをするとその中のディレクトリやファイルを読み取る仕様でした。
そのため、この部分の書き込み読み込み権限を適切に選択しなければ、サーバーがずっと初期化しています。で止まってしまったり、サーバーに参加できないという問題が発生します。
そのため、chmodなどで権限ユーザーをrootに変更後、権限を775に設定を変更する必要がありました。
まとめ
そこまで難しくはないのですが、ネットの海を渡ってもなかなかほしい情報にはありつけず苦労したので、今回は記事として残します。
ここまでご覧いただきありがとうございました。
ref
ConoHa VPS for Game
serverconfig.xml について