※自己責任でお願いします。頻繁にいじるので自分用メモ
サーバー要件
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