【GAME】ARMA3 EXILE MODサーバの旅その98
追記:Scavengeフレームワークのバグ修正
追記:Scavengeフレームワークを試す!
追記:デフォのミッションに手を加え始める
新しいサーバ環境で、構築を初めております。
※鯖味噌サーバは現在休止中で御座います
これまで動いていた、AMD A6-3650は良く頑張ってくれました。良いCPUです(定格2.5Ghz4コアを、3.2Ghz稼働)
想像してたよりも、しっかり稼働してた。ただ、消費電力が物凄かった・・w
(;´∀`)オーバークロックしてたし
新サーバのCPUの、Ryzen5 1400で御座います。
※定格3.2Ghz4コア8スレッド(3.9Ghz位まで回る?)
Passmarkでは、A6-3650の倍の性能があるようで、頼もしい。ケースや電源、SSDなどは流用できますが、メモリだけは現行DDR4になる。
ちょうど、8GBが余ってました。
もちろん、オーバークロックするつもりなので、デカイCPUクーラーを乗せます。
ふぅ~結構時間が掛かってしまった。こういうタイミングで、ケースやファン掃除を始めちゃうからね・・
(;^ω^)
このRyzenはビデオ機能が無いので、別途余っていたビデオカード、Radeon HD5450(ファンレス)を利用します。
こういう低スペックなビデオカードがあると、何かと便利です。ただ、ファンレス型は、精神的に悪いぐらい熱くなりますが。
さっそく、Ubuntu Linux19.04LTSをインストールします。性能がアップしたので、GUI環境も入れちゃう。
これで、実機サーバPCは準備できました。
後は、新しい鯖味噌サーバミッションを構築して、移行すれば、公開可能です。
過去記事と重複した内容になるかもしれませんが、サーバ構築の記録を記事として公開していきます。
まず、これをやらないと始まりません。
アイテム湧き場所の設定です。
これが地味作業過ぎて・・・嫌なのです・・。
(;´Д`)
しかも、3D酔いするので、長続きしない。
こんなのを、数百箇所も繰り返すのです。
(;^ω^)
Exilemod Loot Position CreatorというMODを利用します。32bit版なので、Arma3を32bitで起動しないとダメです。
マップ上の建物オブジェクトを決めたら、1キーを押して始まります(オブジェクト名が表示される)
そしたら、黄色い丸を沸かしたい場所を選んで、2キーを押します。これを数カ所繰り返して、最後に4キーで登録終了です。
※3キーで、自動登録できるらしいが、私は信用してない
マップ上の建物全部を、作業できるはずも無いので、止めたくなったら、5キーを押すと、クリップボード上に設定用のコードが出力されます。
※続きをする場合は、手作業で編集して、これらを合わせる
完全に完成したら、@ExileServer/configで、読み込む様にすれば良いわけです。又は、直に書いちゃうとか。
テクニック
黄色い丸が、アイテム湧きのポジションそのものになるのですが、丸の中心部が実際の位置です。
なので、ポジションを設定する場合は、半丸から若干上を狙った方がよいです。じゃないと、埋もれます。
あと注意するのが、地面が建物オブジェクトで無い場合(特に地面が隆起されるパターン、特に小屋など)は、アイテムが、確実に地面に埋もれます。
なので、確実に、建物オブジェクトの面の上に置いたほうが確実です。
あと、Arma3の仕様上、頭の高さ辺りはアイテムを取る事ができません。せいぜい、腰位の高さまでにした方が良いです。
まぁ・・これみて、なんのマップか、分かる人には分かっちゃうんでしょうね。
しかし・・まぁ・・作り込まれたマップです。
開発者さんの情報では、近日に更新が入るそうですけども。
追記:デフォのミッションに手を加え始める
Arma3の音楽を聞きながら作業をします。これが有るのと無いのとでは結構モチベが変わりますw
(;^ω^)
ミッションファイルを弄りますので、内部MAP名を調べなきゃいけません。適当にEDENでファイル保存します。
chernarusredux ※MAPがバレる
が内部MAP名というのが分かります。
※Arma3はミッションファイル名で、MAPを切り替えてる
適当なバニラミッションPBOを解凍して、デフォのトレーダーやらオブジェクト生成を削ります。
initPlayerLocal.sqf・initServer.sqf
これらをごそっと削る。
(;´∀`)だいぶ軽くなるやろう・・て
ミッションの設定もついでに行っておく。
description.ext
んで、今回はScavenge Frameworkというアドオンを試してみようと思ってる。
config.cpp
Exile特有の(膨大な)設定は、今じゃないし、今回はデフォでいいかもしれない。
アイテムが実際に湧くのではなく、タンスなどを直接漁るタイプのやつ、オブジェクト自体が生成される訳ではないので、サーバ負荷的に良いかも・・しれない。
ひとまず、サーバが動かなくなるのが怖いので、これで動作するか確認する。
まだ、アドオンが無い状態なので、負荷が凄い低い(マップ上にはAIが一人もいない状態)
(;´∀`)
早速、動かない・・・w
あ・・MODキーの入れ忘れやった(とにかく、これは忘れる)
そして、キックされる。
かつて地獄を味わった私は、こんなで慌てない。
おもむろに、Battleyeログを開く。
#20 “ight") then {
player removeWeapon “CHR_FlashLight";
player addWeapon “CHR_FlashLight_Night";
};
} else {
if (((primaryWeaponItem"
うむ、まだスクリプトの類を入れてないし、今導入したMODが引っ掛かったよう。
どのファイルのスクリプトだろう、FlashLightが何やら置換されてる様子。
漢は黙って、Battleyeの22番フィルターのaddWeaponに、黙って追記する。
めでたく、おニューMAPにインできた。
しかし、Battleyeにキックされまくる・・・。ほぼバニラなのに・・。
フィルター掛けば、その場でキックされなくなるので、効果はあるんだが・・、調べた方がよさそう。
追記:Scavengeフレームワークを試す!
車両や建物内のロッカーや机を物色する事ができるScavengeフレームワークというものを試す。
軽い気持ちやったんだが、これが地獄の門の入り口だった事は、知るよしもなかった。
導入は、それほどでも無かった。基本は、スクリプトが稼働するように設定するだけ。
問題は違う所にあった、Battleyeのこやつ。
よく見るBattleyeキックの交わし方は熟知してたんだが・・、ここで新しい技を出してくるとは思わなんだ。
Value Restrictionなる、setvariable系のフィルター、こんなん初めてだわ。
名前空間に、値を入れておくsetVariableの部分、ここが引っ掛かってしまってるよう。
setVariable.txt
ここに、該当する変数名を追記するだけで良いようだ。
次のキックは、remoteexec。こんなのも初めてやし・・ググっても情報無いし・・
。゚(゚´Д`゚)゚。
remoteexec.txt
!="exileexpansionserver_system_scavenge_spawnloot.*"
違うPC(主にサーバークライアント間)でのコールなどを行うやつ。Exileなら、頻繁に動いてます。
お隣の記述を見ながら、多分こんな感じだろうと書いたらビンゴッ!!
フィルター文字列は正規表現が書けるので・・”.*”は、0文字以上の何でもヒットという意味になる。
なんとか動作。スカベンジして成功すると、アイテムが湧きます。
追記:Scavengeフレームワークのバグ修正
実を言うと、動作不良っぽかった。
上写真を見ると分かるのですが、インベントリが開いてるにも関わらず、アイテムが足元(Ground)に湧いてるのです。
(;^ω^)
なーんとなく場所が分かるので、自前でバグ修正します。
ExileExpansionClient_system_scavenge_createLoot.sqf
の84行に、「uisleep 2;」を追加で治りました。
LootWeaponHolderクラスのオブジェクトが生成される前に、イベントリが開いたからの問題のようです。
なので、(とりあえず)2秒だけ待って開くようにしました。
正常に動作してるようなので、環境によって同様な不具合が出るのかもしれません。
ディスカッション
コメント一覧
まだ、コメントがありません