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

2017年2月15日プライベートarma3,dayz,exile,mod,server

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の世界も同様、”もし、リアルだったら・・” こんな感じなんですよ。ゲームで良かった。

2017年2月15日プライベートarma3,dayz,exile,mod,server

Posted by nabe