「dayz」タグアーカイブ

【GAME】ARMA3 EXILE MODサーバの旅その63

P_20180811_215244追記:お引越し

追記:メインPC入れ替え計画

結局のところ、OSのインストールからし直しております。

(;^ω^)・・

必要なファイルはバックアップとって退避、色々弄りまくったんで若干不安ではあるが、戻せればええなぁ。

最新のUbuntu 18.04LTSではなくて、16.04.5LTSにしました。こっちだと稼働してた実績あるし、まだ、サポート期間終了まで3年あります。

Linuxには、枯れてる方が安心というオキテもありますので。

念の為、3.5GhzまでオーバークロックしたA6-3650を、3.2Ghzまで落としました(定格2.6Ghz・・・)

sc20180812172952せっかくなので、作業した内容は、全て記録しております。

Arma3でLinuxサーバを上げる方に向けて、完全なドキュメントを記事にする予定です(だったらいいな)

steamcmdメモ

ログインに失敗で、Steam Guardでロックされてしまった時、メールで送られたコードを以下のように入力します。

Steam> set_steam_guard_code <code>

追記:メインPC入れ替え計画

P_20180812_181143ちょっと前に、安かったので勢いでポチッてしまったRyzen5 1400を救済するべく。

さっき、マザボが届きました。

ASrock AB350 Gaming-ITX/acというやつ。今どきUSBでデバイス追加できるので、ちっこい方がええかなぁ・・と。集中冷却できるし。

インテルLANと、ヨサゲな音源搭載(ALC1220)してるのが決め手、あと常用極限オーバークロックしたいので、丁度良いスペック。

まだ、これだけでは動きませんけんども・・。

(;´∀`)

あとは、メモリとストレージ(m.2/SATA or NVME)があれば組める。

メインPCの移行なんて、こんな暑い時期にするもんじゃありません(ただ、ただ、メンドイ・・)

メモリ高いんだよなぁ・・、安価時の3倍ですよ、いまだに。

んで、現在利用中のCore i5-4670K(4.3Ghz)PCを、Exileサーバに移行するか、どーか迷ってる。また・・設定するのメンドイ。

追記:お引越し

sc20180814164131OSをインストールし直して、完全にゼロから戻し作業中。

作業はほぼ完了。

まだインしての動作確認はしていないが、ログを見る限りは・・一応動いてる様子。

前回曖昧な感じで環境を構築していた部分を、明らかにしながら、しっかりとメモしております。

(;´∀`)

しかし、OSインスコ後の、この清潔感・・w

自己満でしかありませんが、綺麗な状態のOSをイジるのは、久々なので・・。無駄なモノは一切排除で、Arma3だけしか動いてないLinuxサーバで、サックサクです(今の所は・・)

(追記予定)

【GAME】ARMA3 EXILE MODサーバの旅その62

20180804134305_1追記:やっぱ何かがおかしい

追記:3den.pboこれかな?

追記:戻し作業

前記事に書いた通りに、Battleyeスクリプトに、ログ分を入れておくと、確かに蹴られなくなります。

うん・・

(;^ω^)

なんでバニラなのに、蹴られるのかという重大な疑問が残りますが、一応、これでLinuxでのサーバ運用に光が射したといえます。

(;´∀`)ははは、もう、何も起こらないでくれ・・

sc20180804135141ただ・・ゴールが見えない作業が控えてるんですけどもね・・。

(´;ω;`)

Battleyeを無効にすりゃ、こんな事しなくてもええんですが・・。

チーターを暗躍させないためにも、これだけは譲れません。

一応、試してみたのは、以下の3つ。

多分、通常のArma3サーバ鯖管でも、イジらない要素ですよ。これ

scripts.txt(33行追記)クラフト時

!=”ion) <= _range}) then\n{\n_players pushBack _x;\n};\n}\nforEach allPlayers;\n_players”

scripts.txt(9行追記)地面アイテム取得時

!=”hen \n{\nif (isNull _groundHolder) then \n{\n_groundHolder = createVehicle [\”GroundWeaponHolder\”, getPosATL player, [], 0, “CAN_COLL”

scripts.txt(23行追記)Disconnect時

!=”(_this select 0)] + _this, \”RscDisplayDebugPublic\”, 0] call compile preprocessFileLineNumbers \”\A3\Ui_f\scripts\GUI\RscDebugCons”

あと・・いくつあるんだろ・・。

(;´Д`)

追加:

scripts.txt(42行追記)Disconnect時

!=”lay displayCtrl     13484 ctrlAddEventHandler [\”ButtonClick”, {[\”executeButton\”, [ctrlParent (_this select 0)] + _this, \”RscDisplay”

sc20180804150731チートはどないして、やるのか分かりませんが。

このArma3に関していえば、サーバからロードした、ミッションファイルをそのままカスタムすれば、チート行為が可能に見えます。

・・が、Battleyeがそれを監視してるので、それが不可能です。

・・が、Battleyeとの通信をジャックすれば、回避可能なのかもしれない。

(素人が思いつく位なので)対策はしてるでしょうけども。

Battleyeの仕組みを利用してるタイトルは沢山ありますが(PUPBとかH1Z1、DAYZ、ARK等)、これらのタイトルってチート行為をよく耳にするんですけども。Battleyeって弱いんかな?

Blizzard社のStarCraft2では、一度も聞いた事無い。オリジナルの対策のお陰か、頻繁に更新が掛かってる性かもしれない(前作のStarCraft1では、チートだらけだったのを記憶してるけんども)

20180804151728_1一応、対策が分かっただけでも、良しとしよう。

あぁ・・なんて眩しい、こちらの世界も灼熱らしい。

(;^ω^)

20180804151846_1ふぅ・・

今回の原因追求のために、ほぼバニラ状態にまで設定を戻していったので、これから、徐々に元に戻していかないといけない。

AIが居ないのが分かってるので、自由に町中を移動できる。

(;´∀`)

20180804153333_1ついでなので、アイテム湧きの具合も、再確認しておく。

うむ、当初の予定通り(厳しめ)

追記:戻し作業

sc20180808215329弄りまくったお陰で、一発での戻し作業ができなかった。

エラーが出まくります・・。

(;´Д`)

一個づつ戻してる。

そこで気づいたのが、SimpleObjectの綺麗な配置で、以前コードを書いたんですが、今今見ると、おかしい事に気づく。。。

private _simpleObject = createSimpleObject [_x select 0, _x select 1];

private _classname = getModelInfo _simpleObject select 0;

まず、オブジェクトを生成してから、クラス名を取得して・・の手順なのですが、よーく見ると、クラス名を取得してねぇーという。

だが・・しかし、これでちゃんと動作してたんですよね・・。

(;´Д`)なぞ・・

sc20180808222452exile_assets\model\exile_item_toolbox.p3d: No geometry and no visual shape

・・というエラーが沢山出ておりました。

前からあったんかな・・。忘れてもた。

オブジェクトを指定する際に、「そんなモン、ありませんがな」というエラーなのですが。

Exileアセットのpboを解凍して、中身を見てみると・・。

Exile_Item_Toolbox.p3d

・・というファイルが御座いました。

そう・・、Windowsなら問題無いんですが、Linuxだとダメなのです。

(;´Д`)

全てファイル名に合わせて書き換えないといけません。

なんで、いまさらこんなエラーが出てきたんだ?(前からあったんかも)

追記:3den.pboこれかな?

sc20180809165813

No geometry and no visual shape

エラーに関する部分で、実在するファイル名と大文字小文字が合致しない部分なのですが。

3den.pboが出力するモノがほぼ全てダメっぽいので、コードを追ってみた。

fn_sanitizeFilePath.sqfの中で、こんな部分を見つけた。

_path = toLower _path;

ご丁寧に、ファイルパスを小文字変換してる。

多分、これをコメントアウトすればいいんじゃないかと。テスト予定

思いっきりExileとは無関係ですが、こんな曲を聞きながら作業しております。

(;^ω^)

追記:やっぱ何かがおかしい

sc20180811153959Battleyeへの追記をしていくと、確かに前に進んでる気はするんですが、どうにも腑に落ちない。

起動する度に、エラー発生箇所が変わっていく・・。

相当な数をBattleyeに追加した。

なにか、”根本的”なトラブルを抱えてる状況じゃないんかと思い始めてる。

正常な時(1.0.3)は、OSのバージョンも違ってたし(Ubuntu16.04)、この環境のままアップグレードして、と同時にExile1.0.4に上げたんです。

やっぱ、OSから入れ直しか。。

めんどい・・(;´Д`)

【GAME】ARMA3 EXILE MODサーバの旅その61

P_20180728_144402追記:Battleyeヽ(゚∀。)ノウェ

追記:Battleyeのscript.txtの書き方

追記:だめだ

追記:bisign生成方法

追記:1.0.4のinitPlayerLocal.sqf

暑中見舞い申し上げます。

(;´∀`)あつい

モニターに向かい合ってる最中に、ぬこバンディットに狙われそうになった所です。

入力中のテキストを破壊されてしまいます。

昨夜、メインPC(自作)が使用中に謎の電源OFFに・・、遂に壊れたか?!と焦りまくり、オーバークロックしてたので、定格に戻して様子を見てる所。

定格運用は、温度が上がらないのを、改めて知るw

sc20180728145245Battleyeのエラーがどーしても取れなくて、もう、考えつく限り手を尽くしたんですが、まったくしっぽを掴めない。

諦めかけたその時・・。

ふっ、と思い出しました。

initPlayerLocal.sqf(主にトレーダー配置のスクリプト)

これ、1.0.3から1.0.4で書き方が変更されたファイルです。

移行時に、気にはなったけど、同じスクリプトコードだし(やってる事一緒やし)、問題無いだろうと、そのまんまスルーしてました・・。

問題はこいつでした・・。

(;´Д`)Linux環境だからとか関係なかったんや・・

全部コメントアウトして、起動してみたら、動くでやんの・・。

(´;ω;`)ブワッ

超巨大な遠回りをしてしまったようです。

sc20180728150236新しい書き方は、createVehicleうんぬんと、泥臭い書き方では無く、Exileコードを呼び出しで書かれてるようです。

うん・・

全部書き直しですね。

これらコードの出力ツールのEden.pboの更新はされて無いようなので、このファイルは手書きしかなくなってしまったようですね。

追記:1.0.4のinitPlayerLocal.sqf

sc201807281717031.0.4のinitPlayerLocal.sqfはロクに見たことなかったので、何をやってるのかコードを見る。

どーって事無くて、トレーダー毎に、ExileClient_object_trader_createを呼び出してるに過ぎなかった。

んで、バニラでは、トレーダーにくっ付けるオブジェクトなんかをアタッチしてるだけでした(複数ある場合は、別個生成してからアタッチ)

sc20180728171924んで、こちらがEden.pboが出力した以前からのコード部分。

これを単純に、ExileClient_object_trader_createに流してやればええだけのように思えます(アタッチは考慮されてないけど)

0:クラス名
1:アニメーション
2:トレーダー名
3:顔
4:所持品
5:ポジション
6-7:方向(行列データ)

・・とリスト出力されてます。

ExileClient_object_trader_createの引数は。

0:クラス名
1:トレーダー名
2:顔
3:アニメーション
4:ポジション
5:方向(度データ)
6:アタッチオブジェクト

・・となってます。

方向の値だけ行列から、0-359度数に変換できれば、そのまま流せそうです。

VectorDirからDegree(度)に変換してくれる関数があるんじゃなかろうかと思っていたが、無いようだった・・。

※Arma3では、北から東、南、西に0~359度になっていて、VectorDirでは[0,1,0]が北、[0,-1,0]が南、[1,0,0]が東、[-1,0,0]が西になってる

うむむ・・。

Exileフォーラムを眺めてみても、ツール類も無いようだったし、みんなはどーやってんの?

(;´Д`)

※多くはM3Editorでのコード出力を勧めてるようでした

ま、トレーダーって数える程度だし、手作業で書いても大した事ないけどもね。ん・・Eden.pboを書き換えてみようか。

(;^ω^)まだ、マップいじるかもしれないし・・w

追記:bisign生成方法

sc20180729114626余談ですが、メモです。

PBO署名ファイルの生成の仕方です(biKey、bisign)

公式

Arma3Toolsがインストールされたディレクトリ内の、DSSignFile内にコマンドが入ってます。

DSCreateKey.exeで鍵を作って、DSSignFile.exeで生成できるようです。

GUIツールからは出来ないっぽい?

追記:だめだ

またBattleyeエラーが出始めた・・。

(;´Д`)

すっかり心が折れたぞw

最後の手段として残しておいた、これをやるしかありません。

完全無欠にまったくのゼロからの構築ぇ・・

このまま続けてもラチがあきません。この方が早い。

追記:Battleyeのscript.txtの書き方

sc20180801172553あ・・気になってしゃーない。

やっと、Battleyeのscript.txtの書き方のページを見つけました。

A Guide to BattlEye Filters

頭の数字は、キックするか?ログ出しするかという意味らしく、7だと全部ってことのようです。

続けて、キーワード名と、”=!”や”!”で、条件の指定(含まれているかどうか)、そして、対象テキスト文字となってます。

Battleyeでの定義

5 “HMMWV_” !”HMMWV_Ambulance

と書いた場合は、もし、スクリプト中に含まれていた場合はエラーになります。以下、例

スクリプト内

createVehicle [“HMMWV_Ambulance_DES_EP1″,getPosATL player,[],10,”NONE”];

Battleyeは単純な文字列比較で構成されてるようです。

ただ、これらの比較チェックは、サーバ側で行われてるんでしょうし、(チート対策とはいえ)なんだか裏方は忙しそうです。

(;´∀`)

しかしながら、Exile MODでのバニラの定義を覗くと、解析しようにも、恐ろしい長さがあるんです・・。無理っすわ

4万桁とか・・・w

多分、Exile Clientの一部コードが丸っと圧縮されてる雰囲気です。

追記:Battleyeヽ(゚∀。)ノウェ

sc20180803152953ほぼバニラ状態なのに、Battleyeスクリプトで蹴られるのが、どうにも気になって仕方が無い。

継続してネットから情報を探してます(多種多様な言語のページから・・)

(;´Д`)

前に書いたモノでの認識で間違い無いようで、Battleyeエラーが出たなら、スクリプトを確認して、(必要なら)原因のコードをログから拾い上げて、”そのまま”追加すれば良いようです。

BattleyeのKick条件は、ホワイトリストなので、許可すべきアイテムやアクション等は全て、書かなきゃいけないようです(ワイルドカードが利用できるので、多くは、”l_”とか”misc_”等の様に書ける)

追加の方法は、

ログにこんなエラーが出たら「Script restriction #40

scripts.txtの40+2行の所を見て一応確認します。

battleyeディレクトリ内に、.logファイルがあるはずなので、それを開きます。

蹴られたコード(場合によっては複数行)が表示されてます。

それを、”(クオート)と改行を、”¥n”でエスケープシーケンスして、1行にまとめ上げて、!=”・・・”として、最後の行に追加します。

これで終わりですが。

Battleyeの更新のために、サーバ再起動は不要だそうです。ただ、Rconツールなどから、リフレッシュ操作が必要です。

(;´Д`)

やり方は分かったが・・、最初にも言ったけど、おいらのサーバは、ほぼバニラ状態なんだけども、全ての行動やアイテムをテストして、Battleyeデバッグをしなきゃならんのか・・と。二の足を踏んでます。

なんか、違う所に原因があるような気がしてならない。

#デフォのAltisミッションで稼働させても、Kickされる始末