【GAME】ARMA3 EXILE MODサーバの旅その73
追記:アイテム湧き最終調整
追記:超簡単さらなる圧縮
追記:オーディオファイルの編集
追記:SFXサウンド
追記:lootboxアドオンの更新
追記:ゾンビのLOOTアイテムも弾抜き
追記:謎エラーの原因わかった
追記:謎エラー
追記:高速化してる?
元日ですか、そうですか。。
(;^ω^)あけおめ~初詣行ったよ~
以前、Battleyeキックに悩まされてるので、いっそ、綺麗にゼロから書き直そうと、やり直し作業をしております。
嫌々ながら作業してたので、書き間違いがあるやも、しれなかったので。
管理用のAdminToolKitで十数個、これはしょうが無い。ミッションに含めてる、スクリプトで数個。
この世にチーターがいなけりゃ、こんな仕組み要らないのよ・・。
battleyeホルダーのscript.logにキック対象のコードが書き出されるので、これを以下のルールに従って、script.txtに追記していきます。
Exileでは、各行毎にコマンドが紐付けされてるので、エラーコードも控えておきます(例:#21 とか)
・”(ダブルクオート)にエスケープ処理(頭に半角/を書く)
・/(バックスラッシュ)にエスケープ処理
・改行を\nに書き直す
・頭と最後は、”・・・"の感じで括られる
※つまり1行で纏め上げる。これの他、余計な記述は一切許されない
エラーコードが、たとえば#7と書かれていたら、+2でscript.txtの9行に追加する必要があります(決まりごとなので+2で覚える)
んで、追加する際は、空白と”!=”を頭に書く必要があります。
!="・・・・・・" こんな感じになります。
意味的には、このコードはキックされない例外ですよーと、Battleyeに教えてる意味になります。
もうちょいだけ説明。各行の頭には、意味深な数字がありますが、7は、キック&ログ出力という意味(全部7だけども)
上写真のように、createVehicleなら、この行のフィルター内にこのコマンドが入ってるのが分かるはずです。
ちなみに、サーバ起動中に、このscript.txtを書き直しても、適用されないので、また、起動し直さないといけない。
そう、これが辛いのよ。。。
(;´Д`)
追記:高速化してる?
上作業で、何度も起動を繰り返してる訳ですが、ついでなので、起動パラメーターでの高速化もチェックしてます。
デフォルトで自動的に最適に設定されてそうですけども、あえて、明示的に設定してみる。
追加スレッド(exThreads)では、各処理にスレッドが割り当てられる。これは、サーバでも同様です。
大型ページのサポート(hugePages)では、より大きなメモリ操作が行えるようになる。今どきのPCなら、沢山メモリ積んでるわけですし。
ログなし(noLogs)クライアント限定。クライアント側なら、ログはまず不要でしょう。実際、ほとんどログ出てません。
世界(-world)クライアント限定。起動時に読み込むMAPです。実際にサーバに接続するまで、MAPは分かりっこないんですよ。
サーバはAMD CPUなので、もしかして自動適用されてないかも・・と思ったので、CPUカウントや、メモリ系関連パラメータをイジって起動テスト。
以前のように1コアに処理が集中する事が無くなったような気がします(気がするだけかもしれない)
追記:謎エラー
うむむ・・・。
アイテム湧きが動作しなくなる謎エラーで足止め状態。。
エラーログにも出てないし、改造したコードを戻しても治らない。
なんでや・・。
ね?ゾンビちゃん。
そうなると、自然とコード解析になってしまうんですよね。
(;^ω^)
実際のアイテム湧きは、サーバ側で実施されてますが、湧きのリクエストはクライアント側から行われてます。
ExileClient_system_lootManager_thread_spawn.sqf
なので、サーバ側は指定された1個の建物内に沸かせて、1ターン終了という感じ(建物には別途IDが振られる。これはガーベージコレクタ関連でしょう、多分)
ざっと見た所、特殊な事はしてない。
Youtube動画を見ながら深夜作業。
ExileServer_system_lootManager_spawnLootInBuilding.sqf
に、こんなの埋めて、湧き対象の建物を全てリストアップしようとしております。
diag_log format[“[********ITEM LOOT]:: %1 , %2 (%3)",typeOf _building,_lootTableName,count(_localPositions)];
嗚呼・・地道なデバッグ作業ぇぇ。
(;´Д`)
むむむ?
アイテムが沸かなくなった建物のログが出てないぞ・・・。
CUP MODで仕様が変わったとか・・?(直前に、大きくバージョンが上がっていた)
3:05:35 Object id 9d629e3b (1595) not found in slot 83,235
3:05:35 In last 3000 miliseconds was lost another 2 these messages.
3:05:35 Link cannot be resolved
こんなログが出てる。
う・・・む、要調査や・・・。
(;´Д`)
建物のクラス名の変更は無いようですし。
MODのchangelogを見ても特に見当たらない。
もう一回、CUPをダウンロードしてこようか。。
(次の日)
サーバ(手動DL)とクライアント側(SteamでDL)のCUP MODを見比べてみた。
バージョンは一緒っぽいけど、ファイルの数がちゃうッ!
ヽ(;゚д゚)ノ なんでや
Steamを信用して、クライアント側からサーバにコピーする。
無論、Linuxサーバなので、ファイル名の大文字が無いかのチェックも怠らない。
(;^ω^)
追記:謎エラーの原因わかった
単純にMODのバージョンが違っていたというオチでした。
短期間の間にCUP MODバージョンが上がっていたようでした。
(;´Д`)
TerrainsとCore両方1.11.0だったと思っていたんですが、この数日間の間に1.11.1に上がってたらしい(terrainsは1.11.2)
無事、アイテム湧きを確認。
( ´Д`)=3 ふぅ
MODバージョン相違すると、サーバからキックされると思ってたんですが、サブバージョンは無視されるとか?
サーバ起動してから、軽い気持ちで映画を見てしもうた。ピクセルってやつ。
これのお陰で、サーバリスタートが正常に動作するのを確認できたw
(;´∀`)2度もリスタートしてたわ
ログにはこんなケタタマしいほどのリスタートの文字が・・。
長い事やってるが、そういや、初めて見たw
(;^ω^)
追記:ゾンビのLOOTアイテムも弾抜き
アイテム湧きに、過酷なマガジン弾抜き改造を施してる訳ですが。。。。
ゾンビが所持してるアイテムにも、実施しませう。
(;^ω^)
@exilez/scripts/SpawnZombie/SpawnZombie.sqf(132行付近)
_zombie addItemToVest call _lootGroup;
この行を以下の様にします。
private _vestContainer = vestContainer _zombie;
private _item = call _lootGroup;
private _ammoCount = getNumber(configFile >> “CfgMagazines" >> _item >> “count");
if(_ammoCount > 1)then{
_vestContainer addMagazineAmmoCargo [_item, 1,floor(random _ammoCount)+1];
}else{
_zombie addItemToVest _item;
};
これで、華麗に弾抜きしちゃいますよぉ。
何度かテストプレーしてますが・・・
m9( ゚д゚)か、過酷ッ!
追記:lootboxアドオンの更新
拙作のlootboxアドオンも、同様に弾抜き機能を入れ込みます。
配布元(GIT)
また、loot箱内にアイテムが散乱しすぎてるきらいがあるので、適当に削除する機能も入れ込む。
Poptabが大量すぎる気がするので、デフォルト設定値を、Exileデフォルト値に近づける。
追記:SFXサウンド
マップ上で音が鳴るようにしてるんですが、だいぶ以前に書いた部分だったので見直し。
こんな感じで複数定義して、後はランダムで適当に選んで鳴らしてくれる(description.ext)公式CfgSFX
5番目の引数が、ランダムで適用される確率値で、多めに鳴らしたいサウンドに偏らせる事が出来る。
追記:オーディオファイルの編集
ミッションファイルを太らせてる原因だったサウンドファイルを、さらにダイエットするため編集。
大体半分程度まで圧縮できた。
(゚∀゚)
追記:超簡単さらなる圧縮
ミッションファイルは可能な限り小さい方が良い。全てのプレーヤーがダウンロードする訳なので。
設定ファイルとなると、軽く数千行行ってしまう訳で、そんな設定ファイルは大量にあります。
保存する際、改行コードをCR+LFではなくて、LFにする事で、1行辺り1バイト削る事ができる訳です。可逆なので安心。
って事は、1ファイル(≒設定)辺り、10~30KBは簡単に削れます。
追記:アイテム湧き最終調整
デバッグが済んで、やっとこさアイテム湧きの調整(多分これで最後でしょう)をやってます。
多からず、少なからず、たまにはボーナスも・・という微妙な感じを出したい。
途中、拙作アドオンのAIさんと遭遇。
装備がしょぼいので、すぐ分かるw
(;^ω^)
鹵獲もアイテム取得の手段です。こちらも、調整。
しかし、5.56mm使いやすい。プレーヤーとしてプレーしてた時は、7mmばっかだった。
どこぞの空港にて。
( ´Д`)=3 ふぅ
ディスカッション
コメント一覧
明けましておめでとうございます!今年もよろしくお願いします兼お互いExileサーバーの構築を頑張りましょうw
ここ最近は、私の方も忙しくて全然Exileに着手していない状態ですw後は、ちょっと前に公開された、Altis Lifeモードのサーバー「ExGarden」というところでのんびりやっていますw
どーも、あけおめです。
1歩進んでは、3歩位下がってるのが現状ですよ。。w
ほんとにArma4出ちゃうんじゃないかと心配するレベルです。
Lifeは、まったくやった事が無いんで(セカンドライフ的な?)完全無知です。