2016年1月21日木曜日

[Modding]xml解析:hextypes


本稿ではMOD作成の前提として、xmlに書かれた情報を解析していきます。

今回はマップを構成するhexの設定を行うhextypesテーブルです。

※多分にネタバレを含みます。ご注意ください。


サンプルデータ

データの参照元はhextypes.xmlです。
今回のサンプルは森の小屋があるhexです。
<table name="hextypes">
    <column name="id">11</column>
    <column name="strName">forest shack</column>
    <column name="strDesc">secluded shack in the woods</column>
    <column name="nTerrainCost">2</column>
    <column name="nVizLimiter">2</column>
    <column name="nVizIncrease">0</column>
    <column name="nTreasureID">7</column>
    <column name="bPassable">1</column>
    <column name="nScavengeInitialID">580</column>
    <column name="nScavengeItemsIDPerHour">30</column>
    <column name="nCampItems">5</column>
    <column name="vLightLevels">0.25,1.0,1.0,1.0,0.25,0.15</column>
    <column name="nDefaultCampID">525</column>
    <column name="nMinRange">3</column>
    <column name="nMaxRange">5</column>
    <column name="vCondIDs"></column>
</table>
column解析

公式forumのこちらのスレッドでも少し解説されています。
vLightLevelsに関してはこちらを参照してください。

strName定義名です。
strDescはどこかで表示されている様子もないので、
メモ程度のものだと考えても良さそうです。

nTerrainCostは、そのhexに侵入するために必要な行動力です。

nVizLimiterはそのhexが外からの視界を制限する度合いで、
nVizIncreaseそのhexに立った時に増える視界の長さ…だと思います。

nTreasureIDは、treasuretableテーブルのIDで、
そのhexに初期配置されるアイテムが指定されています。

bPassable"1"が指定されていた場合、その上を通過することが出来ます
"0"なら通過することは出来ません。

nScavengeInitialIDtreasuretableテーブルのIDで、
こちらはそのhexに初期配置されるScavenge可能な場所が指定されています。

nScavengeItemsIDPerHourも同様にtreasuretableテーブルのIDで、
そのhexにおいて時間で追加されるScavenge可能な場所です。

nCampItemsは、そのhexに生成されるキャンプの最大数です。

vLightLevelsは、時間帯によるそのhexの"明るさ"です。
明かりのついた都市部などでは夜間も明るく、森では昼間も暗く設定されています。

nDefaultCampIDtreasuretableテーブルのIDで、
そのhexに初期配置されるキャンプ地のリストが指定されています。

nMinRange/nMaxRangeは、
そのhexで戦闘を開始した際、決定される最小/最大のRangeだと思われます。
屋内や見通しの悪い場所では、比較的小さく設定されているようです。

vCondIDsは、そのhexに立っているときに付与されるconditionのIDです。
積極的に使われていない項目ですが、複数IDの指定も出来そうです。


MODの仕様上、hexの追加・変更はかなり手間のかかる作業ですが、
このテーブルの改変だけならあまり難しくありません。
移動時のコストや明るさなど、地味ながらに細かい調整が可能なテーブルなので、
難易度調整や、overhaul系のMOD作成で活用できそうです。


0 件のコメント:

コメントを投稿