またまた、assettoserverネタです。
自宅でサーバ立てようとおもっても、PCつけっぱなしにすると、電気代が・・・とか、部屋の温度が・・・とか、嫁に怒られる・・・とか、様々な理由で起動しっぱなしはつらいというのありますよね?
かといって、外のレンタルサーバを使うとお金がかかるし・・・・。
目の前にはRaspberry Piが。あれ?これ使えるんじゃ?
assettoserverって参加しているユーザの管理や車の位置などの情報同期がメインで、サーバ自体の負荷はそれほど高くないと思われます。
ラズパイでも十分耐えられると思い、試してみました。
#使用したのは、Raspberry Pi 3です。
【Raspberry Pi OSセットアップ】
まずraspberry pi インストーラ用意
今回は、windows用を使ってます。(メインPCがwindowsなので)
インストールできたら、microSDへOSを書き込み。
今回は、GUIも要らないので、LITE版を選択。
assettoserverが64bit版のみなので、Raspberry Pi OSも64bitを選択します。
OS:Raaspberry Pi OS (other)から Raspberry Pi OS LITE (64-BIT)を選択。
microSDカードを刺したUSBデバイスをストレージで選択後、OSを書き込み。
書き込み完了したら、ラズパイにmicroSDカードを刺し、HDMIとキーボードとLANケーブルをつないで起動。
ラズパイ3はWLANの設定も可能なのでそれでもOKですが、今回は面倒だったので有線LANでテストしてます。
初期設定が終わったらログイン。CUIのみなので、コマンドプロンプトが出ます。
作業しやすいように、リモートからsshできるように設定。(ここは割愛)
環境が整ったら、assettoserver導入開始です。
【ASP.NET 6インストール】
サイトにも書かれていますが、assettoserverはASP.NET6Runtimeが必要です。
ラズパイOSでは、aptでのインストールはパッケージが存在しないのでできません。
マイクロソフトが提供しているインストール用シェルスクリプトを使うのが簡単です。
参考)https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-scripted-manual#scripted-install
以下、ユーザのhomeディレクトリでの作業を想定。
インストーラダウンロード
.NET 6.0のインストール(ユーザ権限で実行)
ASP.NETを動作させるために、パスを設定。
homeディレクトリにある.bashrcの最終行に以下を追記。
export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$HOME/.dotnet:$HOME/.dotnet/tools
これで、ASP.NETのアプリが起動できるようになります。
【assettoserverセットアップ】
ラズパイはARMチップです。assettoserverのgitからarm版をダウンロードします。
https://github.com/compujuckel/AssettoServer
Releaseから最新版をダウンロードする。
wget https://github.com/compujuckel/AssettoServer/releases/download/v0.0.50/assetto-server-linux-arm64.tar.gz
ダウンロードしたtar.gzを展開。
tar zxvf assetto-server-linux-arm64.tar.gz
ホームディレクトリにAssettoServerの実行ファイルとその他関連ファイル・ディレクトリが展開されます。
【サーバ設定】
次に、サーバの設定情報を持ってきます。今回は、メインPCのContent Managerを使っています。CMのサーバ機能は有償版が必要です。安いので買っても良いと思いますが、無償でやりたい方は、Windows版のサーバと同じ形で、ファイル群をラズパイにコピーしていけば同じように実現できる(はず)です。
Content Managerのサーバメニューからアップしたいプリセットを選んで、Pack。
(Packのオプションで、TargetをLinux(64-bit)にしてpackする)
作成されたtar.gzファイルをRaspberryPiにSSHなどでアップロード。
(teratermなら、コンソールウインドウにドラッグ&ドロップすれば、ユーザのホームディレクトリにアップロードできます。)
homeディレクトリで、アップしたtar.gzファイルを展開。
tar zxvf 'Shutoko Revival Project3-0-20221018-152306.tar.gz'
この状態でassettoserverで利用するtrackとcarの情報および基本的なコンフィグがセットされる。
が、extra_cfg.ymlはコピーされない。(ContentManagerベースだからか。)
また、packで一緒に展開されるacServerは利用しない。
homeディレクトリで、AssettoServerをいったん起動。
./AssettoServer
エラーで止まる。同時にcfgディレクトリにextra_cfg.ymlが生成される。
生成されたextra_cfg.ymlを再度編集。(ここがめんどくさい)
(windowsで動いているextra_cfg.ymlをそのままコピーしても動かない)
修正を加えた部分を中心にメモしておきます。
ここはwindowsでのサーバ設定と同じなので、迷うことはないはず。
# Enable new CSP weather handling. Allows rain and smooth weather transitions. Requires CSP 0.1.76+
EnableWeatherFx: true# Enable AI traffic
EnableAi: true# Ignore some common configuration errors. More info: https://assettoserver.org/docs/common-configuration-errors
IgnoreConfigurationErrors:
MissingCarChecksums: true
MissingTrackParams: true
WrongServerDetails: false
UnsafeAdminWhitelist: false
# このtrue2つは必要に応じて。
# サーバ起動時にチェックサムエラーが出るときはtrueにすると回避できます。
# (が利用者が改ざんした車で参加できてしまうようになります。)
# Default maximum AI speed. This is not an absolute maximum and can be overridden with RightLaneOffsetKph and MaxSpeedVariationPercent
MaxSpeedKph: 80
# Speed offset for right lanes. Will be added to MaxSpeedKph
RightLaneOffsetKph: 20
# この辺もお好み次第# Number of AI cars per player the server will try to keep
AiPerPlayerTargetCount: 40# 一人でやるならこれくらいあってもいい。大人数でやるときは10以下がお勧め
# Overrid some settings for specific car models/skins
CarSpecificOverrides:
- Model: bus_JETSET
TyreDiameterMeters: 1.04
- Model: honda_acty_ha3
TyreDiameterMeters: 0.53
- Model: hk51_traffic_isuzu_nkr_flatbed_tow_truck_hyundai_i30n
TyreDiameterMeters: 0.74
- Model: hk51_traffic_isuzu_giga_long
TyreDiameterMeters: 1.0
- Model: knight_truck
TyreDiameterMeters: 1.054
- Model: hino_profia
TyreDiameterMeters: 1.02
- Model: bk_truck_kent_t800
TyreDiameterMeters: 1.03
- Model: bk_truck_kent_t800_trailer
TyreDiameterMeters: 1.03
- Model: nissan_micra
TyreDiameterMeters: 0.617
- Model: nissan_figaro_1991
TyreDiameterMeters: 0.51
- Model: mitsubishi_miev
TyreDiameterMeters: 0.552SmoothCamber: true
# このタイヤの設定は、車依存です。
#タイヤスモークが激しく発生するときの対策に使えます。
上記でAIを有効化すると、fast_lane.ai(またはfast_lane.aip)が必要です。この辺もwindows版と同じ。
AIを有効にするために、fast_lane.ai(p)をhomeディレクトリにSSHとかでアップする。
アップしたら、aiディレクトリに格納する。SRPのbeta_ptbの場合、
cd content/tracks/csp/shuto_revival_project_beta_ptb/
mkdir ai
cd ai
mv ~/fast_lane.aip ./
で~/content/tracks/csp/shuto_revival_project_beta_ptb/ai/fast_lane.aipが格納できます。
【実行!】
サーバを起動!
cd ~
./AssettoServer
windows版と同じようなログが出力されます。
メインPCからContent Managerでサーバ検索してラズパイで動くサーバへ接続!
実際に動かしてみた結果です。
AssettoServer起動時に負荷はかかりますが、その後CPUは5~6%くらい、メモリは25.9%くらい消費するようです。稼動に全く問題なし。
サーバとして動作させるには問題ないですね。
遅延は25~27msくらい。(ローカルLANなので、速いのは当たり前)
ちなみにサーバを別にしても、メインPCのゲーム中フレームレートは改善しませんでした。
やはり、描画のパフォーマンスは基本的にメインPCの性能に依存してますね。
ちなみに、これは自宅にサーバを建てることになるので、外向け(インターネット向け)にサーバを公開するには、TCP8081/9600とUDP9600のポート開放が必要になります。ポート開放については、自己責任やサーバ管理の必要性なんかと絡みますので、ここでは説明を避けます。
あくまで、自宅サーバは建てられるんだけど、場所・電気代・嫁が・・・という方向けです。(爆
以上です~。