前回の続きです。~.xmlファイルについてより詳しい説明をしていきます。
その前にまず、どのxmlファイルを編集していく上でも重要なのは、
コピー&ペーストが基本であるということです。
全く新しいユニットを作って追加するにせよ、まずはひな形となるユニットを決定し、それに他のユニットの特性をコピーしていくのがMOD作りの基本スタンスとなります。このような作業を繰り返し、実際の挙動を確認していくうちに、タグの機能などがだんだんと理解できていくのです。
以上を理解していただいたうえで、ユニットのxmlファイル(protox.xmlでいうところの”AnimFile”)の解説をしていきたいと思います。
<definebone>~</definebone>
ここでは3Dモデルに対して使用するボーン(bone)の宣言を行っています。Bip01 Prop1やBip01_AttachRtなどのように、ユニットの動作を指定するのに必要なボーンをコピー&ペーストなどで用意しておく事で、正常にユニットを動作させる事が出来ます。
ただ注意していただきたいのは、ここで行えるのは(恐らく)ボーンの宣言だけであるということです。詳しい事は私もよく分からないのですが、例えばPikemanのgr2ファイル(3Dファイル)を、騎乗ユニットのボーンを貼り付け馬の上に載せてみても、実際に動かしてみると正しい挙動を行ってくれません。つまり歩兵ユニットと騎乗ユニットは元々用意してあるボーンの位置ないし命名規則が違うようなのです。歩兵ユニットを馬の上に乗せる事は本当に出来ないのか、現在私も調査中ですが、現状では不可能と考えていただくしかありません。
それよりもこの<definebone>タグには重要な働きが有ります。それはアタッチメントの接着位置を宣言するボーンです。例えばあるユニットに対して「帽子を被らせたい」と考えたとします。まずやることは<component>タグの中に<attach a="hats"~>で接着するファイルを指定する事ですが、同時にこの<definebone>タグ内でファイルに対応したボーンの指定をしなければなりません。帽子の例をとりますと、書くべきタグは<definebone>bone_hat</definebone>となります。
このように、アタッチメントを正確に接着する為にボーンの宣言を行うことが、このタグの一番重要な役割です。
<attachment>~</attachment>
ここではユニットに接着するアタッチメントの指定を行います。
指定方法は二つあり、外部のxmlファイルを読み込む方法と、直接本xmlファイル内に書き込む方法です。後者の場合は該当するユニットからコピー&ペーストで書き込むのが手っ取り早いかと思います。
指定できるアタッチメントには、使用する武器や帽子、カバンやsige攻撃時の松明などのほか、騎兵の場合は騎乗ユニットの指定もココで行います。
<component>~</component>
このタグ内で具体的にグラフィックファイルの読み込みやテクスチャの指定などを行います。
ModelCompの記述の後にさらにタグが入っていきます。
<logic type="Tech">~</logic>
ここではdataフォルダのtechtreex.xmlと連動し、グレードアップ時におけるユニットグラフィックの変化を指定します。
<none>で書かれているのは、このユニットの基本グラフィックです。つまりアップグレードテクを使わない最初の状態のユニットは、ここで指定されたグラフィックで表示される事になります。それ以降のタグ(<guardreiters>など)は、”techtreex.xmlで作製したテク名(<Tech name ='~' >の部分)と対応しています。(同時に<Effect>タグ内で”subtype ='UpdateVisual' unittype ='~' ”と、テクツリーからもAnimFileに対して指定してある必要があります。)この時大文字や小文字の区別はなされないようです。
つまりここの指定を上手く使えば、オリジナルのAoE3では存在しなかったインペリアルユニットのグラフィックや、ユニークユニットのグラフィックも作成することが可能です。
<logic type="LowPoly">~</logic>
ここではハイポリモデルとローポリモデルの設定が行えます。<normal>でくくられた部分がハイポリモデル、<lowpoly>でくくられた部分がローポリモデルです。
ここで注意していただきたいのは、大抵のユニットに用意されているローポリモデルの殆んどは、”初めからアタッチメントが付加された状態でgr2ファイルが作成されている”ことです。詳しくはGranny Viewerなどのソフトを使ってgr2ファイルを見てみてください。
こうしたローポリモデルに無理矢理アタッチメントを付加させると、例えばランセロの槍を剣と置き換えた時に、ローポリモデルでは剣と槍を同時に右手に持っているような事態が発生します。アタッチメントを使ってユニットのカタチを大きく変更される場合は、ローポリモデルを使用しないことをお勧めします。(ローポリモデルを使用しないためには、<logic type="LowPoly">タグと、<normal>、<lowpoly>タグを消去すればOKです。この場合、オプションでハイポリモデルの項をオフにしても、ハイポリモデルが表示されることになります。)
<assetreference type="GrannyModel">~</assetreference>
ユニットの外観表示を決定する一番重要なタグです。type="GrannyModel"という部分は、おそらく使用するファイルがgr2であることを宣言しているのだと思われます。
<file>タグで読み込むgr2ファイル(3Dファイル)を指定しているのだという事は、見ればすぐに分かるかと思います。重要なのはその後に記載する<replacetexture>~</replacetexture>とうタグです。
<replacetexture>~</replacetexture>
通常このタグはxmlファイルの中には存在しません。私もオリジナルのファイルの中で、どれにこのタグが書かれているのかは知りません。海外MODのNapoleonicEraでこのタグが使われているのを見て、それを真似したのが最初です。
このタグでユニットに貼り付けるテクスチャを指定できます。このタグの構造は以下のようになります。
<assetreference type="GrannyModel">
<file>units\infantry_ranged\grenadier\grenadier_age3</file>
<replacetexture>
<from>units\infantry_ranged\grenadier\grenadier_age3</from>
<to>units\infantry_ranged\fbgrenadier\fbgrenadier_age3</to>
</replacetexture>
<replacetexture>
<from>units\infantry_ranged\grenadier\grenadier_age3_b</from>
<to>units\infantry_ranged\fbgrenadier\fbgrenadier_age3_b</to>
</replacetexture>
</assetreference>
<to>の部分で張り替えるテクスチャを指定するわけですが、その前に<from>で替える元になる方のテクスチャを指定しなければいけません。これはテクスチャを張り替えるユニットモデルに、実際に貼り付けられているddtファイルを探し出す必要があります。
大抵は上の<file>部分の記述と同じなのですが、一部名前が異なるものがあるので注意する必要が有ります。
さらに、下のほうで”_b”と書かれたファイルも交換しています。これはユニットに貼り付けるエンボスファイルを指定している所です。このエンボスファイルは加工が非常に困難なので、指定しないのも一つの手です。(その場合は書き換えるテクスチャのカタチをなるべくオリジナルに似せておく必要があります。そうでないと、変な部分に凹凸が出来てしまいます。)
<attach/>
このタグでアタッチメントの指定を行います。a="~"の部分が指定するアタッチメントの名称(<attachment>に関連付けられる部分)になるのですが、他の属性が何を示すのか、詳しい事は私にも分かりません。しかし名前から見て分かるとおり、<definebone>タグと関連している事は一目瞭然です。
ここはコピー&ペーストを使い、<attach/>タグと関連するタグの両方を他所から移植するのが一番賢いやり方だと思います。(そしてそれで十分です。)
<decal>~</decal>
この部分はまだいじったことがないので、私にもよく分かりません、ただ名前から想像するに、ここではユニットの影と足元のサークルか何かを指定しているのだと思います。
傭兵ユニットや原住民を作るときに留意しておくべきタグかもしれません。
<anim>~</anim>
ここでは攻撃や移動などの、ユニットの動きが指定してあります。正直言ってこの部分を自分で変更することはお勧めしません。
例えば私はドラグーンの銃撃モーションを原住民のライフルライダーなどと同じにしようとこの部分をいじったのですが、銃撃する時にマズルから出る炎のエ フェクトが、どうしても銃口ではなくユニットの足元から出てしまいました。結局このバグは_horse.xmlで使われていた馬のgr2ファイルが、適切 でなかったために起こった現象でした。
このように、ボーンの指定や使用するモデルによる制限が非常に多いため、自分が望む動きをするユニットをひな形として使い、この部分はいじらないのが得策だと思います。
もし変更するにしても、基本はコピー&ペーストで、ボーンなどの指定によく注意しながら、実際にゲームで挙動を何度も確認しながらやるべきでしょう。
to be continued...
PR