L4D2多人数サーバーの建て方

L4D2は古いゲームの為、2018年時点で参考サイトの情報が古くなってサーバー構築で色々とつまづいた為
現時点で上手くいった経緯を記しておく。


VRChatのフレンドと遊ぶのにちょうどよいと思いL4D2で遊び始めたが、人数が増えたので製品版の協力:4人、対戦:8人ではあぶれる人が出たため自前でサーバーを建てればキャンペーン(協力、COOP)、対戦(VS)の人数制限を外せる事を知りサーバーを運用し始めた(最大32人。対戦ロビーを無理やり流用してCOOPを8人まででやるならSteamWorkshopからModをダウンロードするだけでも可能)

  • 参考サイト

http://gengen5656.blog46.fc2.com/blog-entry-34.html
https://l4d2.ngnl.org/?%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89
http://blog.livedoor.jp/shitserver/archives/51529594.html


同じPCでサーバとL4D2ゲーム本体の起動はできないので、自分も遊ぶのであればサーバ用のPCとゲーム用のPCで2台を用意する必要がある。


Dedicated Server
SteamCMD


の2通りあるが、インストールがSteamから簡単にできるDedicated ServerではなぜかLANモードでしか起動できず(XPの頃のゲームなので64bitだと難あり?)
2018/8/25時点


SteamCMDだと外部にサーバを公開できた。
CUI(コンソール)でインストールする必要があるが叩くのは3コマンドのみで簡単にできる
SteamCMDでサーバーに必要なプログラムをインストール(と言ってもL4D2のファイルとほぼ同じ)
方法はこちらを参考
https://l4d2.ngnl.org/?%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89


addon、pluginを入れる
まず全てのpluginを入れるのに必要な
SourceMod、metaModを入れる(必要なファイルをダウンロードしてきてフォルダにコピーのみでOK)
SourceMod
http://www.sourcemod.net/downloads.php
Metamod
http://www.metamodsource.net/

  • 多人数化用のpluginを入れる

こちらのサイトを参考
http://blog.livedoor.jp/shitserver/archives/51529594.html
left4downtown+l4dtoolz(この組み合わせは不具合が多いらしいが私の環境では安定している、どちらか1つを入れろと書いてあるサイトもあるが海外の掲示板をみると両方入れている人の方が多い印象)
COOP鯖であればl4dtoolzだけで問題無い
left4downtownはこれを基に開発されたpluginを導入するときに必要となる。windowsではleft4downtown単体で人数上限を外すことができない(addonの説明には外せるようなことが書いてあるのだが)


L4DToolZ
https://forums.alliedmods.net/showthread.php?t=93600


left4downtonw2はフォーラムのもの(0.5.4.2)は最新でないためwindowsでは動作しない。
githubから最新のものを取得する必要がある
(この辺が既存のblogだと情報が更新されていないので苦労した)


GitHub Left4Downtown2(0.6.2) Releaseフォルダのdllとgamedataのtxtをダウンロードしてくる。soファイルはlinux用のため不要
https://github.com/Attano/Left4Downtown2
フォーラムのものは動作しない Left 4 Downtown 2 (0.5.4.2) - L4D2 Only, Updated Left4Downtown
https://forums.alliedmods.net/showthread.php?t=134032


Left4Downtownのフォルダ構成は下記のようになる
left4dead2\addons\soucemod\extensions\
→left4downtown.ext.2.l4d2.dll
→left4downtown.autoload(←空のtxtファイルを作成してファイル名を変更して作成する)
left4dead2\addons\soucemod\gamedata\
→left4downtown.l4d2.txt


対戦の場合はsuperversusを入れる
https://forums.alliedmods.net/showthread.php?p=830069?p=830069
(superversusの動作にdowntownが必要なため対戦サーバにはdowntownを入れているが、COOPは今のところ必要なpluginを入れていないのでdowntownは入れていない)


私の環境では対戦サーバとCOOPサーバは違うフォルダにそれぞれインストールして起動時にどちらのbatをたたくかで選択している。pluginやcfgを分けたいため。


サーバを起動するbatファイルだが、ネットで参考にした記述だとうまくいかず(強制的にLANモードになる)
cd "C:\SteamCMD\l4d2"
srcds.exe -autoupdate -console -secure -game left4dead2 +hostport 27016 +exec server.cfg

このようにパラメータからmapの指定を削って、一度サーバを起動したあとに
コンソールから「map c1m1_hotel coop」のようにマップを指定して起動すると正常に動作した
「map <マップ名> <モード>」
マップ名は(left4dead2\mapsやleft4dead2_dlc1\mapsのファイル名を参考)
c1m1_hotel
c2m1_highway
c3m1_plankcountry
c4m1_milltown_a
c5m1_waterfront
c6m1_riverbank
c7m1_docks
c8m1_apartment
c9m1_alleys
c10m1_caves
c11m1_greenhouse
c12m1_hilltop
c13m1_alpinecreek
モードは(省略するとcoopになる)
協力:coop
対戦:versus

  • フレンドでない知らない人が入ってくる

L4D2が既に下火なため滅多にないがCOOPで建ててるとたまにある。
サーバのコンソールからsteamIDでキックするか、steamGroupIdの設定とかで回避できるかも?うちでは特にやっていない。
cfgにあるサーバのパスワードはL4D2では使用できない(効かない)ので設定しても意味がない。


入れた方がよいplugin、cfgの設定など
【運用編】に続く