「mod」タグアーカイブ

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

sc20180713152941追記:わからん

追記:Battleyeチュートリアル

追記:Battleyeか・・

追記:解決!その一歩が大事

追記:Kickされまくる

追記:DayzSA

追記:サーバ管理者さんのMOD管理

追記:サーバ起動短縮

前回のLinuxでWindows版(Wine)稼働実験に失敗し、モチベーションがゼロになってしまって、放置しておりました。

(;´Д`)

久し振りにサーバを立ち上げ、設定を見直してる所です。

Wineは諦め、初心に戻って、extDB3での環境を”再度”試してみようと思いました。

あれや・・これや・・やってたら、あっさり動きました。。

ヽ(;゚д゚)ノ え・・・・・。

「スランプに入った時、まったく違う事をやってリセットする」なんて言葉をよく耳にしますが、確かに、そのようです。

忘れる前に、行った作業を記録します。

extDB3バージョン 1031

sc20180713153627extDB3のログを見たら、これ。

extDB3: Incompatiable Config Version: 5,  Required Version: 1

バージョンがちゃうぞ

・・と。

じゃ、ご指定通り1にします(つまり、ExileServer1.0.4の方じゃなくて、extDB3のextdb3-conf.iniを利用)

sc20180713153854すると、SQL_CUSTOM関連でエラーが出まくりました。

なにやら、サポート外の書き方のようです(exile.ini)

色々思う所はありますが、余計な事は考えず、エラーを取る方法を優先します。

(;´∀`)

Number of Inputsや、Sanitize Input Value Checkなどの書き方一切が許されてないようです。

先のエラーも含め、extDB3-1031のLinux版の中身が古いんだろうかとも思ってしまう・・が、横に置いておこう。

ここで指摘されたエラーを取っていきます。

ほとんどはコメント”;”にすればOKですが、[markDeleteUnpaidTerritories]の所は、以下を追記します。

SQL2_INPUTS = 0
SQL3_INPUTS = 0

あと、もう一点。

12-DateTime_ISO8601

という書き方も許されないので、上でいう”-DateTime_ISO8601”を丸っと削除します(日付書式の指定なのですが、8601は標準的なモノなので影響ないとは、思いたい・・いずれにせよ要確認)

全部手作業で作業するのは大変なので、テキストエディタの置換で一気に作業すると楽です。

Number of Inputs = 1 を ;Number of Inputs = 1 の様に。

とりあえず動いてる・・だけで、めっさ嬉しい・・。

(;^ω^)

データベース周りがちゃんと動作してるか、確認が必要ですね。

sc20180713154851先日のSteamサマーセールで、この度(いまさら?)、Dayz SAを購入しちゃいました。

(;^ω^)

ボヘミアさんへ、お布施みたいなつもりですけども。

ちょっとだけプレーしましたが、操作方法やらが、全然違うんですね。

印象的には、システム的な古さを感じましたけど(Arma2+αみたいな感じ)、こういうもんなんでしょうか。

しかし過酷です、敵に出会う前に、死にますw。まだ包帯の作り方や食料の取り方も知りません。

追記:サーバ起動短縮

サーバコマンド引数の、-checkSignaturesを取ってみたら、(私の環境では)10秒短縮できました。

具体的には、起動後すぐのSignature testsが実行されません(MODのpboファイルのチェック)

サーバ側のMODチェックは不要じゃないかと思った次第でもあります。

自分のところは、CUP MOD2個(core/terrains)、Zombie&Demonsだけなので、沢山MOD導入してる場合は、効果絶大でしょう。

追記:サーバ管理者さんのMOD管理

sc20180713165351サーバ管理しながら、Arma3プレーヤーもしてると、MODの設定がウザったくなります。

Arma3ランチャーのプリセットで、自鯖用のMODプリセットを作っておくと、とても便利。

既知ならスルーで。

(;´∀`)

追記:DayzSA

20180713210349_1Wikiとか見ない初見好きな旅人なのです。未だ、食料の確保の仕方が分かりません。

今回は珍しく、生き残ってる。

リュックもゲットして、あらゆるモノを見つけ次第拾ってる。

ゾンビとは、戦いたくないので、こっそりと探索(治癒の仕方も分かりません)

20180713211243_1おっ、プレゼントボックス?

中身はなんだろう。

拙作のアドオン(lootbox)に似た情景だったので、ちょっと嬉しい。

20180713211307_1.45弾と、VSS用マグだった。

持ってる唯一の銃(P90?)には、合うはずもない。
20180713211946_1どこに居るのかさっぱり検討もつかない・・。

(;´Д`)

Arma3でチェルナルスのおおよその形は分かってますが。

確か、海沿いを移動し続けてるんですが、よー分からん。

DayzSAをプレーすると、Exileのアイテム湧きが多すぎな印象しかしませんね・・。

要はバランスなんでしょうけども。

追記:Kickされまくる

sc20180714181249ん・・・・

(;´Д`)

サーバはエラー無く稼働してるんだが、インでけない・・。

かれこれ、2日ほど、これに掛かりっきり。

ログには一切の情報が無いので、総当たりでチェックしてるが、まったく光が見えず・・・。

Battleyeでも無い、DBコネクション系でも無い、config.cfgでも無い。ファイヤーウォールでも無い。MODシグネチャでも無し。

ExileServerに付属してくるAltisミッションで立ち上げて(extDB2)も同様だった。

データベースに接続情報が書かれて無いし、ローカル側にミッションファイルがダウンロードされてないので、多分、基本的な設定か何かだと思うんだけど・・。

だとすると、config.cfg位しか無いはずなんだけども、色々試したがアウトやった・・。

sc20180714181629ネット上をヒントを探し徘徊しまくってます。

(;´Д`)

偶然見つけたここ。

若干古めの文書ですが、サーバトラブルの解決方法が書かれてます。

便利かもと、備忘録。

https://forums.bohemia.net/forums/topic/172834-tutorial-debugging-server-issues-eg-not-loading-correctly/

追記:解決!その一歩が大事

20180714192805_1(´;ω;`)ブワッ

なんて久し振りな画面なんでしょう・・。

やっと、1歩前進です・・。

Kickされまくった原因は、とても単純でした(想定どおり)

config.cfgのこの一行。

loopback=true;

開発用にtrueにしてたんです。loopbackするので、同PC(IP)上でしか動作しないモードなんです(開発時はWindows PC上でやってたので)

すっかり忘れてた。

(;´Д`)

※ちゃんとDBにもログイン記録が出てるぅ(歓喜)

また新しいエラーが出てるんですが・・、これは情報があるので、すぐ解決できるでしょう。

Player nabe kicked off by BattlEye: Script Restriction #39

Battleyeスクリプトの書き方を指摘してるようです。Battleyeはカスタムしてないんですけどもね・・。

(;^ω^)なぜぇでしょうか。

sc20180714202724むむ?

このエラーの内容は、その都度違う内容が出るようです。

はて??

この#39(この番号も固定ではない)という数字はどんな意味があるんだろう。

このエラーが出た時は、battleyeディレクトリ内にlogが出力されます(scripts.log)

とはいえ、よく分からない。

private _cfg = configFile >> “CfgVehicles”;
private _supportUnits = (units _group – [_leader]) select {getText (_cfg >> typeOf “
{
private _logic = “Logic” createVehicleLocal [0, 0, 0];
private _trader = (_x select 0) createVeh”

果たして、このコードがどこのファイルかは、分からない・・。

(;´Д`)

当初、battleyeスクリプトかな?と思っていたが、どこにも、こんな記載は無かった。

sc20180714205234なーんとなく、ExileServerかExile本体内部のコードっぽいんだけども。

と何度か実行してたら、ファイル名が出てくる時があった。

アドオン絡みかな。まずは、範囲を限定していかないと。

アドオンは、大昔1.0.3時代にダウンロードして以来、更新してないし、ローカルにてミッションファイルの実行時でのエラーなので、これが犯人で間違いないだろう。

もしくは、データベースを初期化してないので、ゴミデータが悪さをしてるか、のいずれか。

今日はこの辺で寝るッ!m9( ゚д゚)

sudo shutdown 0 ターンッ

sc20180714210200・・久々にSpotifyで聞きながらの作業中。

globeええよ。

( ´∀`)

(どストライクな世代やし)
追記:Battleyeか・・

20180715145758_1。・゚・(ノД`)・゚・。

やっと、動いたぉぉ。

ただし、Battleyeをオフにするとね・・

(;^ω^)

1.0.3の時は動いてた訳なので、基本的な何かでしょう。

今からBattleyeの仕様を理解してスクリプトを全部見直す・・なんて事は絶対避けたい。

クライアント側(つまりミッションファイル)に、問題がある事は確定なので、一個づつ見直すしかありません。

追記:Battleyeチュートリアル

Battleyeスクリプトの書き方に関するドキュメント(英語)を発見したので、備忘録。

How To: BattlEye filters – DO IT YOURSELF!

追記:わからん

(;´Д`)

思いつく限りの試行錯誤をしまくったんだけども、どうしてもBattleyeで蹴られる・・。

なんでぇ・・・

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

sc20180626161259うむむ、想定していたよりも、Wineの壁はデカかった。

Wineの64ビットはまだ発展途上の段階のようです。

結局振り出し状態です。

。゚(゚´Д`゚)゚。

んで、気分転換に、コメで頂いた他サバ缶様のトラブルのヒントでも探せればと、コードを追っております。

サーバアドオンのAVSというモノで・・・

イマイチ分かってませんけども・・・

(;^ω^)

初期化部分でエラーが謎の動作があるようです(詳しくは前記事のコメント)

sc20180626161717エラーメッセージからサーバ側コード部分にたどり着きました。

AVS_system_database_connect.sqf(41行辺り)

ログで出されたエラーは、ここです。

最初に、データベースに接続テストを行って問題無いようです。

_result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE:exile”);

次に、SQL文を登録する部分です(ハックされないよう事前に文を登録しておくらしい)

_result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE_PROTOCOL:exile:SQL_CUSTOM:AVSDB:avs.ini”);

extDB3仕様

https://bitbucket.org/torndeco/extdb3/wiki/extDB3%20-%20System

sc20180626162055登録するSQL文はこの2つだけ(avs.ini)

めっちゃシンプルです。

しかしながら、提示されたログを見る限り、この部分でエラーとなってるようなのです。

ーーここのどこかにーー

    “Connected to database!” call ExileServer_util_log;
  diag_log “AVS – Connected to database!“;
    ExileServerDatabaseSessionId = “SQL”; //str(round(random(999999)));
    _result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE_PROTOCOL:exile:SQL_CUSTOM:SQL:exile.ini”);
      _result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE_PROTOCOL:exile:SQL_CUSTOM:AVSDB:avs.ini”);
    if ((_result select 0) isEqualTo 0) then
    {
        throw format [“Failed to initialize database protocol: %1”, _result];
    };
   ExileServerStartTime = (parseSimpleArray (“extDB3” callExtension “9:LOCAL_TIME”)) select 1;
    “Database protocol initialized!” call ExileServer_util_log;
    “extDB3” callExtension “9:ADD_PROTOCOL:LOG:TRADING:Exile_TradingLog”;
    “extDB3” callExtension “9:ADD_PROTOCOL:LOG:DEATH:Exile_DeathLog”;
    “extDB3” callExtension “9:ADD_PROTOCOL:LOG:TERRITORY:Exile_TerritoryLog”;
    “extDB3” callExtension “9:LOCK”;

    _isConnected = true;

ーーどこやーー

青字のログが出てないようなので、それ以前での例外エラーです。怪しいのは2つのADD_DATABASE_PROTOCOLでしょうか。

ん?何気なくコードを見ると、何か気になる部分が(濃い赤字

44行:_result = parseSimpleArray (“extDB3” callExtension “9:ADD_DATABASE_PROTOCOL:exile:SQL_CUSTOM:SQL:exile.ini”);

これはExileサーバ側のSQL登録ですけど、なぜここにあるんだ?(exile.ini)

コードを見ると、extDB3のオーバーライド用コードと類似してる部分が多々あるようです(mpmission/Exile_Server_Overrides/ExileServer_system_database_connect.sqf)

※そのまんまコピペした感じです

この重複した部分が悪さをしてる・・とか。。(あくまで推測です)

今日のところはここまで。。٩(′д‵)۶

追記:

完全にフックしてるようでした、多分、これは問題無いはず。

どうでしょ?

どこでエラーになってるのか、対象部分の各行に、diag_log”**** HELLO!! ****”; とか書きたいなぁ・・・・。

(;^ω^)

戯言:

実際にSQL文が書かれている(avs.ini)に、これも書くと丁寧になるかもしれない。

Number of Inputs = 1 (引数の入力数、要はSQL文の”?”の数)

※公式ドキュメントでは、引数の数が合わないとダメとか書かれてる

sc20180626171053readme(導入手順)を読んでみると、vehicleテーブルに項目を追加するんですね。

なんだか怖いw

(;^ω^)

vehicleテーブルに「ammo」を追加して、AVSアドオンでは、この項目だけを読み書きしてるようです。

1.0.3と1.0.4でのDB相違に関係あるかな・・と思って調べたけど、多分無いですね。

(;^ω^)

追記:

フックしてるのは以下の10ファイル。

ExileServer_object_player_createBambi
ExileServer_object_player_database_load
ExileServer_object_vehicle_createNonPersistentVehicle
ExileServer_object_vehicle_createPersistentVehicle
ExileServer_object_vehicle_database_insert
ExileServer_object_vehicle_database_update
ExileServer_object_vehicle_database_load
ExileServer_system_database_connect
ExileServer_world_initialize
ExileServer_object_vehicle_carefulCreateVehicle

怪しいのは、やっぱこのファイル。

#kickが2度実行される不思議な事象があるので、次はここら辺を追います。

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

sc20180616115215追記:Wine泥酔途中経過

追記:via Wineッ?

追記:extDB2に戻す

追記:衝撃の事実

もうやだextDB3(Linux)

。・゚・(ノД`)・゚・。

やっと、やっと、やっと動いたよぉ・・・。

extDB3 Loaded

土曜の昼下がり、このログ1行を見て歓喜する人間が居たんです。

3日間ぶっとーしで悩みました。

色々な世界各国言語の記事を読み漁り、ほぼ全ての解決方法を試しましたが結局のところ駄目やった。

(;´∀`)・・・

世界中のextDB3-Linuxトラブルを解決されればと、今この瞬間のスナップを記録しておきたい(日本語でしか書かないけど)

色々試した事も備忘録として。

動作環境

OSのバージョンはこれ(現時点で最新版Ubuntu18.04)

Linux sabamiso 4.15.0-23-generic #25-Ubuntu SMP Wed May 23 18:02:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

extDB3バージョンはこれ(公式

extDB3-1031.7z(2017/8/27)

AMD A6-3650(OC:3.5Ghz)

ディレクトリ構造

面倒なのでスクショで。

sc20180616121731サーバホーム

MOD部分、シンプルなので、これしかありませんけども。
sc20180616121821@ExileSerevr内

おそろしくそのまま
sc20180616121934@extDB3内

テストするため無駄なファイルが入ってますが、解凍した内容全部ここです。

公式では、@ExileServerにコピーとか書かれてますが、やんなくてOKやった

※Linuxで意味無いDLLファイルは削除してます

sc20180616122100サーバ起動時のスクリプト

通常のサーバMODとして、@extDB3を呼び出します。

※スクリプトはここで公開してます

サーバMODを書く順番は関係無いようです。

ログで見る対策

sc20180616130835これが記載されれば成功です。

@extDB3/extdb3.pbo内から出力されてるメッセージで、外部モジュールの呼び出しが成功するかどうかで判断してます。

モジュールが正常に読み込まれてるため、これ以降のエラーは、MySQL(データベース)の方に問題がある事になります(@extDB3/logにも出力されます)

sc20180616124952MODと認識されてるなら、ここに記載されます。

ここに出てない場合は、ファイルの配置に関するエラーです。

Linuxで注意する事は、ファイル名のCase sensitive(大文字小文字)と、パーミッションです。

Smabaなどでファイル管理してると、実ファイルがどうなってるか分からなくなります(Sambaの設定次第)

パーミッションは、サーバ稼働のユーザーIDと一致させます。rootで動かさないように。

sudo chown -R steam:steam *

※ディレクトリも引っ括めてまとめて変更(steamユーザーとして)

sc20180616131655モジュールがロードされてない場合はこれ。

CallExtension ‘extDB3’ could not be found

これを解決するまでが地獄です。

sc20180616131940sh: 1: objdump: not found

これが出た場合、objdumpという開発ツールの類が無いという事です(内部エラーで、ダンプしようとしてる?)

ま、Exileとは関係無いものですが、このツールは以下でインストールできます。

sudo apt install binutils

extDB3モジュールに必要なファイルが不足してるか確認。

ldd @extDB3/extDB3.so

とすると、不足してるものがあるかどうか調べられます。私の環境では以下が表示されました。

linux-gate.so.1 (0xf7fcb000)
libtbbmalloc.so.2 => /usr/lib/i386-linux-gnu/libtbbmalloc.so.2 (0xf7a42000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7a3d000)
libz.so.1 => /usr/lib32/libz.so.1 (0xf7a1e000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf791c000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf78fd000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7721000)
/lib/ld-linux.so.2 (0xf7fcd000)

sc20180616132318不足してる場合、この様にnot foundと表示されます。

sudo apt install libtbb2:i386

sudo apt install lib32z1-dev

全てリンクされてる様に必要なモノを導入してください。

こういったextDB3トラブルで、海外の掲示板で、「ファイル名を小文字にしてみな!」的な書き込みを沢山見かけますが・・・

これは意味無しです。

案の定、extDB3.soを、小文字のextdb3.soにすると、動きません。

私はこれで動作しましたが、extDB3公式に書いてる事や、Exile公式フォーラムに書かれてる事とは全然違います。

単純に、Arma3の検索パス内にあれば良いんじゃないか?という結論に達しました。

(;´∀`)

モジュール系のエラーは、OSのアップデート時にリンクが外れたりするかも、なので、要注意です。

疲れたぁ・・目が痛い(;´Д`)

追記:衝撃の事実

sc20180617141528何気なくログを見ていた、その時です。

Arma 3 Console version 1.82.144710 x86

ん?

:(;゙゚’ω゚’):・・・・・・

えっ、64ビットで動いてるんじゃないの?

あんれ?1.0.3ん時、動いてたやん。どないな事?

sc20180617141746急いでWindowsサーバの方を確認してみる。

こっちは、確実に64ビットで動いてる・・。

(´;ω;`)

おいらは今まで何をやっていたのか・・。

この記事を投稿後、謎のエラー出まくりで、いかんせん対処がどこにもヒットしない。

Class  destroyed with lock count 1
Class CfgBrains destroyed with lock count 1
Class Default destroyed with lock count 492
Class HitEffects destroyed with lock count 492
Class NVGMarkers destroyed with lock count 492
Class MissileCore destroyed with lock count 57
Class BombCore destroyed with lock count 16
Class LaserBombCore destroyed with lock count 10
Class RocketCore destroyed with lock count 12
Class ArtilleryRocketCore destroyed with lock count 1
Class BulletCore destroyed with lock count 140
Class ShotgunCore destroyed with lock count 2
Class ShellCore destroyed with lock count 74
Class SubmunitionCore destroyed with lock count 26

こんなのがたっぷりと。。

ソースコードを追うしかないか・・と思った矢先に、先程のログを見つけちゃいました。早く気付いてよかったというべきか・・。

(;´Д`)

つまりは、Linuxサーバでは、32ビット環境でのみの利用となるようです。

ボヘミアさんが、Linux64ビット版Arma3サーバを開発したら話は変わりますが・・。

開発Winサーバと、ミッションファイルの管理が変わっちまう。Winの方もextDB2に戻すしかないか。

追記:extDB2に戻す

sc20180617145947日曜の昼下がり。

肩を落としながら、extDB2に戻す作業をしました。

goemonサーバ管理者さん配信のTwitchを見ながらですw

(;´∀`)

※オーストラリアMAPのPvEのようです、Exileというよりも違うゲームに仕上がってますけども

備忘録:extDB2での配置

サーバルート

xm8.so、extDB2.so、extdb-conf.ini

/extDB以下 (起動すると勝手に作られるが)

 /logs (起動すると勝手に作られるが)

 /sql_custom_v2 (exile.iniだけ入ってる)

・・となります。

extDB2はサーバMODとして登録は不要です(登録したところで、検索パスが増えるだけだけどもね)

extDB2.soのライブラリ不足は無いようでした。

追記:via Wineッ?

sc20180618093913Linuxには、最後の手段がありましたね。。

Wineというモノが・・。

Linux環境上でWindowsバイナリだけを実行できるアレです(違法モノじゃないですよw)

OSエミュレータ(仮想環境)では無いので、実機とほぼ変わらず高速で動作します。

これが使えれば、Linux上で、Arma3のWindows64ビットサーバを動作させられるんじゃないか・・と。

(;^ω^)

ただ・・Wineの知識が皆無なので、それなりに壁が。

動かしたいモノはサーバなので、もしかしたら難なく動くかもしれません。

いずれにせよ調査が必要です。

ここのスレッド(海外)で、実際に話題になっていて、動作してるようなのです。

簡単にはいかなそう、ですけども・・。

Windowsライセンス無しで行くには、この手段しかありませんが。

(;´Д`)

分からない方にご説明

1.Arma3サーバをLinuxマシンで動かしたい

  Windows買わなくてもOK、法律的にもクリア

2.だがしかし、現在Linuxは32ビット版しか無い

  従って、extDB3も利用できない

3.Wineで無理やりWindows64ビット版を動かす

  仮想OSでは無いし、それなりに速い

4.どうなる事やら(現在ここ)

サーバなのでモニターが無い。なので、仮想画面を作成して、その中にWindows版のSteamとArma3サーバをインストール。

動けばこっちのモン。Windows版の環境をそのままコピーすればええだけだ。

画面にアクセスしたくなったら、リモートからVNCで操作できる。

追記:牛歩状態でWine試飲

sc20180619160527仮想画面作って、リモートからVNCでログインできる所まではきた。

こういう自由度の高さは、さすがLinuxだと関心してる。

画面は昔懐かしいBlackBox環境です。

Wineも入れた、Steamも入れた。

まずは、正常に偽Windows環境が動くかどうか、です。

(;´Д`)

ただ、下手な操作すると、落ちるんだよなぁ。一個づつ解決していかないと。

追記:Wine泥酔途中経過

sc20180619165531何となくWineというモノが理解できました。

素晴らしいツールです。

それっぽいエクスプローラーや、メモ帳など、普通に動くんですね。

Steamもちゃんと、動作してくれてるようです(あくまでもコマンドレベルですが、ユーザーログインやバージョンアップなど確認)

※左上のウィンドウは、トレイアイコンのつもりなのでしょうw

wine-gecko(ウェブ系)やwine-mono(.Net系)のパッケージを入れて無いので、グラフィカルなモノはまだ試せてません。

後は、Steamコマンドから、Arma3サーバ(Windows版)をインスコして、動作確認するだけです。

(;´Д`)はぁ・・

枝豆とモロコシがたべたい