【Arma3】Ubuntu22.04にDedicatedServerをぬるぽする
最新のUbuntu22.04LTS(Linux)に、Arma3 Dedicated Serverを入れる手順になります。
ニッチ過ぎて恐縮であります。
そんなキワっキワっなサバ缶に向けた記事で御座います。
ここの記事でも、よー分からんって方は、ぜひDiscordの部屋に起こしください。同じ様なキワモノ達が沢山いますので・・・。
(;^ω^)
なるべく、公式の手順に沿っていきます。
前準備
色々インストールするために、前準備が必要になります。
non-freeなパッケージを対象にするために、以下を実行します(Steamがここ)
sudo add-apt-repository multiverse
必要な手順として、以下も必須になります。32ビット用のパッケージも対象にします。
sudo dpkg –add-architecture i386
この状態で、一度、パッケージを最新にアップデートします。
sudo apt update
ちなみに、これらはUbuntu Server版で行ったものですが、Desktop版でも同様でしょう。
まずユーザーを作る
公式通り専用ユーザーを作ります。ここでは、steamとします。
sudo useradd -m -s /bin/bash steam
steamユーザーになるには、このコマンド。パスワードを設定してないので、この手順になる。
sudo -i -u steam
Steamクライアントを入れ込む
Arma3サーバをダウンロードするために、Steamクライアントを入れる必要があります。
専用のディレクトリ(ホルダー)を作ります。
mkdir ~/steamcmd && cd ~/steamcmd
一度、管理者として以下を実行しないといけないので、steamユーザーを抜けます。
exit
sudo apt install steamcmd
インストール途中で、ライセンス許諾のメッセージが表示されます。
TABキーを押して、「OK」にフォーカスを移動出来ます。
Arma3サーバを入れ込む
Steamクライアントを実行します。
/usr/games/steamcmd
ここで、Steamに対して指示を行うと、所有してるゲームタイトルをインストールする事ができるようになります。
ログインが必要なのですが、その前に、まずインストール先を指定します。
指定しなくても構いませんが、パスが深い所にインストールされてしまいます。
以下は、steamユーザーのホーム上のarma3にインストールされます。
force_install_dir /home/steam/arma3
そして、ログインします。あなたのアカウント情報を入れてください。ちなみに、サーバ版は、基本無料かと思うので、サーバ用の別アカウントでも構いません。
login (user id)
password: (password)
多分、初回や久々のログインだと、メール認証が要求されるかもしれません。
そして、以下のコマンドで、Arma3サーバをインストールする事が出来ます。これは、アップデートの時も同じ手順で行うので、覚えてくださいね。それなりに時間が掛かります。
app_update 233780 validate
※233780とは、Arma3 Dedicated serverのAPP ID
動作を確認する
これでもうインストールされているので、動作しますが、サーバなので基本なんらかのMODなりやミッションファイルが無いと、何もなりませんよね。
先程、インストールした場所を、SAMBAでアクセス出来るようにしておくと、なにかと管理し易いかと思います(パーミッション周りだけ注意)
主な設定の類
mpmissions ミッションファイル格納先
basic.cfg(例) ネットワーク設定
config.cfg(例) サーバー基本設定
サーバーMOD
クライアント共通MOD
プロファイル関連
RPT標準ログの出力
Battleye バトルアイ(アンチチート)設定
Arma3スイッチオプション
実行用シェルスクリプト
arma3server とarma3server_x64がサーバ本体となりますが、引数を大量に渡さないといけない訳で、普通はスクリプト上に記載するので一般的になります。
テスト用のものですが、以下を参考にどうぞ。
以下は、./start_a3server.sh で起動出来ますが、サーバ終了するまで戻ってこないので、最後に&を付けるなり、他の方法でバックグラウンドで動作するようにしてください(サービス化とか)
※ログは、tempfs(RAMディスク)上に出すようにしてます
start_a3server.sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/i386-linux-gnu
#### Server Dir.
serverDir="/home/steam/arma3″
serverConfigDir="${serverDir}/@ExileServer"
#### BE Path
bePath="${serverDir}/battleye"
#bePath=""
#### Network settings(-cfg)
networkConfig="@ExileServer/basic.cfg"
#### Server configuration(-config)
serverConfig="@ExileServer/config.cfg"
#### Server-side Mods
#mods_server="@ExileServer;@extDB3″;@AdminToolkitServer
#mods_server=@ExileServer\;@AdminToolkitServer\;@A3XAI\;@AdvancedTowing\;@SLZ
mods_server=@ExileServer
#mods=@cup_terrains_core\;@cup_terrains_maps\;@zombies_and_demons\;@CBA_A3\;@gac_JSDF\;@Exile
#mods=@CBA_A3\;@zombies_and_demons\;@gac_JSDF\;@Exile\;@cup_terrains_core\;@cup_terrains_maps\;@jsrs
mods=
modsRamdiskDir="/mnt/ramdisk/"
#### Profile path
#profile="${serverDir}/profile"
#### Options
option="-name=exile -port=2302 -nosplash -autoinit -noPause -noSound -world=Altis -loadmissiontomemory -exThreads=7 -enableHT -hugepages -filePatching"
#-bandwidthAlg=2 -ranking=<filename> -debug -loadmissiontomemory
# -name=exile -port=2302 -autoinit -hugepages -checkSignatures
# -world=empty -loadmissiontomemory
# -nosplash -noPause -noSound -ranking -netlog -ip=192.168.1.0
# -enableHT -cpuCount=4 -exThreads=7
# -filePatching(*extDB3 fail)
# unknown?!
# -download -generateShaders -disableProgramDrawing -useProgramDrawing
# -gamerTag= -benchmark -noTexHeaders -autoUpdate -physics=<?>
# https://community.bistudio.com/wiki/Arma_3_Startup_Parameters
#### Logs
serverLogDir=${modsRamdiskDir}
mkdir ${serverLogDir}
timestamplog=${serverLogDir}/$(date “+%Y%m%d_%H%M%S")".log"
errorlog=${serverLogDir}/$(date “+%Y%m%d_%H%M%S")"_error.log"
#### Ranking log
rankingLog="${serverLogDir}/ranking.log";
#### Reload Mods to Ramdisk
rm -rf ${modsRamdiskDir}/*
#### Start server(Yeah!!)
cd ${serverDir}
${serverDir}/arma3server -cfg=${networkConfig} -config=${serverConfig} -serverMod="${mods_server}" -mod="${mods}" -ranking=${rankingLog} -bepath=${bePath} ${option} > ${timestamplog} 2>&1
ライブラリモジュールの欠如
一部の特殊なMODでライブラリ等が付属していて、動作しない場合があります。
上の起動スクリプトで、一番最初に、こんな行があったかと思います。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/i386-linux-gnu
これは、extDB2.so(データベースアクセス用)内で、必要なライブラリがUbuntu OS上に無く、別にインストールして明示的に場所を指定してる訳です。
extDB2はよく使われるものかと思いますが、標準だと、libtbbmalloc.so.2(メモリ管理)がリンク切れを起こしてます。
sudo apt install libtbb2:i386
これでインストール出来ます。
ただ、当時のライブラリと仕様が変わってしまっていたら、もう、手のつけようが無いんですけどね。
当時のソースを見つけてコンパイルしないと手に入らないでしょう。
セキュリティとか
テーマを逸脱してしまうので、書くまでもありませんが、標準だと2302から5つのポート(+2)を利用する事になるので、ここだけ開ければOKです。IPv4のみ、すべてUDP
sudo ufw allow proto udp to 0.0.0.0/0 port 2302
sudo ufw allow proto udp to 0.0.0.0/0 port 2303
sudo ufw allow proto udp to 0.0.0.0/0 port 2304
sudo ufw allow proto udp to 0.0.0.0/0 port 2305
sudo ufw allow proto udp to 0.0.0.0/0 port 2306
sudo ufw enable
2344と2345はBattleye用で、こちらが送信元なので、特に設定不要。
Arma3サーバ以下のファイルは、steamユーザーでのみ触れるようにして、OSシステム側へのアクセスが不可能なようにする必要があります。
先に述べた、SAMBAからアクセスする際は、特にその辺を注意して設定してください。
参考資料(消費電力)
Core i3 6100U(2C4T)という、とっても非力なノートPCですが、Arma3サーバを稼働状態にしても、消費電力が5Wという数字を叩き出してます。
Exile Modというやつでバニラ状態(AIはゼロ)ですけど。
AIを大量に出せば、比例して増えていくんでしょう。
キワキワが集うyDiscord部屋
Arma3に限定したキワキワが集うマニアな部屋が、国内に存在していたりします。
ニッチ過ぎます。
ぜひ起こしくださいまし。