特殊能力を持たない単純なユニークユニットの作成例です。
まずは性能等を決めてしまいましょう。
大砲とロケット砲の間ぐらいの性能を持つ攻城兵器「自走榴弾砲」を作ってみます。
(すでに公開済みMODで実装しているものです)
新規にxmlファイルを作成します。で、適当にリネームしましょう。
ここではNewLeader_UU.xmlとします。
Propertyを右クリック⇒Add⇒NewItemと選択
Database(xml)を選択し、右下のAddをクリック
これで新しくxmlファイルが出来上がりますので、適当にリネームしましょう。
ここではNewLeader_UU.xmlとします。
内容は以下のようにします。
<?xml version="1.0" encoding="utf-8"?> <GameData> <Types> <Row Type="UNIT_hogehoge_UU" Kind="KIND_UNIT"/> </Types> <UnitAiInfos> <Row UnitType="UNIT_hogehoge_UU" AiType="UNITAI_COMBAT"/> <Row UnitType="UNIT_hogehoge_UU" AiType="UNITTYPE_RANGED"/> <Row UnitType="UNIT_hogehoge_UU" AiType="UNITTYPE_SIEGE"/> <Row UnitType="UNIT_hogehoge_UU" AiType="UNITTYPE_LAND_COMBAT"/> </UnitAiInfos> <TypeTags> <Row Type="UNIT_hogehoge_UU" Tag="CLASS_SIEGE"/> <Row Type="UNIT_hogehoge_UU" Tag="CLASS_FORWARD_OBSERVER"/> </TypeTags> <Units> <Row UnitType="UNIT_hogehoge_UU" BaseMoves="3" Cost="550" AdvisorType="ADVISOR_CONQUEST" BaseSightRange="2" ZoneOfControl="false" Domain="DOMAIN_LAND" FormationClass="FORMATION_CLASS_LAND_COMBAT" Name="LOC_UNIT_hogehoge_UU_NAME" Description="LOC_UNIT_hogehoge_UU_DESCRIPTION" PurchaseYield="YIELD_GOLD" PromotionClass="PROMOTION_CLASS_SIEGE" Maintenance="7" Combat="65" Range="2" TraitType="TRAIT_LEADER_UNIT_hogehoge_UU" PrereqTech="TECH_ADVANCED_BALLISTICS" Bombard="88"/> </Units> </GameData>
Types:ユニットの親定義
UnitAiInfos:AIがユニットを動かす際の指標
TypeTags:ユニットが持つTagの設定
Units:ユニットのステータス詳細設定
UnitType | Typeで定義したもの |
BaseMoves | 移動力 |
Cost | 生産コスト |
AdvisorType | 助言者の設定? |
BaseSightRange | 視界 |
ZoneOfControl | ZOC:false = なし |
Domain | ユニットが属するドメイン:DOMAIN_LAND = 陸上ユニット |
FormationClass | よくわかりません・・・たぶんユニットの見た目にかかわるものかと思います。 |
PromotionClass | よくわかりません・・・ユニットが何のタイプなのか、かな???(SIEGEだと攻城兵器) |
Maintenance | 維持費 |
Combat | 近接戦闘力 |
Range | 射程 |
TraitType | 何のTraitに紐付くか。ユニークユニットならば必須です。後述します。 |
PrereqTech | ユニット作成に必要な解禁技術:TECH_ADVANCED_BALLISTICS = 高度な弾道学 |
Bombard | 都市砲撃力 |
設定できる値の定義は
Sid Meier's Civilization VI/Base/Assets/Gameplay/Data/Schema/01_GameplaySchema.sql
に書かれています。
CREATE TABLE "Units" ( ・ ・ ・ FOREIGN KEY (ObsoleteTech) REFERENCES Technologies(TechnologyType) ON DELETE SET DEFAULT ON UPDATE SET DEFAULT);
の部分がユニットのデータ定義です。
データベースを知っている方ならわかると思いますが、SQLのCreate文そのものです。
どの要素を変えるとどうなるのかは全部理解できていません・・・。
ユニットは独自の2つのアイコンを持っています。
ここまでの作業を行えば、実際にゲーム内でユニークユニットを作成することはできます。
が、このままだと見た目が労働者になってしまいます。それはユニットの見た目の設定を何もしていないからです。
本来ならば3Dデータを作ってゲームで使えるように変換して・・・というのを書くのが筋なのですが・・・
あいにくのところ筆者は3Dデータを作る技術を持ち合わせておりません。よって既存の使いまわし方を記載します。
既存のデータを使いまわすにはArtdefファイルを書けばよいです。
書くといっても、使いまわしですのでバニラからもってきて定義を変えるだけ、です。