Left 4 Dead 2 Dedicated サーバの建て方
フレンド向けに公開するDedicatedサーバをインストールから構築、ロビー作成まで解説します。
また、ワークショップやModの導入も合わせてご紹介します。
なお、ポート開放と転送設定は7dtdで似たようなことを書いているのでそちらを参考にしてください。

7dtd サーバの建て方 - ポート開放と転送の必要性

しばらくして同一PCで試したところゲーム自体がポートを占有する(めんどくさくて確認まではしてないが)のか、入れたり入れなかったりするのでここでの方法は別でWindowsマシンがある人向けの情報です。
同一マシンで動かしたい場合は別の方法が必要となるため、別記事が完成するまでお待ちください。

最終更新日: 2020/06/29

はじめに

まず、サーバを建てるための前提スキルとして
  1. 自分で解決できる能力
  2. 使用しているOSを問題なく使える
  3. ネットワークに関する最低限の知識
が必要であるということを把握しておいてください。
また、PC初心者を対象とした記事ではないため基礎的内容の細かい説明は省きます。
わからない部分は各自でお調べください。

また、筆者はWindowsユーザーであるためWindowsの構築方法以外は把握しておりません。
ご了承ください。

サーバの種類

Left 4 Dead 2には二種類のサーバ形態があります。

  • ゲーム内サーバ

  • 一つはゲーム内で部屋を建ててプレイヤーを招待し、ゲームスタートする方法です。
    非常に簡単にサーバが建てられるため、フレンドとプレイする場合は大体この方法だと思います。
    しかし、ホストが何らかの理由で落ちた場合は途中でも問答無用でサーバが終了します
    また、UPnPにしっかりと対応していないルータは相手が接続できない場合があります。

    また、ホストがアドオン入れまくってると大体クラッシュするので途中で落ちまくることも多々あります。

  • Dedicated サーバ

  • もう一つはDedicatedサーバ(専用サーバ)で、ゲームとは別にサーバプログラムを動かす方式です。
    専用サーバを用意し、ネットワーク機器の設定を自分で行うコストがありますが、ゲーム内サーバと異なりプレイヤーがエラー落ちしてもサーバプログラムが落ちない限り動き続けます。
    非常に安定して動くため、アドオンを入れすぎて不安定なL4D2を遊んでいる場合はこの方式を用いるほうが良いでしょう。

サーバ側: 下準備

Left 4 Dead 2 Dedicatedサーバを導入するにはまずSteamCmdをインストールする必要があります。

SteamCMD - Valve Developer Community

適当な場所にインストールできたらとりあえず完了です。
なお、今回は「C:\Valve\SteamCmd」にインストールしました。
DedicatedサーバはSteamのツールにあるLeft 4 Dead 2 Dedicated Serverでもできると思いますが、未確認です。

サーバ側: サーバのインストール

steamcmd.exeを起動します。
すると入力待機画面が立ち上がるのでそこに以下のコマンドを入力します。
Steam> login anonymous
Steam> app_update 222860
                
しばらく時間がかかりますが、サーバプログラムがインストールされます。
インストール場所を変更する場合はforce_install_dirコマンドで変更できます。
デフォルトはsteamcmd直下にできる「steamapps\commons」内にインストールされます。
Steam> force_install_dir "C:\Valve\Server\L4D2"
                    

サーバ側: サーバ設定

サーバの設定は「steamapps\commons\Left 4 Dead 2 Dedicated Server\left4dead2\cfg」内に「server.cfg」を作成し、その中に設定を記述します。
なお、「部屋を建てる」で述べますが、「sv_search_key」と「sv_allow_lobby_connect_only」は友人同士で遊ぶ場合は多分必須項目です。

sv_search_keyはサーバ検索で優先的に検索するキーらしく、他人の接続を防止できるらしい。正直効果はわからなかったです。
sv_allow_lobby_connect_onlyはロビーからの接続のみを許可します。とはいえ、connectコマンドでの接続はできるのでおそらくサーバーリストからの接続を禁止する設定だと思います。
とりあえず以下が私が使っている設定項目です。
hostname "Server Name"

# require
sv_search_key "Any Serach Key"
sv_allow_lobby_connect_only 1

# others
mp_disable_autokick 1
sv_alltalk 0
sv_consistency 1
sv_voiceenable 1
sv_region 4

sv_log_onefile 0
sv_logbans 1
sv_lan 0
sv_pure 0
sv_cheats 0

sv_gametypes "coop"
                
なお、L4D2の場合はサーバパスワードなるものが存在しないので厳密なフレンド専用はできません。
以下で紹介する方法はその中でもおそらく最も入られづらい設定です。

サーバ側: サーバ起動

バッチファイルを作成するかコマンドプロンプトで以下のコマンドを入力することで起動できます。
マップ指定はどっちみちロビーから変更するのでダミーです。
start srcds.exe -console -game left4dead2 +maxplayers 4 +exec server.cfg +map c1m1_hotel coop
                
専用のコンソール画面が開き、しばらくするとサーバが起動します。

ゲーム側: ゲーム内コンソールを有効にする

サーバに接続するには事前にゲーム内コンソールを有効にしておく必要があります。
設定」より、「キーボード/マウス」を開くと「開発者コンソールを許可」という項目があるので有効にします。

この状態で半角全角を押すとコンソール画面が出てきます。
日本語入力がオンだと打ちづらいので一回閉じて数秒後もう一度コンソールを開くと英語入力になります。
確か入力欄を右クリックして英語にしても行けた気がします。

ゲーム側: 部屋を建てる

L4D2は一般的なゲームサーバと異なり少し特殊です。
サーバ起動時かコマンドでキャンペーンの部屋を建てたいところですが、この時点でキャンペーンなどの部屋はできません。
しかもパスワードをかけれないので入りたい放題です。
そこで前述の設定をした上で、参加者の誰かが接続するサーバをコマンド上で指定した上でロビーを作成することでサーバに接続することができます。
mm_dedicated_force_servers "ローカルIP"
                
ローカルネットワーク外から接続する場合はグローバルIPを入力します。

この状態でキャンペーンを選択し、「フレンドと一緒にプレイ」を選択します。

新しいキャンペーンロビーを作成」をクリックします。

サーバのタイプを「最適な専用サーバ」を選択し、いつもどおり部屋を建てます。

あとはゲームを開始するとサーバ側のコンソールが流れだすのでそうすると完了です。
ローカルネットワークからロビーに入るとフレンドを招待することはできますが、ゲームを開始するとフレンドだけ接続できません。
これは招待されたときの情報がローカルIPになっているためにフレンドもローカルIPに接続しようとしてしまうためです。
そのため、フレンドにはゲーム内コンソールからconnectコマンドで直接入ってもらいましょう。
connect グローバルIP
                    


ワークショップアドオンの導入

はじめに

こちらからはサーバ拡張作業になります。
必ず必要な手順ではないため省いても問題ありませんが、ユーザーメイドのカスタムマップをプレイする際は必須になるので環境構築だけでもおすすめします。

Python 3のインストール

アドオンのダウンロードに「Steam Workshop Content Downloader」を利用しますが、動作にPythonが必要ですのでインストールしておきましょう。
PythonはWindowsであればインストーラがあるので特にインストールで困るポイントはないと思います。
なぜか3.8でパスが追加されないので環境変数のPATHに追加しておきましょう。(3.7でもされなかったっけ?忘れた)
画像は3.7ですが、デフォルトインストールだと大体同じ場所にあるはずです。


Steam Workshop コレクションを作成する

Steam Workshop Content Downloaderはコレクション単位での管理のみサポートしています。
なのでまずはSteam Workshopにてコレクションを作成します。

まずLeft 4 Dead 2のWorkshopページを開きます。
すると「閲覧する」の中に「コレクション」があるので開きます。

開くと「コレクションの作成」という項目があるのでここでサーバ専用のコレクションを作成します。


設定項目は何でもいいと思います。
サーバで使う以上参加者にも入れて貰う必要があるので共有用としても使うといいでしょう。

Steam Workshop コレクションを作成する

作成したコレクションにアドオンを追加します。
今回は「Yama part 1」を追加してみます。

アドオンのページを開くと「コレクションに追加」ボタンがあるのでクリックします。

するとコレクション一覧が出てくるので作成したコレクションをクリックするとチェックマークが入って追加されます。

ちなみに、他者によってすでにコレクションが作成されている場合はそのまま追加することもできます。
マップ等の場合は複数の必須アドオンをコレクションにまとめてある場合があるので一つ一つやらなくても簡単に追加できます。

例えば、Yamaの場合は「l4d_yama」みたいにコレクションでまとめられています。
なお、コレクションで追加した場合は単体のページでコレクションに追加を開いてもチェックマークが入っていないので注意しましょう。
※複数追加して問題あるかどうかは未検証

コレクションIDの取得

次にコレクションのidを取得します。
まずはコレクションページを開きましょう。
赤枠あたりをクリックするとユーザーページが開きます。


するとコレクションタブがあるのでそれをクリックすると作成したコレクションが出てくるはずです。
見つかればそれを開きましょう。


コレクションページが開くとURLが出てくるので控えておきます。

SteamではデフォルトでURLを表示しない設定になっているので表示するように設定しておくと幸せになれます。
わからなければChromeなどのブラウザでもURLはわかります。



URLがわかればあとはクエリのidパラメータを控えます。
今回は「https://steamcommunity.com/sharedfiles/filedetails/?id=1841176875」なので、「1841176875」ですね。
これがコレクションIDになります。

Steam Workshop Content Downloaderのダウンロード

次に「Steam Workshop Content Downloader」をダウンロードします。
Git管理なのでgitでcloneするなりGithubからそのままダウンロードするなり方法はお好きな方で。
ダウンロード後に、中の「workshop.py」を「steamapps\commons\Left 4 Dead 2 Dedicated Server\left4dead2\addons」にコピーします。
ぶっちゃけ場所はここじゃなくてもいいんですが、更新の際にいちいちアドオンのvpkファイルをコピーする必要があって二度手間なのでこうしておくと楽です。

アドオンの新規インストール

コレクションIDがわかればあとはworkshop.pyを実行するだけです。
workshop.pyでは引数にコレクションIDを渡せばコレクションに追加されているアドオンすべてがダウンロードされます。
python workshop.py 1841176875
                
なお、詳しい説明はGithubページに書いてあるのでそちらを一読してください。
ちなみに成功するとこんな感じの出力になります。
> python workshop.py 1841176875
Downloading 372020201.vpk
Downloading complete
Downloading 121086524.vpk
Downloading complete
                    

アドオンの更新

アドオンの更新は単にworkshop.pyを実行するだけです。
python workshop.py
                
具体的には、addons.lstファイルにコレクションIDが入っていればそれを自動的に読み取って更新してくれます。
なので、コレクションにアドオンを新しく追加した場合もこの手順で自動的にダウンロードしてくれます。
ちなみに成功するとこんな感じの出力になります。
> python workshop.py 1841176875
Plugin 372020201 already up-to-date
Plugin 1615944537 already up-to-date
Downloading 121086524.vpk
Downloading complete
                    


SourceModの導入

はじめに

こちらからはサーバ拡張作業になります。
必ず必要な手順ではないため省いても問題ありませんが、より難易度を上げたい場合やチートレベルのModなどのワークショップでは実現できないModが追加できるのでよりカスタマイズしたい場合は導入しましょう。
ちなみに、分かりづらいので項目分けしていますが、Metamodも必要なのでこちらも導入しておきましょう。

SourceModのダウンロードとインストール

ダウンロードは「SourceMod: Half-Life 2 Scripting」より対応のOSを選択するとダウンロードが始まります。

インストールは、ダウンロードしたファイルの中にある「cfg」と「addons」の2つのフォルダを「steamapps\commons\Left 4 Dead 2 Dedicated Server\left4dead2」にコピーするだけです。

SourceModプラグインのインストール

プラグインによってインストール方法は異なり、多種多様なので一概には言えませんが、大体は同じなので一つだけ例で出してみます。

今回は「[L4D/L4D2] Infected Health Gauge (Tank & Witch & Special)」です。
こういったプラグインのページを開くと下の方に「Get Plugin」があるのでクリックするとsmxファイルがダウンロードできます。
これを「steamapps\commons\Left 4 Dead 2 Dedicated Server\left4dead2\sourcemod\plugins」にコピーします。
これだけです。

ただ、プラグインによっては追加で必要なファイルがある場合があるので説明を読みながら導入するようにしましょう。
中には厄介なプラグインもあって、例えばSuper TanksはGet Pluginを押すとエラーでダウンロードできません。
その場合はGet Sourceを押し、spファイルをダウンロードします。
後はspファイルを「SourceMod Plugin Compiler」に流すとsmxファイルが手に入ります。


Metamodの導入

Metamodのダウンロードとインストール

MetamodもSourceMod同様に「Metamod:Source - Snapshots」より対応するOSを選択すると開始します。

インストールも同様に「addons」フォルダを「steamapps\commons\Left 4 Dead 2 Dedicated Server\left4dead2」にコピーするだけです。

metamod.vdfの作成 : オプション

デフォルトで入ってるやつで大丈夫だと思いますが、うまく動かない場合はmetamod.vdfを編集します。
といっても「Make a VDF File」で「Left 4 Dead 2」を選択して生成すれば良いだけなので特に説明はいらないかな。