サーバの建て方

Last-modified: 2013-01-21 (月) 00:27:58

NS2専用サーバの建て方

注意:このページはベータリリースについて説明した内容が含まれています。
いくつかの情報は、正式版でも利用できる可能性がありますが古い情報であることを注意してください。

現状24人サーバーを建てるにはCore i7 OC 4.4Ghzが目安です。

必要なもの

NS2専用サーバを実行するためには以下を必要とします

  • Windowsが動作するコンピュータ
  • SteamCmd
  • PhysX(必須ではありません)
  • DirectX

*NS2専用サーバのインストール(SteamCmd経由)
以前のバージョンで使用されていたHLDSUpdateToolは使うことはできなくなりました。
NS2専用サーバはSteamCmdを使用しインストールする必要があります。

サーバ用Steamアカウントの作成

NS2専用サーバをダウンロードするためにはSteamアカウントが必要です。
注意:サーバをダウンロードする為にあなたが普段使っているSteamアカウントを使用しないでください!
Steamにアクセスし、新しいアカウントを作成してください。
新しいアカウントではクレジットカードの登録やゲームを購入する必要はありません。

SteamCmdの準備

以下のページからWindows用SteamCmdをダウンロードしてください。

SteamCmd用のフォルダを作成します。
ダウンロードしたファイルをSteamCmdを作成したフォルダに解凍してください。
SteamCmd.exeを実行してください。起動するとSteamCmd自身のアップデートが自動的に行われます。
SteamCmd自身のアップデートが失敗する場合はコントロールパネルのインターネットオプションよりセキュリティレベルを中に変更してみて下さい。また、プロクシを利用している場合は同様にプロクシの設定を自動検出に変更してみて下さい。

SteamCmd.exeを実行し、以下を入力します。

login <ユーザ名> <パスワード>

Steam Guardを有効にしているアカウントの場合、ログインが失敗します。認証コードがメールで送信されていますのでメールを確認してください。
認証コードを確認したら以下を入力します。

login <ユーザ名> <パスワード> <認証コード>

SteamCmdを使用しNS2専用サーバをインストール

SteamCmd.exeを実行し、ログインしてください(前項参照)

  • NS2専用サーバをインストールするフォルダを指定します。(フォルダは自動的に作成されます)。これはSteamCmdとは別のフォルダを指定するようにしてください。
    force_install_dir C:\NS2Server\
  • NS2専用サーバのダウンロードを開始します。ダウンロード完了までしばらく時間が必要となります。
    app_update 4940 validate

サーバの簡単なアップデート方法

メモ帳を起動し、以下を入力します。
ユーザ名、パスワード、及びフォルダ名を修正してください。

SteamCmd +login <name> <password> +force_install_dir <dir> +app_update 4940 verify +quit

作成したファイルをSteamCmd用フォルダに"updateserver.cmd"としてこのファイルを保存してください。
保存する際に"updateserver.cmd.txt"になっていないことを確認してください。

サーバのアップデートが必要な場合作成した"updateserver.cmd"を実行してください。

サーバが使用するポートについて

デフォルトでは27015と27016がサーバ用コンピュータに対して開かれている必要があります。
オプションでデフォルトポートから変更した場合、「指定したポート番号」及び「指定したポート番号+1」がサーバ用コンピュータに対して開かれている必要があります。

Windowsコンピュータでのサーバセットアップ

サーバの起動(簡易版)

NS2専用サーバフォルダにある「Server.exe」のショートカットを作成します。
ショートカットのプロパティを開き、リンク先を修正します。

"<Server.exeのパス>" -name <サーバの名前> -map <マップ名> -limit <接続可能な人数>

"C:\ns2server\Server.exe" -name "NS2 TEST SERVER" -map ns2_tram -limit 16

サーバ起動オプション一覧

これらの起動オプションは「-file」オプションで指定したテキストファイルにまとめて設定することが可能です。

起動オプション説明
-fileファイルへのパスサーバ起動オプションを列挙したテキストファイルを指定します。
  • サーバ起動ファイルの例(c:\servertxt\server1.txt)
    -port 27017 -limit 20 -name "SAMPLE SERVER" -map ns2_tram
  • サーバ起動オプションの例
    server.exe -file c:\servertxt\server1.txt
起動オプション説明
-fileファイルへのパスサーバ起動オプションを列挙したテキストファイルを指定します。
-ipIPアドレスサーバが待ち受けするIPアドレスを指定します。(通常は不要です)
-port数字サーバが待ち受けするポート番号を指定します。指定したポート番号と、+1されたポート番号の2つが使用されます。
-limit数字サーバに接続可能なプレーヤー人数を指定します。
-password文字列サーバに接続する際、パスワードを必要とする場合に指定します。
-name文字列サーバ名を指定します。
-mapマップ名サーバ起動時のマップを指定します。
-config_pathフォルダへの絶対パスサーバのコンフィグファイルを保存するパスを指定します。
-modsMODのIDサーバで使用するMODのIDをスペース区切りで指定します。
-modstorageフォルダの絶対パスMODを使用する際、Steam Workshopからダウンロードされるフォルダを指定します。
-webadmin無しWebadmin機能を利用する場合指定します。
-webdomain文字列Webadmin機能を利用する場合指定します。
-webport数字Webadmin機能で待ち受けするポート番号を指定します。
-webuser文字列Webadmin機能で認証を行う場合のユーザ名を指定します。(単一ユーザ認証)
-webpass文字列Webadmin機能で認証を行う場合のパスワードを指定します。(単一ユーザ認証)
-webusersファイルへのパスWebadmin機能で認証を行う場合の.htaccessファイルを指定します。(複数ユーザ認証)
-console無しサーバ起動時に、自動的にコンソールウィンドウを表示する場合指定します。

起動オプションの例

  • とりあえず起動するだけなら
    Server.exe -map ns2_tram -limit 32
  • 各種サーバコンフィグを有効にする場合
    Server.exe -config_path "C:\bat\config1" -map ns2_tram -limit 32

1台のコンピュータで複数のNS2専用サーバを実行する

NS2専用サーバはデフォルトでは実行中%AppData%\Natural Selection2フォルダを使用します。
あなたがWindows上で同一のユーザから複数のNS2専用サーバを実行しようとすると「%AppData%\Natural Selection2」フォルダへの書き込みが競合してしまいます。

そのため以下のような手法を検討し、複数のServer.exeをそれぞれ異なったパスが使用される用にして下さい。
・-config_pathオプションを使い、デフォルト以外のディレクトリを使用する。。
・runasコマンドを使用し、異なるユーザでServer.exeを起動する。
・異なるユーザで実行されるタスクを作成し、タスクからServer.exeを起動する。

Linuxコンピュータでのサーバセットアップ

NS2には、現時点で公式にサポートされているLinux用専用サーバはありません。
NS2コミュニティでWine(Windows用アプリケーションをLinux上で動作させるソフトウェア)でNS2専用サーバをセットアップする為のガイドを作成されています。詳細は以下のスレッドを見てください。

サーバコンソールの使い方

コンソールウィンドウの表示方法

Server.exeを起動し表示されたウィンドウを選択し、「tab」キーを押下するとコンソールウィンドウが表示されます。
コンソールウィンドウを選択後、「~」(チルダ)キーを押下することで、あなたはサーバコンソールにアクセスできます。

コンソールコマンド一覧

コンソールコマンド一覧?を参照してください。

ウェブ管理機能

仕様が変わったため書き直しが必要

サーバコンフィグファイル

デフォルトでは以下のパスにあるコンフィグファイルが読み込まれます。

  • %APPDATA%/Natural Selection 2/config/
    例:あなたがWindows 7を使っている場合
    C:\Users\<ユーザ名>\AppData\Roaming\Natural Selection 2\config\
    • ServerAdmin.json
    • ServerConfig.json
    • BannedPlayers.json
    • MapCycle.json
    • ConsistencyConfig.json

コンフィグファイルを保存したフォルダは、サーバ起動オプションで別のフォルダを指定することもできます。

Server.exe -config_path "C:\bat\config1" -map ns2_tram -limit 32

ServeConfig.json

サーバの基本設定を記述します。

  • 例 ルーキーモード、オートチームバランス、AFKキックを有効にする
    {
     "settings": {
       "rookie_friendly": true,
       "end_round_on_team_unbalance": 0.4,
       "auto_team_balance": {
         "enabled_after_seconds": 10,
         "enabled_on_unbalance_amount": 2
       },
       "auto_kick_afk_time": 180,
       "auto_kick_afk_capacity": 0.5
     },
     "tags": [ "rookie" ]
    }
項目解説
rookie_friendlytrue/falseRookie Serverを有効にします。Rookie Serverはサーバブラウザでは緑色で表示されます。
end_round_on_team_unbalance0~1の間の小数Marine÷AlienまたはAlien÷Marineの値がこの値より大きくなったらラウンドを終了させる設定です。
0に設定すると無効になります。1に近いほど少しの人数差でラウンドが終わるようになります。
この設定は両チームのプレーヤが合計6人以下の時は発動しません。
enabled_after_seconds秒数指定した人数差がこの秒数以上発生した場合、ゲームバランスを保つため
人数が多いチームはリスポーンが遅くなります。
enabled_on_unbalance_amount数字MarineとAlienのプレーヤ数にこの人数以上の差がある場合オートバランス機能が動作します。
auto_kick_afk_time数字(秒)指定した秒数の間AFKだったプレイヤーはキックされます
auto_kick_afk_capacity0~1の間の小数指定した小数×サーバの最大プレイヤー数に達するまでAFKキックを発動しないようにします

MapCycle.json

マップサイクルを記載します。

  • 例:
    {
        "time": 15,
        "mode": "order",
        "maps":
        [
    	"ns2_docking"
    	"ns2_mineshaft"
    	"ns2_summit"
    	"ns2_tram"
    	"ns2_veil"
        ]
    }

ServerAdmin.json

特定のユーザに対して、サーバコンソールコマンドを実行する権限を与えることができます。

  • 例:
    {
        "groups":
        {
            "admin_group":
               {"type":"allowed","commands":[
                    "sv_changemap","sv_reset","sv_say","sv_kick","sv_ban","sv_unban"
               ]}
            "co_admin_group":
               {"type":"allowed","commands":[
                    "sv_changemap","sv_reset","sv_say","sv_kick"
               ]}
        },
        "users":
        {
            "admin1": { "id": 111111, "groups": [ "admin_group" ] },
            "admin2": { "id": 222222, "groups": [ "admin_group" ] },
            "coadmin1": { "id": 333333, "groups": [ "co_admin_group" ] },
            "coadmin2": { "id": 333333, "groups": [ "co_admin_group" ] }
        }
    }

BannedPlayers.json

注意:このファイルをサーバ起動中に修正した場合、リアルタイムで設定が反映されます。変更には注意してください。

例:

 {
   { "name": "Murphy", "id": 11641641, "reason": "Recycled Base", "time": 1903827289 }
 }

時間はUnixタイムスタンプです。Unixタイムスタンプの作成は以下のサイトなどを利用して下さい。

コンソールコマンドsv_banとsv_unbanを使うことでも、このファイルが修正されます。

SteamIDのフォーマット

NS2は通常よく使われるのSteamID形式を使用しません。

  • サーバに参加しているプレーヤのSteamIDを取得する場合
    コンソールコマンドsv_statusで、あなたのサーバにジョインしているプレーヤのSteamIDを取得することができます。
  • SteamID形式の変換
    今までのSteamID情報がある場合、以下のように計算することが可能です。
  • 0:0:XXXXXの場合 XXXXXかける2
  • 0:1:XXXXXの場合 XXXXXかける2+1
  • 1:1:XXXXXの場合もXXXXXかける2+1(※1)

例:

SteamID 0:0:919317: 919317 * 2 = 1838634
SteamID 0:1:919317: 919317 * 2 + 1 = 1838635
SteamID 1:1:919317: 919317 * 2 + 1 = 1838635

※1:12/11/02現在SteamIDの0:1と1:1型が同じ値になるようなので管理者権限を設定する場合は注意が必要

ConsistencyConfig.json

サーバ及び接続してくるクライアントの、ファイル整合性チェック要否のリストを記載します。
デフォルトでは全てのファイルが整合性チェック対象となる為、クライアントのファイルを修正しているプレーヤーは接続することができません。

{

"check": [ "game_setup.xml", "*.lua", "*.fx", "*.screenfx", "*.surface_shader", "*.fxh","*.render_setup", "*.shader_template" ]

}

  • サーバ管理者がゲームバランスを変えたいなどの理由でサーバファイルを修正する
  • クライアントの改変を認める

ような場合はこのファイルを修正して下さい。通常は不要です。

{

"check": [ "game_setup.xml", "*.lua", "*.fx", "*.screenfx", "*.surface_shader", "*.fxh","*.render_setup", "*.shader_template" ]

"ignore": [ "shaders/DarkVision.fx","BalanceHealth.lua" ]

}