2015年12月14日月曜日

[Modding]xml解析:gamevars

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

今回はゲームの設定用パラメータを定義するgamevarsテーブルを解析します。

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




サンプルデータ

データの参照元はgamevars.xmlです。
今回は特殊なケースなので、すべての変数をサンプルとして掲載します。
<table name="gamevars">
    <column name="strName">fCloudChanceJan</column>
    <column name="strType">Number</column>
    <column name="strValue">80</column>
</table>
<table name="gamevars">
    <column name="strName">fCloudChanceJuly</column>
    <column name="strType">Number</column>
    <column name="strValue">20</column>
</table>
<table name="gamevars">
    <column name="strName">fCloudChanceVar</column>
    <column name="strType">Number</column>
    <column name="strValue">30</column>
</table>
<table name="gamevars">
    <column name="strName">fPrecipChanceJan</column>
    <column name="strType">Number</column>
    <column name="strValue">50</column>
</table>
<table name="gamevars">
    <column name="strName">fPrecipChanceJuly</column>
    <column name="strType">Number</column>
    <column name="strValue">30</column>
</table>
<table name="gamevars">
    <column name="strName">fPrecipChanceVar</column>
    <column name="strType">Number</column>
    <column name="strValue">35</column>
</table>
<table name="gamevars">
    <column name="strName">nSkillPoints</column>
    <column name="strType">int</column>
    <column name="strValue">15</column>
</table>
<table name="gamevars">
    <column name="strName">nStartDateDay</column>
    <column name="strType">int</column>
    <column name="strValue">14</column>
</table>
<table name="gamevars">
    <column name="strName">nStartDateHour</column>
    <column name="strType">int</column>
    <column name="strValue">6</column>
</table>
<table name="gamevars">
    <column name="strName">nStartDateMonth</column>
    <column name="strType">int</column>
    <column name="strValue">9</column>
</table>
<table name="gamevars">
    <column name="strName">nStartDateYear</column>
    <column name="strType">int</column>
    <column name="strValue">2064</column>
</table>
<table name="gamevars">
    <column name="strName">nStartHexX</column>
    <column name="strType">int</column>
    <column name="strValue">20</column>
</table>
<table name="gamevars">
    <column name="strName">nStartHexY</column>
    <column name="strType">int</column>
    <column name="strValue">164</column>
</table>
<table name="gamevars">
    <column name="strName">nTempJanHigh</column>
    <column name="strType">int</column>
    <column name="strValue">25</column>
</table>
<table name="gamevars">
    <column name="strName">nTempJanLow</column>
    <column name="strType">int</column>
    <column name="strValue">8</column>
</table>
<table name="gamevars">
    <column name="strName">nTempJanVar</column>
    <column name="strType">int</column>
    <column name="strValue">42</column>
</table>
<table name="gamevars">
    <column name="strName">nTempJulyHigh</column>
    <column name="strType">int</column>
    <column name="strValue">80</column>
</table>
<table name="gamevars">
    <column name="strName">nTempJulyLow</column>
    <column name="strType">int</column>
    <column name="strValue">58</column>
</table>
<table name="gamevars">
    <column name="strName">nTempJulyVar</column>
    <column name="strType">int</column>
    <column name="strValue">25</column>
</table>

columnの解析

strName変数名です。
NEO Scavenger本体で定義されている名前なので、この文字列は変えないでください。

strType変数の型です。
変数名からNumberは浮動小数点数(float)型intは整数型だと思われます。

strValue設定される数値です。各々の数値の意味に関しては後述します。


変数の解析

まず前提条件として、NEO Scavengerでは1年を2つの区切り、
1月~6月7月~12月で分けているようです。
変数名として"Jan"と表記されているものは前者、"July"と表記されているものは後者です。

fCloudChanceJan(Number)は、1月~6月における"曇りになる確率"で、
fCloudChanceJuly(Number)が7月~12月の"曇りになる確率"です。
fCloudChanceVar(Number)は、1年間でのCloudChanceの変動値で、
設定値30では"1季ごとに15%"変動するそうです。

同様に、fPrecipChanceJan(Number)およびfPrecipChanceJuly(Number)は、
それぞれ1月~6月、7月~12月の雨(もしくは雪)が降る確率で、
fPrecipChanceVar(Number)はその年間変動値です。
降るのが雨か雪かは、その時点での気温で判断されるようです。

nSkillPoints(int)は開始時、スキルの取得に使えるポイントです。
プレイヤー的には一番わかりやすい変数かもしれません。

nStartDateMonth(int)、nStartDateDay(int)はプレイ開始時の"月"と"日"で、
nStartDateHour(int)は時間(24時間表記)
nStartDateYear(int)が開始時の年(西暦)になります。

nStartHexX,nStartHexY(int)は開始地点のHex座標です。
設定されているのはCryoのある座標ですが、
変更すればDMC前から始めることも出来そうです。

nTempJanHigh(int)、nTempJanLow(int)は1月~6月の最高/最低気温(華氏表記)で、
nTempJanVar(int)はその年間変動値です。

nTempJulyHigh(int)、nTempJulyLow(int)は7月~12月の最高/最低気温(華氏表記)で、
nTempJulyVar(int)はその年間変動値です。


変数に関しては、こちらでも言及されていますので確認してみてください。
また、気候に関してはこちらでも詳しく説明されています。



0 件のコメント:

コメントを投稿