【Arma3】Ubuntu22.04にDedicatedServerをぬるぽする

プライベート

image

最新の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

ライブラリモジュールの欠如

image

一部の特殊な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からアクセスする際は、特にその辺を注意して設定してください。

参考資料(消費電力)

image

Core i3 6100U(2C4T)という、とっても非力なノートPCですが、Arma3サーバを稼働状態にしても、消費電力が5Wという数字を叩き出してます。

Exile Modというやつでバニラ状態(AIはゼロ)ですけど。

AIを大量に出せば、比例して増えていくんでしょう。

キワキワが集うyDiscord部屋

image

Arma3に限定したキワキワが集うマニアな部屋が、国内に存在していたりします。

ニッチ過ぎます。

ぜひ起こしくださいまし。

鯖味噌の秘密の小部屋

プライベート

Posted by nabe