「server」タグアーカイブ

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

sc20170517022620なにやら、ARMA3のバージョンアップがありました。

世界の鯖缶さんは、今やサーバの調整でてんやわんやでしょう・・。

(;^ω^)

さて・・私のまったりサーバ構築ですが。

やっと・・・バニラ状態での稼働と接続が出来ました・・。

(;´Д`)おせーよ

データベースの更新がまったくされて無く、ログを見てもエラーと。設定を何度も見直しましたが、おかしく無い・・はず・・。

ものは試しと、Arma3 Server.exeの32ビット版の方で起動したら、ちゃんと動作するようになったというオチでした。クライアントは64ビットで動いてるようだけども。

ヽ(;゚д゚)ノ なんでやねん!

20170517021401_1ばさっ。

これが私のEXILE世界です!

おおっ、ナンテことないんですが、感動です。

3日も苦労したんですから。

20170517021646_1ペタッ。

一度、墜落して死んでます

ほら、ログの書込みをチェックしなきゃならないからね。

まさに、Exile_DeathLog.logというデスログがあるようです。

20170517021719_1ほう、記念すべき一番最初のアイテムが、「エロ本」ですか。

そうきましたか・・。

バニラ状態でも、普通に湧いてくれてるようです。

20170517022259_1浮かれてはいけません。

ここからが、世界構築の道、スタートなのです。
sc20170517023814こちらがデータベースのPlayerの情報。

しっかり格納されてます。

MIJ鯖缶さまからの情報では、この「hitpoints」が桁落ちしてしまう不具合があるようで、これを広げないといけないようです。

ほう、タブレットのステータスで見る、体の部位が全て文字で格納されてるんですね。

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

sc20170516011502まずは、サーバを起動して、接続して落ち着こうと思いました。

設定デフォルト状態、サーバを(まずは)起動して接続・・までの、作業メモです。

解決してないので、この文章に価値はありませんのでご注意。

ローカルPCで、Arma3 Serverを動かす場合は「steam_appid.txt」を107410に変更しないといけないっぽい(推測)

嘘くさいが、こうしないと起動しない。

sc20170516000038

接続のやり方

サーバを上げたら、事前に必要なMODだけ有効にして、ランチャー右下「直接接続」から起動。

又は、ARMA3起動後、マルチの「LAN」から接続できる。

アドレスは「127.0.0.1」とロカールIPの2つが表示される。

なんでか、PING値が結構違う。127.0.0.1の方が速いという不思議。

しかし、ローカルなのに、Ping値30ってなんだよ。遅せーよ。

sc20170515235420TADSTで注意(Linuxサーバの人は関係無し)

この一番下の欄で、[…]でサーバを選択すると思うのですが、なんでか、64ビット版の方が表示されません。

Any filesで選択するとOKです。

せっかくなので、64ビットを選ばない理由はありません。

sc20170515234615pboファイルが沢山表示され、承認されていない」とエラーで接続できない。

サーバー側に、MOD用署名キーがコピーされていなかった。

サーバーが稼働してるディレクトリーの「keys」に、MODの「keys内」の.bikeyファイルをコピーする。

sc20170515233859サーバ接続後、”Connecting..”で一向に画面が進まない(ESCを押すと終了)

MySQLデータベースの権限設定に誤りがありました。

サーバ用アカウントでアクセスしてる場合に、そのユーザーがEXILEスキーマに対して権限を付与しなければなりません。

MySQL Workbenchで、rootで入り、「User and Privileges」画面から、ユーザーを選択後、「Schema Privileges」で権限を付与できます。但し、バグってます、一度Workbenchを全画面表示にすると正常になります。

sc20170515234947知らん言語のソースコードを追いまくったり、ファイヤーウォール設定見直したり、数時間浪費しました。

(;´Д`)多分、これやろ

・・・と思っていた時期もありました。

結局の所、Connecting‥から動きません。

Arma3Serverログでは接続をしていて、DBの更新が掛からないので、DB周りかと思っていたんですが、違うようです。

というか、EXILE MOD設定のServer.logはどこにあるんだよ。

(;´Д`)

というか、そもそも論で、Dedicatred Serverで、ローカル環境内で接続できないのかもしれない。

直にLinux側にサーバ置こうかな。

もうちょい、情報を集めよう。ダメだ今日は疲れた・・。

追記:

夜も気になって眠れなかったw(;^ω^)

そもそもTADSTを使っちゃいけないんですわ。Arma3サーバの設定ファイル(basic.cfg/config.cfg)は、EXILEのものを利用する事になるはず・・なので、別に起動BATを起こさないといけない訳ですね。

sc20170516050920サーバ状態が「ミッションを選択中」になってたんで気付いた。

ミッションが無指定状態って訳なんすね・・。

(;^ω^)確かに設定したはず、別のCFGに・・と。

追記:

20170516193007_1無事接続でけた・・。

(´∀`*)

この画面から一向に進みませんが・・。

バニラ状態でも、遊べるんかな・・と期待してましたが。

ここから先は、ミッションファイルをイジる感じになるんでしょう。多分。

しかし、まだDBの更新が来てないみたい。まだ、設定が足りないよう。

sc20170516203943ログは、Arma3Server起動時の”-profiles”で指定した先のホルダーに、まとめて保存されるようでした。

もっと細かなログが欲しいぞ。

ここで公開されるPDFの手順のままでやれば、誰でも起動までは簡単にいけるはずです。

私はあえて、この手順を無視してやってました。エラーに遭遇した方が覚えが早いので(;^ω^)

【GAME】ARMA3 EXILEサーバ初見斜め読みッ!!

sc20170215184208追記(2/17)

ARMA3 EXILEスクリプトと如何なるものかと、EXILE MODの中身を覗いてます。

EXILE公式からサーバMODをダウンロードして解凍すると、普通にテキストエディタで中身を見ることができます。

exile_server_config.pbo

というファイルに、その名のごとくサーバ設定がされてるようで、色々とEXILEの仕様が分かりました(今頃?!)

今まで、プレーしながらの間接的に覚えたり、英語質問ページを翻訳したりして情報収集してたので・・

なんだか複雑な気分です・・(;´Д`)

これ以下、EXILEのネタバレが含まれるので、純粋に楽しみたい方はここでストップです!

まだスクリプトを斜め読みの段階なので間違い多数です。また、サーバによっては、これらをカスタムしてるので、あくまでデフォルト状態の場合です。

LOOT系

建物毎に以下のLOOTクラスが割り当てられてて、そのクラス毎にアイテム種類や沸き具合を設定してます。

  • CivillianLowerClass 民家(食料他)
  • CivillianUpperClass ヨサゲな民家(食料他)
  • Shop ショップ系(食料他)
  • Industrial 工場(工具系)
  • Factories 工場(工具系)
  • VehicleService 車庫?(工具系)
  • Military 軍事施設(武器系)
  • Medical 病院?(治療系)
  • Tourist 観光地?(武器系)
  • Radiation 放射線エリア(武器系)

建物内の沸きポイントは、EXILE公式で配布されている、「Loot Table Compiler」「3DEN Plugin」で自由に設定できるようです。

例えば、CivillianLowerClass(民家)の場合、

{398.936170212766, “Exile_Item_Can_Empty”}, // 3.99%
{797.872340425532, “Exile_Item_ToiletPaper”}, // 3.99%
{1196.8085106383, “Exile_Item_PlasticBottleEmpty”}, // 3.99%
{1409.57446808511, “Exile_Weapon_M1014”}, // 2.13%
{1569.14893617021, “Exile_Magazine_8Rnd_74Slug”}, // 1.60%
{1702.12765957447, “FlareRed_F”}, // 1.33%
{1835.10638297872, “FlareGreen_F”}, // 1.33%
{1968.08510638298, “Chemlight_yellow”}, // 1.33%
{2101.06382978723, “Chemlight_red”}, // 1.33%
{2234.04255319149, “Chemlight_green”}, // 1.33%
{2367.02127659574, “Chemlight_blue”}, // 1.33%
{2500, “V_Rangemaster_belt”}, // 1.33%

こんな感じで設定されてます。空缶やトイレットペーパー、ペットボトルをよく見ますが、これらは4%の確立で出現するようになってます。

”~”で囲まれてるのは、ARMA3に登場するアイテムや武器・車両・建物・オブジェクト全てに付いてる「内部名」です。これはEDENエディタで確認できます。MODオブジェクトにも例外無く付いてます。

0-9999の乱数かカウンターなんかで、範囲を特定してる(湧き率)ようです(わざわざ小数点で書かれてるのはツール類で自動生成?)。このリストを改変すれば、特別なアイテム沸きをさせる事ができると(約5000行、とても膨大ですが・・)

sc20170215191128この他にも様々な設定があるのですが。

気になった所だけピックアップ。


リセット系

  • 拠点は家賃未納だと1週間で消失
  • 拠点外の建築したコンテナ(テント等)は10日で消失
  • ワークベンチは2日で消失
  • 乗り捨てた車両は3日で消失
  • 所有車両は乗って無い状態から1週間で消失
  • 旗を盗まれた場合3日以内にお金を払わないと拠点消失
  • 旗を盗まれた場合ドアやロックがリセットされるまで2日

リスペクト系

キルする方法で意外にも様々設定できるようです。

  • トレーダーと取引 額1/10分
  • 通常キル 80
  • マシンガン 150
  • 斧 300
  • ロードキル 200
  • 空中(飛行中) 1000

また、これらの他にボーナスポイントとして、100m超えショット、ファーストキル、拠点内キル、相手の拠点内キル、キルストリーク(時間内連続キル:デフォ2分)などが加算されます。

リスペクトのマイナスについては。

  • 死因不明(unknown reason) 1%
  • クラッシュ 1%
  • 自殺 2%
  • フレンドリーファイヤ 3%
  • NPCからキル 4%
  • バンビキル 5%
  • キルされる 5%

その他

バンビ状態で所持してるアイテムの種類なども設定できます。

“ItemCompass”,
“ItemMap”, // Because why not
“Exile_Item_XM8”,
“ItemRadio”,
“Exile_Item_PlasticBottleFreshWater”

これがデフォですね。食料が無いんですね。サーバによっては、地図すら持ってない場合もありますけども。

parachuteSpawning = 1;
haloJump = 1;
parachuteDropHeight = 1000;
spawnZoneRadius = 500;

サーバによって様々な、スポーン時のパラシュート降下の有無です。パラシュートを開いてない状態で1Km上空で、500m範囲のどこかがデフォだったようです。

protectionDuration = 5;

バンビ状態を維持する時間です。5分がデフォです。

spawnZoneVehicles[] =
{
    {5, “Exile_Bike_OldBike”},
    {5, “Exile_Bike_MountainBike”}
};

ここで、スポーンエリアの自転車を設定していたようです。頭の5は、台数のようです。

/**
* Grid Size for vehicle spawning,
* smaller the number more vehicles,
* you get the point
*/
vehiclesGridSize = 2200;

続いて、車両の沸きもここで設定していたようです。2200は、2.2Km毎にという意味だと多分。

damageChance = 20; // 20% chance for a vehicle HITPOINT to be damaged
maximumDamage = 0.9;
randomizeFuel = 1;
fuel = 1;

沸き時のダメージの様子と、燃料の具合です。

// Stuff to spawn on roads
ground[] =
{
    “Exile_Bike_QuadBike_Black”,
    “Exile_Bike_QuadBike_Blue”,
    “Exile_Bike_QuadBike_Red”,
    “Exile_Bike_QuadBike_White”,
    “Exile_Bike_QuadBike_Nato”,
    “Exile_Bike_QuadBike_Csat”,
    “Exile_Bike_QuadBike_Fia”,
    “Exile_Bike_QuadBike_Guerilla01”,
    “Exile_Bike_QuadBike_Guerilla02”,
    “Exile_Car_Volha_Blue”,
    “Exile_Car_Volha_White”,
    “Exile_Car_Lada_Green”,
    “Exile_Car_Lada_Taxi”,
    “Exile_Car_TowTractor_White”,
    “Exile_Car_UAZ_Open_Green”,
    “Exile_Car_UAZ_Green”,
    “Exile_Car_LandRover_Ambulance_Desert”,
    “Exile_Car_Tractor_Red”,
    “Exile_Car_OldTractor_Red”,
    “Exile_Car_Octavius_White”
};

これが、沸き車両のリストなんですか・・。沢山あるようですが、バギーだけで9つもあります。

この他に、ボードなどの船沸きリストもありました。

restartTimer[] = {3, 0};

リスタートの設定です。デフォだと3時間となってます。

enabledEvents[] = {“SupplyBox”, “AbandonedSafe”, “AmbientFlyOver”, “EarthQuake”};

意外だったのが、イベント関連。

この4種類って、デフォで用意されてるものだったらしい。

SupplyBoxは、インしてるプレーヤー数が、10人居ないと発生しないようになってました。マーカーも10分だけの表示になってます。

ちなみに、クレイトの中身も細かく設定できるようです、ビールだけとかデフォで、6種類。

サーバ本体

EXILEサーバ実態は、exile_server.pboというファイルで、スクリプトが分かれば、これを改変する事で、オリジナルなEXILEサーバを提供できる訳でしょう(1万行を越えてます)

XEONで高スペック自宅サーバ運用してる方や、VPSなどの仮想環境(Linux可)、ノートPCでもサーバ運用が可能なようですが、実際のところはテストが必須でしょうね。

ネットワークの太さも重要でしょうし。ARMA3ではUDPソケットも多用してます(あの不安定さはここから来るのか?)

ちなみに、プレーヤーデータは、MySQLを利用する事が想定されてるようです。

定期的にバッチ処理をカマしてやりたい場合は、SQLでデータをイジれる訳ですね。

「定期的に貯金がゼロになる!」とか・・(;´Д`)

予定

そういえば、トレーダー関連の売買や、拠点系、イベント系は今回まったく出てこなかったので、どこに書かれてるのか今の所分からない。EDENから操作すると、なんか出てくるんかな?

資料・ダウンロード

EXILE公式ダウンロード(他ツール類)
http://www.exilemod.com/downloads/

ボヘミア公式スクリプトリファレンス
https://community.bistudio.com/wiki/Category:Scripting_Commands_Arma_3

追記:

sc20170217183527本日も、ずっとスクリプトを眺めてましたw

(;^ω^)

サーバ側・クライアント側を行ったり来たり・・とw

このEXILEスクリプト、説明やコメントがほぼ皆無なので、ひたすらに眺めて理解するしかありませんw(設定の所は例が書いてある)

前回疑問だったレシピやLOOTの設定箇所は、MAP毎のミッションファイルに記載されていました(MIJの鯖管にコメント頂いたとおり)

NPC(トレーダー等)等も、全てここのようです。

デフォで、AltisとNamalsk、Tanoaの3種類が入ってるのですが、Eseekerやチェルノ、Tanuasなんかのサーバは、全部自前で全設定してるって事なのでしょう・・。

お疲れ様です鯖管殿(;^ω^)

tools[] =
{
    “Exile_Item_CookingPot”
};
components[] =
{
    {1, “Exile_Item_PlasticBottleFreshWater”},
    {1, “Exile_Item_InstantCoffee”}
};

レシピはこんな感じに書かれてます。これなら、好きなように改変できますね(この例は、ブリューコーヒーのクラフトレシピ)

class Exile_Item_Rope                            { quality = 1; price = 20; };
class Exile_Item_DuctTape                        { quality = 1; price = 300; };
class Exile_Item_ExtensionCord                    { quality = 1; price = 40; };
class Exile_Item_FuelCanisterEmpty                { quality = 1; price = 40; };
class Exile_Item_JunkMetal                        { quality = 1; price = 400; };
class Exile_Item_LightBulb                        { quality = 1; price = 20; };
class Exile_Item_MetalBoard                        { quality = 1; price = 600; };

価格も全アイテムがずらっと書かれてます。qualityは、アイテムレベルになるのかな?(必要レスペクトのレベル帯とか)

しかし、全アイテム、もの凄い数です・・。

ホタルの有無、Anomalies/異常?、Breathing/呼吸?、雪の有無、放射線、天候による気温設定などがあります。

* 50m  = Minimum
* 200m = Maximum
*/
spawnRadius = 60;

後は、LOOTの沸き設定。

デフォでは、60mの範囲で、1建物3個までで湧くようです。

class CfgExileMusic
{
    Ambient[] = {“ExileTrack03″,”ExileTrack04”};
    Combat[] = {“ExileTrack06″,”ExileTrack07”};
    Intro[] = {“ExileTrack02″,”ExileTrack03”};
};

うむむ?EXILEの曲って、あのテーマしか聞いた事ないですが、他にもあるんでしょうか・・。

後は、プレーヤーアクション系のコード定義、水・給油系のオブジェクト定義などがありました。

numbersOnly = “0123456789”;
maxDeposit = 10000;

これが、ロッカーの最大格納額ですねwデフォでは1万だった訳だ。

hungerDecay = 90;
thirstDecay = 60;
    healthDecay = 5.0;

これは、空腹度や飲料関係・回復の設定。

// Purchase Price         Radius         Number of Objects
{5000,                    15,            30                     }, // Level 1
{10000,                    30,            60                     }, // Level 2
{15000,                    45,            90                     }, // Level 3
{20000,                    60,            120                    }, // Level 4
{25000,                    75,            150                    }, // Level 5
{30000,                    90,            180                    }, // Level 6
{35000,                    105,        210                    }, // Level 7
{40000,                    120,        240                    }, // Level 8
{45000,                    135,        270                    }, // Level 9
{50000,                    150,        300

これは、拠点の価値と家賃と範囲の設定ですね。自分はLevel2位までしか拡張した事ないんですけども。

sellPriceFactor = 0.5;

rekeyPriceFactor = 0.1;

class requiredRespect
{
    Level1 = 0;
    Level2 = 5000;
    Level3 = 10000;
    Level4 = 15000;
    Level5 = 20000;
    Level6 = 25000;
};

後は、トレーダー系の設定が並びます。

これが、買値の設定かな。そして、先ほどのアイテムレベルの意味がこれです。レスペクトがこれだけ無いと買えない。

author = “Exile Mod Team”;
onLoadName = “Exile Mod”;
onLoadMission= “www.exilemod.com”;
loadScreen = “exile_assets\texture\mod\logo.paa”;
disableChannels[] = {0, 2};
OnLoadIntro = “”;
OnLoadIntroTime = false;
OnLoadMissionTime = false;

class Header
{
    gameType = Survive; // Do NOT change this
    minPlayers = 1;
    maxPlayers = 100;
};

ここで、ローディング時に表示される、サーバ情報の内容のようです。

sc20170217191417んで、ここから先は「DONT TOUCH!!」と書かれてるエリアなのですが。

こんなのがずーーーーーと続きます。

これらは、NPC(トレーダー等)や独自配置のMAPオブジェクトの定義です。

実際はツールが書いてくれる訳です。カスタムしまくってると、トンデモないサイズになるわけですね。

1行が1個のオブジェクトです。デフォでも相当のサイズ。

EXILEサーバに接続する時に、せこせこと、サーバから受信しながら、これらのオブジェクトを置いていってる訳です。

いや・・サーバ建てるの大変ですよ。これ。

EXILEではなく兄弟分のDAYZをテーマにした自主制作ショートムービー。

EXILEの世界も同様、”もし、リアルだったら・・” こんな感じなんですよ。ゲームで良かった。