こんにちは。
今回はAssetto Corsaで流行りの「首都高トラフィックサーバー」の構築方法をご紹介したいと思います。
Windows版での構築方法ですので、あらかじめご了承いただければ幸いです。
首都高トラフィックサーバーとは?
WindowsまたはLinuxで構築可能な、アセットコルササーバーの上位互換のようなものとして「AssettoServer」が公開されています。
有志によって開発され、バニラのサーバーソフトウェアより拡張された機能が数多く搭載されています。
その中に「AI車をコース上に走行させる」機能が付いており、そちらを利用したサーバーが俗にいう「首都高トラフィックサーバー」と呼ばれています。
日本国内では下記のような首都高AIサーバーが公開されており、すでに遊んだ方も多いのではないかと思います。
ちなみに唐突な宣伝ですが…「あせっとこるさーず」の首都高トラフィックサーバーは私が運営しています。
当該サーバーはLinuxで運用していますが、Windowsをご利用の方が多いと思いますのでそちらの手順を記事にしたいと思います。
なお、Cドライブにインストールされた状態を例としておりますので異なる方は読みかえて作業を進めてください。
動作環境の用意
まず、動作環境を用意する方法や構築手順はAssettoServerのページに英語で記載されています。
日本語での解説が不要な方は、そちらを読んで構築していただいた方が手っ取り早いかもしれません。
AssettoServerを動作させるには、大きく分けて3つのソフトウェアが必要となってきます。
ASP.NET 7 Runtime のインストール
上記(1.)のサイトへアクセスし、下記画像の「Download Hosting Bundle」よりランタイムをダウンロードします。
Content Manager でサーバーを起動する準備
次に(2.)のページ下部の「Assets」から「assetto-server-win-x64.zip」をダウンロードしてください。
他のファイルはLinux用やソースコードですので、間違ってダウンロードしないように注意しましょう。
ダウンロードが完了したら、アセットコルサのインストール先(標準では下記)に設置された「acServer.exe」を適当な名前(acServer_original.exe など)へリネームしてください。
C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\server
リネーム後、先ほどダウンロードした「assetto-server-win-x64.zip」に含まれるファイル・フォルダをすべて同じ場所へ解凍してください。
解凍したファイルに「AssettoServer.exe」が含まれていますので、そちらのファイル名を「acServer.exe」へリネームすることで、Content Managerを介してサーバーを起動することができるようになります。
上記の方法は簡単さを考慮した形となりますが、この場合はContent Manager上のすべての設定項目がサポートされていない可能性があるとのことですので、あらかじめご了承いただければと思います。
なお、自宅サーバーやVPSなどサーバー専用機を用意する場合は、AssettoServerのファイルをそちらへ解凍していただき、コースや車のプリセットなどをContent Manager上で作成しサーバーへアップロードするという方法になりますので参考になれば幸いです。
また、いずれの場合もAssettoServer側の設定ファイルは初回サーバー起動時に「extra_cfg.yml」というファイル名で生成されますので、そちらを編集してAIのON/OFFなどを切り替える形となっています。
Content Manager でのプリセット作成
Content Manager上でのプリセット作成については、一般のサーバーを構築する方法と変わりありません。
新しいプリセットを作成・設定
既存のプリセットがある場合、そちらをコピーして新しいプリセットを作成した方が楽です。
1つ1つ説明すると長文になるため、スクリーンショットを載せますので参考にしてみてください。
ADVANCEDセクションの設定はデフォルトから触っていないので省略しています。
なお、エントリーリストにはAI車として走らせたい車も追加しておくと作業がスムーズです。
「acServer.exe」をダブルクリックし起動
前述の作業で設置した「acServer.exe」をいったん起動します。
以下のようなログが出力されれば、ロビーサーバーへの登録まで正常に完了しているので問題ありません。
[00:18:33 INF] AssettoServer 0.0.50+44bedbe318 [00:18:33 INF] Starting server [00:18:33 DBG] Loaded blacklist.txt with 0 entries [00:18:33 DBG] Loaded whitelist.txt with 0 entries [00:18:33 DBG] Loaded admins.txt with 0 entries [00:18:33 INF] Starting HTTP server on port 8081 [00:18:33 INF] Loaded 18 cars [00:18:33 DBG] Added checksum for system/data/surfaces.ini [00:18:33 DBG] Added checksum for content/tracks/magione/data/surfaces.ini [00:18:33 DBG] Added checksum for content/tracks/magione/models.ini [00:18:33 INF] Initialized 3 track checksums [00:18:33 DBG] Added checksum for bmw_m3_e30 [00:18:33 INF] Initialized 1 car checksums [00:18:33 INF] Next session: Practice [00:18:33 INF] Switching session to id 0 [00:18:34 INF] Server invite link: https://acstuff.ru/s/q:race/online/join?ip=123.123.123.123&httpPort=8081 [00:18:34 INF] Starting TCP server on port 9600 [00:18:34 INF] Starting UDP server on port 9600 [00:18:34 INF] Registering server to lobby... [00:18:34 INF] Starting update loop with an update rate of 18hz [00:18:35 INF] Lobby registration successful
注)もし、下記のようなログが出力された場合はポート開放が正常に行えていません。
本記事の例では、TCPポート:8081, 9600とUDPポート:9600 をそれぞれサーバーPCに向けて解放しています。
ポート開放の方法はご自身でお調べになり、セキュリティ面に注意したうえで設定を進めるようにしてください。
一般的には「ルーター名 ポート開放」で検索、あるいは使用中のルーターの設定画面で「ポートフォワーディング」のような設定項目がないかどうかを確認しましょう。
[00:15:27 INF] AssettoServer 0.0.50+44bedbe318 [00:15:27 INF] Starting server [00:15:27 DBG] Loaded blacklist.txt with 0 entries [00:15:27 DBG] Loaded whitelist.txt with 0 entries [00:15:27 DBG] Loaded admins.txt with 0 entries [00:15:27 INF] Starting HTTP server on port 8081 [00:15:27 INF] Loaded 18 cars [00:15:27 DBG] Added checksum for system/data/surfaces.ini [00:15:27 DBG] Added checksum for content/tracks/magione/data/surfaces.ini [00:15:27 DBG] Added checksum for content/tracks/magione/models.ini [00:15:27 INF] Initialized 3 track checksums [00:15:27 DBG] Added checksum for bmw_m3_e30 [00:15:27 INF] Initialized 1 car checksums [00:15:27 INF] Next session: Practice [00:15:27 INF] Switching session to id 0 [00:15:28 INF] Server invite link: https://acstuff.ru/s/q:race/online/join?ip=123.123.123.123&httpPort=8081 [00:15:28 INF] Starting TCP server on port 9600 [00:15:28 INF] Starting UDP server on port 9600 [00:15:28 INF] Registering server to lobby... [00:15:28 INF] Starting update loop with an update rate of 18hz [00:15:42 ERR] Error during Kunos lobby registration AssettoServer.Server.KunosLobbyException: ERROR,INVALID SERVER,CHECK YOUR PORT FORWARDING SETTINGS at AssettoServer.Server.KunosLobbyRegistration.RegisterToLobbyAsync() in AssettoServer/Server/KunosLobbyRegistration.cs:line 112 at AssettoServer.Server.KunosLobbyRegistration.ExecuteAsync(CancellationToken stoppingToken) in AssettoServer/Server/KunosLobbyRegistration.cs:line 37
AIサーバーで動かすための設定をする
AI機能の有効化
先ほどまでの作業でサーバーの起動までは行いましたが、デフォルトではAI車の走行機能は有効化されていません。
「acServer.exe」はいったん終了し、下記ディレクトリに「extra_cfg.yml」が生成されていることを確認し、編集していきます。
C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\server\cfg
基本的にはファイル内の以下の記述について、設定値を下記のように変更することとなります。
デフォルトで首都高用の設定が記述されていますが、走行車線・追い越し車線の速度を調整する場合や、天候変化を有効化する場合などは同ファイルの編集が必要です。
今回はあくまでも「AIを走らせる」ことが目的のため、そのような詳細については省略させてください。
# Enable AI traffic EnableAi: false ~ # Ignore some common configuration errors. More info: https://assettoserver.org/docs/common-configuration-errors IgnoreConfigurationErrors: MissingCarChecksums: false MissingTrackParams: false WrongServerDetails: false UnsafeAdminWhitelist: false
↓
# Enable AI traffic EnableAi: true ~ # Ignore some common configuration errors. More info: https://assettoserver.org/docs/common-configuration-errors IgnoreConfigurationErrors: MissingCarChecksums: false MissingTrackParams: false WrongServerDetails: true UnsafeAdminWhitelist: false
※SRP「0.9.2 PTB2」を利用する場合は、「MissingTrackParams」も”true”に変更してください。
これはディレクトリの内の「data_track_params.ini」ファイルにPTBの情報がないことへの対策です。
エントリーリストの編集
続いて、どの車をAIとして走らせるかどうか設定するために「entry_list.ini」を編集していきます。
編集対象のファイルは下記ディレクトリのものになりますので、同じディレクトリではないことに注意しましょう。
C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\server\presets\SERVER_00
例えば3台の車がエントリーリストに設定されていれば、下記のような記述となっています。
3台目の「Audi R8 V10 Plus」をAIとして走らせたい場合は、そちらに記述を追記していきます。
[CAR_0] MODEL=abarth500 SKIN=0_white_scorpion SPECTATOR_MODE=0 DRIVERNAME= TEAM= GUID= BALLAST=0 RESTRICTOR=0 [CAR_1] MODEL=ks_alfa_giulia_qv SKIN=00_Rosso_Competizione SPECTATOR_MODE=0 DRIVERNAME= TEAM= GUID= BALLAST=0 RESTRICTOR=0 [CAR_2] MODEL=ks_audi_r8_plus SKIN=00_brilliant_red_t SPECTATOR_MODE=0 DRIVERNAME= TEAM= GUID= BALLAST=0 RESTRICTOR=0
該当部分に追記すべき記述は「AI=auto」の1行のみなので、下記のとおりになります。
AIトラフィック専用の車両としたい(プレイヤーは使わない)場合は「AI=fixed」としてください。
[CAR_2] MODEL=ks_audi_r8_plus SKIN=00_brilliant_red_t SPECTATOR_MODE=0 DRIVERNAME= TEAM= GUID= BALLAST=0 RESTRICTOR=0 AI=auto
設定ファイルのコピー
編集した「entry_list.ini」と「server_cfg.ini」を下記ディレクトリへ上書きコピーしてください。
C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\server\cfg
AIスプラインの設置
AIを走らせるためのルートのことをAIスプラインと呼び、コースごとにAIスプラインが存在しています。
「Shutoko Revival Project」用のAIスプラインは「AssettoServer Development」Discordサーバーで配布されています。
※Discordで配布中のAIスプラインはSRP「0.9.1」用との情報を有志よりいただきました。
SRP「0.9.2 PTB2」を利用する場合は、ダウンロードしたファイルを解凍すると下記ディレクトリにAIスプラインが付属していますので、そちらをご利用ください。
\content\tracks\shuto_revival_project_beta_ptb\ai
#ai-spline-releases チャンネルで下記の投稿を探して、ファイルをダウンロードしてください。
ファイルをダウンロード後、下記「ai」ディレクトリに設置してください。
(フォルダが存在していないと思いますので、作成して設置すれば問題ありません。)
C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\server\content\tracks\csp\shuto_revival_project_beta\ai
※SRP「0.9.2 PTB2」の場合は付属の「fast_lane.aip」を、下記「ai」ディレクトリに設置してください。
C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\server\content\tracks\csp\shuto_revival_project_beta_ptb\ai
サーバーの起動、AIトラフィックの動作確認
「acServer.exe」をダブルクリックし、サーバーを起動します。
下記のような出力であれば問題なくロビーサーバーへ登録されていますので、見比べて確認してみてください。
[01:14:07 WRN] Server details are configured via ID in server name. This interferes with native AssettoServer server details. More info: https://assettoserver.org/docs/common-configuration-errors#wrong-server-details [01:14:07 INF] AssettoServer 0.0.50+44bedbe318 [01:14:07 INF] Loading from AI package content\tracks/csp/0/../shuto_revival_project_beta/ai/fast_lane.aip [01:14:07 INF] Loading AI spline by Gunja, compu, version 2 [01:14:09 INF] Adjacent lane detection... [01:14:10 INF] Adjacent lane detection completed in 692.0 ms [01:14:10 INF] Starting server [01:14:10 DBG] Loaded blacklist.txt with 0 entries [01:14:10 DBG] Loaded whitelist.txt with 0 entries [01:14:10 DBG] Loaded admins.txt with 0 entries [01:14:10 INF] Starting HTTP server on port 8081 [01:14:10 INF] Loaded 3 cars [01:14:10 DBG] Added checksum for system/data/surfaces.ini [01:14:10 DBG] Added checksum for content/tracks/csp/0/../shuto_revival_project_beta/tatsumi_pa/data/surfaces.ini [01:14:10 INF] Initialized 2 track checksums [01:14:10 DBG] Added checksum for abarth500 [01:14:10 DBG] Added checksum for ks_alfa_giulia_qv [01:14:10 DBG] Added checksum for ks_audi_r8_plus [01:14:10 INF] Initialized 3 car checksums [01:14:10 INF] Next session: Practice [01:14:10 INF] Switching session to id 0 [01:14:11 INF] Server invite link: https://acstuff.ru/s/q:race/online/join?ip=123.123.123.123&httpPort=8081 [01:14:11 INF] Starting TCP server on port 9600 [01:14:11 INF] Starting UDP server on port 9600 [01:14:11 INF] Registering server to lobby... [01:14:11 INF] Starting update loop with an update rate of 18hz [01:14:12 INF] Lobby registration successful
あとは実際にサーバーに入室し、AI車両が走っているかどうかを確認すれば完了です。
まとめ
トラフィックサーバーの構築方法はYoutubeなどに英語であればいくつか上がっているのですが、当時は日本語の情報が見つかりませんでした。
より効率の良い構築方法や、既に手順を記事化されている方がいらっしゃった場合は二番煎じとなり恐縮です。
もし他に情報がなく、本記事が参考になった!と思ってくれる方が1人でもいらっしゃればと思います。
もし、リンク切れなど何か過不足がありましたらコメントにてお知らせいただれば幸いです。
お読みいただきありがとうございました。
コメント 本記事へのご質問やご感想など、お気軽にどうぞ
とても参考になりました!一点だけ下記内容にて少々はまりましたのでご連絡を
(自分が無知ゆえになんだと思いますが)
設定ファイルのコピー
編集した「entry_list.ini」と「server_cfg.ini」を下記ディレクトリへ上書きコピーしてください。
C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\server
↓
C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\server\cfg
\cfgが抜けているようです。
ご参考いただきありがとうございます!
該当箇所、修正反映させていただきました。ご指摘に感謝いたします。