なんでもぶろぐ

ゲームやプログラムなど作ったものや学習したものをまとめておくブログ

Citadel: Forged With Fire Linux 個人サーバー インストールメモ

※自己責任でお願いします。頻繁にいじるので自分用メモ

参考元
Dedicated Server Setup Guide [UPDATED TO INCLUDE DECAY SETTINGS] :: Citadel: Forged With Fire General Discussions

Official Unofficial Dedicated Server Setup Guide [WIP] :: Citadel: Forged With Fire General Discussions



実行環境

WebArena http://web.arena.ne.jp/vps-cloud/
こちらの6GBプラン

OS:CentOS7
Citadelバージョン:12342-2

での情報です。

サーバー要件

Windows用のものしか見つからなかった。Linuxでも同等?
4core以上のCPU(2coreフルで使う?)
最低 6GBのメモリ(最大15GB使う)
起動しただけでメモリ80%,CPU55% 複数人ログインでどうなるのか不明・・

ポートの開放

サーバーは、以下にリストされたポートで接続を待ち受けます。

ポート 目的 補足
UDP 27015 スチームサーバーブラウザーのクエリーポート 必須
UDP 7777 ゲームクライアントポート 必須?
UDP 7778 UDP Raw ポート(ゲームクライアントポート + 1) (任意)
TCP 27020 RCON用のポート (任意)


ポートを開放し、設定を反映させます。

#firewall-cmd --permanent --add-port=27015/tcp
#firewall-cmd --permanent --add-port=27015/udp
#firewall-cmd --permanent --add-port=7777/tcp
#firewall-cmd --permanent --add-port=7777/udp
#firewall-cmd --reload
'設定できているか確認
#firewall-cmd --list-all

必要なライブラリのインストール

インストールはSteamCMDを使って行います。
64ビットLinuxサーバでは、steamcmdのインストール/実行に32ビットのバイナリが必要ですのでインストールします。

#yum install -y glibc.i686 libstdc++.i686

SteamCMD、Citadelのインストール


以下の設定と想定してインストール設定を書きます。

設定名
CentOSのユーザー名 steam
SteamCMDインストールディレクト /home/steam/Steam
Citadelインストールディレクト /home/steam/Steam/Citadel

ユーザーの作成、ディレクトリの作成

#useradd steam
#passwd steam
#su - steam
$mkdir Steam
$mkdir Steam/Citadel

SteamCMDのダウンロードと起動

$cd Steam
$curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
$./steamcmd.sh +login anonymous +force_install_dir Citadel +app_update 489650 validate +quit
匿名ログイン +login anonymous
インストールディレクトリの指定(相対パスなので別な場合はフルパス入れるなり) +force_install_dir Citadel
指定サーバーのインストール(validate付与するとファイルチェックする) +app_update 489650 validate
終了 +quit

app_update 489650 validate を実行するとダウンロードが始まります。



steamclient.soのコピー
SteamCMDのディレクトリからCitadel/Plugins/UWorks/Source/ThirdParty/Linux/内にコピー

$cp /home/steam/Steam/linux64/steamclient.so /home/steam/Steam/Citadel/Citadel/Plugins/UWorks/Source/ThirdParty/Linux/

ファイルの実行権限の設定

chmod -R a+w,a+x /home/steam/Steam/Citadel/Citadel/Saved/SaveGames
chmod -R a+w,a+x /home/steam/Steam/Citadel/Citadel/Plugins/UWorks/Source/ThirdParty/Linux


サーバーのセーブデータがないので一度起動します。

$cd Steam/Citadel/
$./CitadelServer.sh
'数分後に Ctrl+c 同時押しで停止

/home/steam/Steam/Citadel/Citadel/Saved/Config/LinuxServer内にiniファイルができているはずなので
とりあえずひつようになりそうなものの設定
8/10追記
変更したい設定のみ書いて起動したところ木、石等を拾えなくなりました。
デフォルトの設定でも下のようにすべて書いていたほうがよさそうです。

[UWorks]
ConnectionPort=7777
QueryPort=27015

[/script/citadel.socialmanager]
Password=citadel123

[/script/citadel.citadelgameinstance]
WorldCreationSettings=
(ServerName="PrivateServer",Password="",ServerType=PVP,PlayerLimit=40,bPrivate=false,ExperienceMultiplier=1,InventoryCapacityMultipler=1,KnowledgePointEarnedMultiplier=1,CharacterPointEarnedMultiplier=1,bUnlimitedResources=false,PlayerDamageMultiplier=1,ArmorMultiplier=1,BaseManaRegen=0,InventoryCapacityMultiplier=1,bInventoryWeightRestrictions=true,MagicFindMultiplier=1,CraftingMagicFindChanceMultiplier=1,FlyingCostMultiplier=1,FlyingSpeedMultiplier=1,ResourceCollectionMultiplier=1,StructureDamageMultiplier=1,bRespectNoBuildZones=1,MagicStructureManaRegenerationMultiplier=1,MagicStructureManaConsumptionMultiplier=1,bFreeBuildMode=false,TimeOfDayLock=Auto,NPCPopulationMultiplier=1,StructureDecayMultiplier=1,bThronesDecay=true)
名前 効果
Password(socialmanager) 文字列 管理者パスワード
ServerName 文字列 サーバーの名前
Password(citadelgameinstance) 文字列 ログイン時のパスワード
ServerType PvP PvE ゲームシステム(PvPにすると対人)
PlayerLimit 数値 最大接続数

ログイン方法

ゲームを起動してINTERNETを選択すると出てくると思います。


systemctlによる自動起動

サーバー再起動時、自動で起動するようにsystemctlに登録します。

まず起動設定ファイルを作ります。

#cd /etc/systemd/system/
#vim citadel-dedicated.service

ファイルの内容を以下のようにします。

[unit]
Description=Citadel Dedicated Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStartPre=/home/steam/Steam/steamcmd.sh +login anonymous +force_install_dir Citadel +app_update 489650 +quit
ExecStart=/home/steam/Steam/Citadel/CitadelServer.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
User=steam
Group=steam

[Install]
WantedBy=multi-user.target

個人の環境に合わせて変更する場合はここら辺です。

パラメータ 内容
ExecStartPre 起動前に実行される処理
ExecStart 起動処理
LimitNOFILE 上限ファイルオープン数の指定
ExecReload リロード時の処理
ExecStop 停止時の処理
User 起動するCentOSのユーザーを指定する
Group 起動するCentOSのグループを指定する

設定を反映させる。

#systemctl daemon-reload

自動起動をONにする

#systemctl enable citadel-dedicated.service

Citadelの起動

#systemctl start citadel-dedicated.service

Citadelの停止

#systemctl stop citadel-dedicated.service

サーバーのアップデート

systemctlなら起動時にアップデートする・・はず

手動でのアップデートはsteamcmd.shのあるディレクトリでこの一行

$./steamcmd.sh +login anonymous +force_install_dir Citadel +app_update 489650 +quit