マルチサーバー構築について

Last-modified: 2015-02-17 (火) 23:49:19

このページはα10の情報です

はじめに

サーバーの運営にはそれなりの知識や技術や経験が必要になります。自力で調べることが出来ない人は
既存のマルチに入ってプレイした方がいいです。

○サーバーの立て方
 現在、マルチサーバー構築には以下の二通りの方法があります。

  • ゲーム内からSurvival MPを選択してクライアントとサーバーを一体として動かす方法 解説動画
  • サーバー単体として動かす方法

 前者の場合、サーバー構築者にはかなり強力なマシンスペックが要求されます。また、サーバー構築者がクラッシュやエラーによって強制終了してしまうと、プレイヤーデータはほぼ確実にロールバックされてしまいます。
 著者は後者をおすすめしますが、これにも何かしらデメリットがある場合は、この部分を編集してください。
 また、TFPは今後のバージョンにおいてクライアントがサーバを兼ねる方式のサポートはしないと明言しているため、サーバ専用のビルドを使うべきでしょう。
 Alpha10以降、Alpha9.3から10へサーバー一覧表が劇的に変更されたため、再インストール確定です。作ったセーブデータも故障の原因になる一因があるため、きれいさっぱり削除してください。
 ここでは、前者のやり方は割愛して、後者のやり方をまとめます。

Step.1 ポート開放

 サーバーを建てる場合はまずはじめにポート開放をしないといけません。

  • UDPポート: 26900

開放してください
ポート開放の作業は環境によって手順が変わるので割愛しますが、リスクを理解せず開放したり、出所の定かでないツール等を実行することは大変危険なので、気をつけましょう。参考までに、使用しているルータがUPnPに対応している場合はこのようなオープンソースのツールを使うのがお勧めです。

ポート開放参考サイト
1.
TOP NTTルータ Aterm YAHOO エレコム/ロジテック バッファロー コレガ IOデータ PLANEX その他ルータ
から自分のルータメーカーにあったポート開放説明を参照してください。
2.
個人で導入しているアンチウイルスソフトの、ファイアーウォールの設定から、新らたにファイアーウォール設定を作成してください
ポート26900 80:8080(HTTP) 81:8081(HTTP/リモート)など
TCPやUDPにおけるポート番号の一覧(ウィキペディア)を参照 

Step.2(1) 7 Days to die(以下7DTD)付属の起動batを使う方法

 この方法は最もスタンダードで安全です。(ここでいう安全とは、問題があった場合公式が対応してくれる可能性があるということ。)

 まずサーバーの設定を行います。7DTDをダウンロードした場所を開いてください。steamならば以下の場所にあるでしょう。

 ~\Steam\SteamApps\7 Days To Die

 このフォルダの中にserverconfig.xmlというファイルがあります。これをテキストエディタ等で開きます。
 開き終わったら、この中の各種項目を変更していきます。

 <property name="○○○" value="△△△"/>の△△△を変更します。

ServerPort使用するポート番号を変更します。ここを変更した場合、開放するポート番号が変わります。
ServerIsPublictrue/falseConnectToServer画面のサーバー一覧に表示するかしないかを決定します。trueで表示します。
ServerNameサーバーの名前です。(サーバー一覧のサーバー管理者の名前になります。)
ServerPasswordサーバーにパスワードを設定します。必要ない場合は何も入れないでください。
ServerMaxPlayerCount1-2-4-8-?最大接続人数です。変更人数はゲーム内からサーバーを建てる場合の数値を参考にしました。上限は不明です。
PCの性能による15・32・64
GameWorldNavezgane
Random Gen
MP Forest Horde
MP Forest Skirmish
MP Wasteland Horde
MP Wasteland Skirmish
MP Wasteland War
どのようなマップを生成するかについての設定です。従来の固定マップはNavezgane。ランダム生成マップはRandom Genを入力しましょう。Horde/Skirmish/warは Game Mode内でCreativeを選択する条件です。
GameNameワールドの名前です。(サーバーリスト一覧のTOPName、ゲームメニューのセーブデータの名前です。)
ランダム生成にしている場合これがseed値になるようです(?)。
GameDifficulty0-1-[2]-3-4ゲームの難易度です。資源や物資、Mobのドロップに関係してくるようです。数字が大きくなるほど難しくなります。
GameModeGameModeSurvivalMP
GameModeSurvivalSP
α7.X時代
GameModeSurvival?
GameModeDeathmatch?
GameModeZombieHorde?
ゲームモードです。基本的にGameModeSurvivalMPを入力すれば問題ありません。Creativeモードはオフラインです。マルチの場合はゾンビなしとクリエティブモード:オンで可能
ZombiesRun0-1-2ゾンビの走る条件の設定です。
0:夜だけ走る(デフォルト)。
1:絶対に走らない。
2:常に走る。
BuildCreatetrue/falseクリエイトモード(アイテムやブロックを無制限に出せるモード)にするかどうかです。
DayNightLength?-[40]-?一日の長さです。40分が基準・30・40・60・120・240 対戦は15分・20分です。
FriendlyFiretrue/false他のプレイヤーへ攻撃があたるかあたらないかの設定です。True=PvP仕様 False=PvE仕様
DayCount
FragLimit
MatchLength
RebuildMap
ControlPanelEnabledtrue/falseサーバー管理者もしくはそれに付随する人物がコンソール等からワールドを制御するコマンドを使えるようにするかどうかの設定です。詳細は別ページに記述されていますのでそちらをどうぞ。
ControlPanelPort[8080]使用するポートです。デフォルトでいいでしょう。
ControlPanelPassword[CHANGEME]コントロールパネルのアクセスパスワードです。外部にサーバーを公開する場合は必ず変更してください。
TelnetEnabledtrue/falseTelnetを使用するかどうかです。デフォルトでOK
※Telnetを設定する必要があります詳しくはググって下さい
TelnetPort[8081]Telnetのポートを指定します。デフォルトでOK
TelnetPasswordTelnetのパスワードを指定します。外部にサーバーを公開する場合は必ず変更してください。
DisableNAT[true]/falseルーターのNAT機能を使用するかどうかを指定します。基本的にデフォルトでOK
AdminFileNameサーバー管理者やモデレータなどの設定を行うファイルの名前を指定します。
DropOnDeath0-1-2-3死亡したときのインベントリやベルト内アイテムについて指定します。
0:全てのアイテムをその場に落とす。
1:ベルトのアイテムのみ落とす。
2:バックパックのアイテムのみ落とす。
3:全て消える。
DropOnQuit0-1-2-3サーバーから退出したときアイテムをどうするか指定します。
0:何もしない。
1:全てのアイテムをその場で落とす。
2:ベルト内アイテムのみ落とす。
3:バックパック内アイテムのみ落とす。
CraftTimer0-1-2アイテムをクラフトする際の待ち時間を指定します。
0:待ち時間なし。
1:通常の待ち時間。
2:通常の2倍の速度でクラフト。
LootTimer0-1-2車や金庫などアイテムを探索する際の待ち時間を指定します。
0:待ち時間なし。
1:通常の待ち時間。
2:通常の2倍の速度で探索。
PlayerDamageGiven0-1-2-3-4ダメージの与える量を指定します。
0:Very Low 50%
1:Low 75%
2:Medeum 100%
3:High 150%
4:Very High 200%
PlayerDamageRecieved0-1-2-3-4ダメージの回復量の速さを指定します。
0:Very Low 50%
1:Low 75%
2:Medeum 100%
3:High 150%
4:Very High 200%
EnemySenseMemory数字(単位:sec)ゾンビが何かを感じてから追跡する時間(秒)です。
EnemyDifficulty0-1ゾンビの強さです。
0:Normal
1:Feral
違いは壁越しに見えない/見える
NightPercentage数字(単位:%)夜の時間の割合です。パーセントで指定します。
BlockDurabilityModfier数字(単位:%)ブロックの硬さです。100%を基準として小さくすれば柔らかく、大きくすれば硬くなります。25%・50%・100%・150%・200%
クリエイティブで3%以下にすれば作業がはかどります。0%のみ最下層の岩盤を破壊・取得可能なブロックに変化できます(チート対策)。
LootAbundance数字(単位:%)探索物の豊富さです。小さいと物資が少なくなります。
LootRespawnDays数字(単位:days)探索物の中身が再度補充される日数です。
LandClaimSize数字(単位:ブロック)ブロックの耐久値をあげる。赤い旗マークのブロック。PvPの拠点保護目的。
64・128・256においてはゾンビ攻撃にも有効、ただし期限切れや再設置しない場合はこの限りではない。
LandClaimDeadZone数字(単位:ブロック)LandClaimBlockの範囲に新たにClaimBlockが置けない範囲
ブロック増設禁止範囲
LandClaimExpiryTime有効期限(単位:日)現実日数によってオフラインでも保護される効果時間
LandClaimDecayMode0-1-2クレームブロックの効果は最初の一日は100%ですが、以後有効期限まで減衰していきます。その減衰関数を指定します/ 0:線形減衰  1: 指数関数的減衰 2: 期限まで100%(劣化なし)
LandClaimOnlineDurabilityModifier1-2-[4]-8-16-32-64-128-256標準4倍 公式推奨32倍:オンラインでのブロックの硬さの倍率変動(1・2・4・8・16・32・64・128・256)
LandClaimOfflineDurabilityModifier1-2-[4]-8-16-32-64-128-256標準4倍 公式推奨32倍:プレイヤーがオフライン(常時運用Sarverのみ)でのブロックの硬さの倍率変動(1・2・4・8・16・32・64・128・256)
AirDropFrequency数字(単位:hour)航空支援物資の間隔です。
MaxSpawnedZombies数字(単位:%)そのワールドにおいて、ゾンビが最大何体同時に沸いていられるかを指定します。標準は60(Horde最大値60匹)最大値は80(Horde最大90-120匹)サーバーが重い場合はこれを少なくしましょう。
ゾンビ1体に消費されるメモリー(MB)が異なる。(Horde最大限界値は100匹の3回の300匹/100これ以上はメモリーが16GB-64GBが必要)
EACEnabledtrue/falseアンチチートツールを有効にするかを指定します。現状trueにしたほうが確実に良いです。基本的に海賊ゲームの排除を目的にしています。ちなみに、テストモードでWindowsを起動している場合EACが有効にできないためEACサーバーには入れない可能性があります。

 書き換えが終わったら上書き保存してください。

 次に、同フォルダに入っているStartDedicated.batファイルをダブルクリックして起動しましょう。数十秒待っていると、コンソールが流れていって、英語でパスワードを入力してくださいのような文が表示されれば成功です。

 スペックやパスワードが変更されている場合パスワード入力に行き着きません。
 また、Telnetクライアントがインストールされていない場合も行き着きません。
 Telnetがインストールされていると仮定して、行き着かなかった場合は「Winキー + R⇒telnet⇒open localhos 設定したポート」でその画面に行き着きます。
 batファイルはxmlの内容を読まないため変更後の情報は反映されません。


 サーバー一覧に表示されるようにしている場合は、一覧からサーバー名で検索して入りましょう。
 IPアドレスを直接指定して入る場合は、自分のワールドに入る際には必ず127.0.0.1サーバーを起動するPCのローカルアドレス(192.XXX.XXX.XXX)もしくはLANマーク(localhost)から自分のサーバーへ入りましょう。他の人にIPを教える場合は、グローバルIPを教えましょう。(DDNSサービスなどを使っている場合はそれでもOK)

  • 確認君+
    使い方
    • グローバルIPの参照
    • ゲームを終了するにはクライアントのゲームを終了することと、サーバー管理のゲームを終了するために、コントロールパネルを参照してください。ゲーム時間が1日に戻る方はブラウザからシャットダウンしていないために起こります

Step.2(2) サーバー管理ソフトを使う方法

 この方法はアルファテスターによるファンによって製作されたマネージャーです。公式ではないため、使用するには注意が必要です。問題が起こっても自己責任でお願いします。また、この場に掲載するのに何か不都合がありましたら、削除の上、一言削除した旨をお願いします。

  • 外国産サーバーマネージャー導入のメリットは、何と言っても多機能。サーバー管理に必要な物が多く利用できます。
    デメリットは日本語非対応なので、導入から運用まで英語が出来なければ時間が掛かる。報告・要望なども英語での
    やりとりになるので、不具合発生時に大きな不安が残る。
  • 国産サーバーマネージャー導入のメリットは、日本語対応で理解しやすい。不具合報告や機能追加の要望など
    開発者とのやりとりが容易!デメリットは機能面で外国産に大きく劣り、テスト段階なので最低限の機能しか
    保持していない。しかし、付属の『ConfigEditor』はサーバー管理初心者に優しい設計になっていて使い勝手が
    良い、今後の発展に期待!

・不特定多数の利用を想定しているサーバーの場合は、海外産を使う方がメリットが大きい。
・身内専用のサーバーを建てる場合や、サーバー管理初心者なら国産を使う方がメリットが大きい。
※サーバーマネージャーは公式が制作したものではありません。導入は自己責任です。

外国産サーバーマネージャー

 まずは、サーバー管理ソフト"7DaysServerManager"をダウンロードします。ダウンロードは以下からします。

 ダウンロードしたら、起動しましょう。

 起動すると、3Stepで初期設定を行います。ここでは7DTDのフォルダの位置を設定しています。指示に従って7DTDをダウンロードしたフォルダを指定しましょう。Steamの場合は、自動でやってくれます。

 その後次のような画面が表示されるでしょう。

&ref(): File not found: "7dsm_1.png" at page "マルチサーバー構築について";

 左の6つ並んでいるアイコンから、各種設定を行います。設定はだいたい前述したxmlファイルと同じですので、各自で行ってください。記述は割愛します。


国産サーバーマネージャー

 上記のソフトウェアが当環境では動作しなかったので国産サーバーマネージャー作ることにしました。
 現在上記のソフトよりも機能は大幅に劣りますが、英語がわからなかったり、同じように動作しなかった場合などにお使いいただけるとありがたいです。
 Savannah Manager
 また、現在動作テストしてます。
 機能案・改善点などを提供していだけると幸いです。


 皆様のおかげで徐々に発展できてきました。
 Steamコミュニティ作っておいたので案や不具合、感想などがありましたらこちらにお願いします。
 Savannah Manager - SteamCommunity


 YoutubeでSavannah Managerを用いたサーバーの建て方を上げました。
 お役に立てるとうれしいです。
 7dtd Savannah Managerを用いたサーバーの建て方

Step.2(3) Linux系インストール方法

CentOS6.6(x86_64)

※インストールバージョンはα10.3です。
※CentOS6.6を最小構成(minimal)でインストールし、最新状況(yum update済み)でネットワークに問題なく繋がっている事が前提です。
https://7dtd.illy.bz/に記載されている物を編集して、一部足りない部分を書き足してます。
※ubuntu 14.04 の場合は事前準備を"apt-get install wget rsync gcc lib32stdc++6 netcat xmlstarlet"のコマンドに変更でOKです。(2014/12/23現在)

事前準備
 yum -y install wget
 yum -y install rsync
 yum -y install gccコンパイルに必要です(make)
 yum -y install libstdc++.i686Steamが必要とします(32bit版)
 yum -y install nc
 yum -y install libxsltXMLStarletインストール時に必要とされます
 wget http://pkgs.repoforge.org/xmlstarlet/xmlstarlet-1.5.0-1.el6.rf.x86_64.rpmサイトが無くなる可能性があります。無い場合は他の場所よりxmlstarletのrpmを入手してください。
 rpm -ivh xmlstarlet-1.5.0-1.el6.rf.x86_64.rpm


本体のインストール
 useradd -d /home/sdtd -m -r -s /bin/bash -U sdtd起動用ユーザーを追加
 wget http://illy.bz/fi/7dtd/management_scripts.tar.gz
 tar --touch -xvzf management_scripts.tar.gz -C /ルート直下に解凍します
 vi /etc/7dtd.conf下記の項目にSTEAMのユーザー名とパスワードを入力してください
export STEAM_USER=
export STEAM_PASS=
例 ユーザー名「7days」 パスワード「todie」
export STEAM_USER=7days
export STEAM_PASS=todie
 cd /usr/local/lib/7dtd/start-stop-daemon
 make
 make install
 chown root.root /etc/7dtd.confオーナーの変更
 chmod 0600 /etc/7dtd.confアクセス権の変更
 chown sdtd.sdtd /home/sdtd -R配下のオーナーを変更
 chown root.root /etc/init.d/7dtd.shオーナーを変更
 chown root.root /etc/bash_completion.d/7dtd
 chown root.root /usr/local/bin/7dtd.sh
 chown root.root /usr/local/lib/7dtd -R配下のオーナーを変更
 chmod 0755 /etc/init.d/7dtd.shアクセス権の変更
 chmod 0755 /etc/bash_completion.d/7dtd
 chmod 0755 /usr/local/bin/7dtd.sh
 chmod 0755 /usr/local/lib/7dtd -R配下のアクセス権変更
 7dtd.sh updateengine初回起動時にSteam Guard codeを要求されます。
「Steam Guard code:」と表示されたら、
Steamユーザーに登録したe-mailにメールが来ているので、
そのコードを入力してください。


起動設定
 7dtd.sh instances createインスタンスの作成
/home/sdtd/instances/に同名のフォルダが作成され、MAPデータ・ログなども以下に保存されます。

 以降設定項目が表示されますので環境に合わせて設定してください
 設定値はStep.2(1)に記載されているのとほぼ同じです。
 「true・false」は「y・n」でも設定可能です。

Instance name識別できる一意の名前です。この名前で起動したり停止したりします。
インスタンスは複数登録する事が可能です
Server nameサーバーの名前です。サーバーリストに表示されます
Server passwordサーバーアクセス時に必要なパスワードです。なしも可能です
Public server [true]サーバーをサーバーリストに表示するかです。
Base Port (1024-65533) [25000]指定したポートから3個利用します
25000~25002
Max players (1-64) [4]
Server description
Server website URL
Disable NAT [true]
Enable EasyAntiCheat [true]
Maximum number of concurrent zombies [60]
Enable control panel [false]:
Control panel port (1024-65535) [8080]
Control panel password
Telnet port (1024-65535) [8081]
Telnet password
Random gen seedゲームのシード値です。ランダムMAPはこの数値で生成ロジックが変ります
ユーザーがアクセス時に画面上に一瞬表示されます。
World name, options
Select option (1-5) [1]
1: Random Gen
2: Navezgane
3: MP Wasteland Horde
4: MP Wasteland Skirmish
5: MP Wasteland War
Game mode, options
Select option (1-2) [1]
1: GameModeSurvivalMP
2: GameModeSurvivalSP
Friendly fire [false]
Item spawn menu [false]
Block durability (%) [100]
Drop on Death, options
Select option (0-3) [0]
0: Everything
1: Toolbelt only
2: Backpack only
3: Delete all
Drop on Quit, options:
Select option (0-3) [1]
0: Nothing
1: Everything
2: Toolbelt only
3: Backpack only
Loot abundance (%) [100]
Loot respawn delay (days) [7]
Airdrop delay (hours) [72]
Craft speed, options
Select option (0-2) [1]
0: Instant
1: Normal
2: Double
Loot open speed, options
Select option (0-2) [1]
0: Instant
1: Normal
2: Double
Length of one day [40]
Night percentage (10-90) [35]
Difficulty (+ damage given / received), options
Select option (0-5) [2]
0: Scavenger (200% / 50%)
1: Adventurer (150% / 75%)
2: Nomad (100% / 100%)
3: Warrior (75% / 150%)
4: Survivalist (50% / 200%)
5: Insane (25% / 250%)
Zombies run, options
Select option (0-2) [0]
0: Default day/night walk/run
1: Never run
2: Always run
Sense memory (seconds) [60]
Spawn mode, options
Select option (0-5) [3]
0: Disabled
1: 50%
2: 75%
3: 100%
4: 125%
5: 150%
Enemy difficulty, options
Select option (0-1) [0]
0: Normal
1: Feral
Land claim size [7]
Minimum keystone distance [30]
Claim expiry time (days) [3]
Claim decay mode, options:
Select option (0-2) [0]
0: Linear
1: Exponential
2: Full protection
Claim durability modifier - online [4]
Claim durability modifier - offline [4]


起動
7dtd.sh start <instancename>Instanceは上記の設定の「Instance name」を入力します。&br「Done」と表示されれば成功です
「Done」と表示されなければ、サポートに問い合わせてください


終了
7dtd.sh kill <instancename>
コントロールパネルにアクセスして「shutdown」ボタンを押す
telnetで接続して「shutdown」コマンドを入力してください。※telnetですが、改行コードに注意してください「cr」では認識してくれません「cr+lf」「lf」にしてください


バージョンアップ
7dtd.sh updateengine
7dtd.sh updatescripts
プログラムを最新版に更新します
起動スクリプトを最新版に更新します



  

おわりに

 ここでの記述はα9.2現在(2014/9/7)のものです。
 今後これらの記述に誤りが出てくる場合があります。その場合は適宜編集をお願いします。

旧サーバーについて

サーバーについて_old?

コメント

質問時には"状況を詳しく"書きましょう!
質問する方へ!質問に対して返事が来たら結果報告をして下さい。同様のドラブルで困っている方々が
その流れを見て自己解決できます。