プロット自作の基礎知識
はじめに
ファイルを記述する際の注意点
- 文字コードはEUC-JP
- ファイル名には日本語は使えない
- 1行は255バイトまで
- "%"で始まる行はコメント
- 大文字と小文字の区別はない
公式のリファレンス・ドキュメント
doc.makingフォルダに各種リファレンスがある。
ファイル |
説明 |
ASL_Refernce.txt |
一般的な解説。GearHead拡張データ詰め合わせに和訳あり。 |
ASLref.txt |
簡単な解説が付いたコマンドのリスト。 |
MDLref.txt |
メックやプロットで用いる基本的なコマンドの解説。 |
GameDataフォルダにマクロ(コマンドの文字列置換)の一覧がある。
ファイル |
説明 |
aslmacro.txt |
コマンドを実行するマクロの一覧。 |
asvmacro.txt |
値を返すマクロの一覧。 |
ghpmacro.txt |
Gearなどのマクロの一覧。 |
Gear
プロットやメック、NPCなどいろんなものを総称してGearと呼ぶ。Gearはパラメータを用いて以下のように表される。
Gear G S V
パラメータ |
説明 |
G (General) |
Gearの大分類。店の販売品を指定するときに使う数字でもある。 |
S (Specific) |
Gearの小分類。 |
V (Value) |
対象のGearがとる値(武器や防具のクラスなど)。 |
この表記はわかりやすい文字列に置換されている(マクロ)。
しかしモンスターやメックのファイルではマクロではなく置換前の記述がそのまま用いられている箇所がある。
"gear 4 2 6"とか書かれても分からない、という人もいるだろう。
例としてクラス 5 の胴部防具の場合、以下のように表される。
Gear 11 1 5
ここで
G = ExArmor(= 11)
S = BodyArmor(= 1)
V = Class
以下の 2 つのどちらを書いてもクラス 5 の胴部防具として認識される。
Gear 11 1 5
BodyArmor 5
サブコンポーネントとインベントリ
Gearはさらに子のGearを持つことができる。
親のGearによってどのようなGearを子として持てるか決まっている。
サブコンポーネント(sub)は主にそのGearの骨格を成すGearである。
メックやキャラクターならばモジュール、実弾武器なら弾薬、マップであれば建物などになる。
インベントリ(inv)は主にそのGearが持つ所持品となるGearである。
メックやキャラクターならば所持品、武器ならばアドオン、マップであればNPCなどになる。
種類 |
説明 |
サブコンポーネント |
sub-endの間に記述される内部Gear |
インベントリ |
inv-endの間に記述される外部Gear |
Gearの種類
以下に主なGearの一覧を示す。
マクロの定義で"?5"となっている場合、数値の代入が可能で初期値が 5 であることを示す。
メックであればクラス(= Size)を記述しない場合、デフォルトでSize 5 になる。
G |
分類 |
S |
マクロ |
ghpmacro.txtの定義 |
説明 |
-- |
Gear |
|
|
<G ? ? ?> |
Gear。G, S, Vの各数値を代入することで以下のいずれかを生成する。 |
-10 |
Story |
|
|
<G -10 0 0> |
複数のプロットを管理する大きなプロット。構成はプロットとほぼ同じ。 |
-9 |
Plot |
|
|
<G -9 ? 0> |
プロット。 |
-8 |
MapFeature |
|
|
<G -8 ? 0> |
建物や矩形範囲などの地形。 |
-7 |
Adventure |
|
|
<G -7 0 0> |
ゲーム全体を管理するメインプロット。ADV_FederatedTerritories.txtのこと。 |
-6 |
Faction |
|
|
<G -6 ? 0> |
連邦防衛軍やGuardiansなどの派閥。 |
-5 |
Persona |
|
|
<G -5 ? 0> |
NPCの会話スクリプトを記述する。 |
-4 |
Team |
|
|
<G -4 ? 0> |
友好・敵対関係を記述する。 |
-3 |
Scene |
|
|
<G -3 ? ?> |
マップ。Adventureに記述する固有のSceneと、戦闘などで一時的に生成されるDynamic Sceneがある。 |
0 |
Mecha |
|
|
<G 0 ?0 ?5> |
メック。Designフォルダ内のテキストファイルでおなじみ。 |
1 |
Module |
|
|
|
モジュール。メックやキャラクターの身体部位。 |
2 |
Character |
|
Chara |
<G 2 0 0> |
NPCやモンスターなどのキャラクター。メックと似た構成だが、ステータスやHPなどを持つ。 |
3 |
Cockpit |
|
CPit |
<Gear 3 0 0> |
コクピット。 |
4 |
Weapon |
0 |
Melee |
<Gear 4 0 ?3> |
武器。 |
1 |
EMelee |
<Gear 4 1 ?3> |
2 |
Gun |
<Gear 4 2 ?3> |
3 |
BeamGun |
<Gear 4 3 ?3> |
4 |
MLauncher |
<Gear 4 4 ?3> |
5 |
Ammo |
2 |
Ammo |
<Gear 5 2 ?3> |
手榴弾や弾薬。 |
4 |
Rockets |
<Gear 5 4 ?3> |
5 |
Grenade |
<Gear 5 5 ?10> |
6 |
MoveSys |
1 |
Wheels |
<Gear 6 1 ?3> |
移動システム。 |
2 |
Tracks |
<Gear 6 2 ?3> |
3 |
HoverJet |
<Gear 6 3 ?3 |
4 |
Flight |
<Gear 6 4 ?3> |
5 |
ArcJet |
<Gear 6 5 ?3> |
6 |
Overcharger |
<Gear 6 6 ?3> |
7 |
Holder |
0 |
Hand |
<Gear 7 0 0> |
ホルダー。手と砲架。 |
1 |
Mount |
<Gear 7 1 0> |
8 |
Sensor |
1 |
Sensor |
<G 8 1 ?5> |
メインセンサーや照準コンピュータなどのメック用電子機器。 |
2 |
TarComp |
<G 8 2 ?1> |
3 |
ECM |
<G 8 3 ?1> |
9 |
Support |
1 |
Gyro |
<Gear 9 1 ?1> |
ジャイロスコープやエンジンなどの重要パーツ。 |
2 |
Engine |
<Gear 9 2 ?-1> |
10 |
Shield |
0 |
Shield |
<Gear 10 0 ?2> |
盾。 |
1 |
EShield |
<Gear 10 1 ?2> |
11 |
ExArmor |
1 |
BodyArmor |
<Gear 11 1 ?1> |
人間の防具やメックの追加装甲。 |
2 |
HeadArmor |
<Gear 11 2 ?1> |
3 |
ArmArmor |
<Gear 11 3 ?1> |
4 |
LegArmor |
<Gear 11 4 ?1> |
5 |
WingArmor |
<Gear 11 5 ?1> |
6 |
TailArmor |
<Gear 11 6 ?1> |
7 |
TurretArmor |
<Gear 11 7 ?1> |
8 |
StorageArmor |
<Gear 11 8 ?1> |
12 |
Swag |
0 |
PuzzleItem |
<Gear 12 0 ?25> |
ダンジョンなどに落ちている宝物アイテムなど。 |
2 |
Treasure |
<Gear 12 2 ?25> |
5 |
BigTreasure |
<Gear 12 5 ?25> |
13 |
Prop |
|
|
<G 13 0 ?> |
プロップ。自販機やテレビなどの小道具のこと。 |
14 |
Electronics |
1 |
PCS |
<G 14 1 ?3> |
PCS(携帯電話などの通信機)。 |
15 |
MetaTerrain |
|
|
<G 15 ?0 ?5> |
階段や標識など、使用できるが地形と同様に破壊されないもの。 |
16 |
Usable |
1 |
Instrument |
<G 16 1 ?5> |
連続して使用できるGear。ゲーム中では楽器がこれに相当する。 |
17 |
RepairFuel |
15 |
MechaRepairFuel |
<Gear 17 15 ?1000> |
修理用品。 |
16 |
MediceneFuel |
<Gear 17 16 ?100> |
20 |
FirstAidFuel |
<Gear 17 20 ?100> |
22 |
BiotechFuel |
<Gear 17 22 ?1000> |
23 |
GenRepairFuel |
<Gear 17 23 ?100> |
18 |
Consumable |
0 |
Food |
<G 18 0 ?50> |
食料などの消費アイテム。 |
19 |
Modifier |
1 |
StatModifier |
<Gear 19 1 ?40> |
サイバーウェア。 |
2 |
SkillModifier |
<Gear 19 2 ?40> |
20 |
WeaponAddOn |
0 |
GAddOn |
<Gear 20 0 ?0> |
武器のアドオン。 |
1 |
GunAddOn |
<Gear 20 1 ?0> |
2 |
HeavyAddOn |
<Gear 20 2 ?0> |
3 |
MeleeAddOn |
<Gear 20 3 ?0> |
Story / Plot
エレメント
StoryやPlotの本文に記述し、プロットのロード条件となる対象を検索して指定する。
1つのStoryまたはPlotファイルに8つまで設定できる。
エレメントの検索に失敗した場合、そのプロットはロードされない。
Element[n] <条件> ([n]はエレメントのインデックス番号)
検索コマンドは以下のとおり。
検索コマンド |
説明 |
Character |
プロットを実行するNPC |
Faction |
プロットを実行する派閥 |
Scene |
プロットを実行するマップ |
Item |
使用不可? |
Grab [n] |
親StoryのElement[n]を参照する |
Prefab |
プロットのインベントリに記述したGearを検索する |
検索条件は性格や職業などのタイプを直接記述するほか、"!"で始まる条件指定コマンドを用いることができる。
条件指定コマンド |
説明 |
!C [n] (!Comrade) |
Element[n]と同じ派閥に属する |
!E [n] (!Enemy) |
Element[n]と敵対する派閥に属する |
!F [n] (!Far) |
Element[n]とは別のマップにいる |
!G (!Global?) |
NPCにグローバルNPCを含める |
!Lancemate |
NPCにLancemateを含める |
!M [Faction ID] (!Member) |
派閥[Faction ID]と同じ派閥に属する |
!N [n] (!Near) |
Element[n]と同じマップにいる |
!X [n] |
Element[n]と友好的でない |
例) 連邦評議会所属(Faction 11)の町にいる、連邦防衛隊所属(Faction 2)の英雄的なNPCにプロットをロードする場合
Element1 <Faction 2>
Element2 <Scene Town !Member 11>
Element3 <Character Heroic !Comrade 1>
!Comradeはエレメントのインデックス番号、!Memberは派閥のID番号を指定する点に注意。
変数
各Gearは数値を格納するための固有の変数(V1~)を持つ。
特に宣言する必要は無いが、プロットなどの変数はコメントで説明を付けている場合が多い。
Adventure, Story, Plot, Sceneの場合、変数名を変更することできる。これによって、
- サブコンポーネント内にある子のGearで親のGearの変数を使う
- Sceneの変数をStoryやPlot側から参照する
といったことが可能となる。
変数 |
説明 |
V[n] |
ソース変数。そのGearが持つ変数。 |
G[n] |
グローバル変数。Adventureが持つ変数。 |
S[n] |
ストーリー変数。Storyが持つ変数。 |
P[n] |
プロット変数。Plotが持つ変数。 |
L[n] |
ローカル変数。現在いるScene(マップ)が持つ変数。 |
概念的には以下のようになる。
Adventure
変数V1
sub
Story
変数G1 = Adventureの変数V1
変数V1
sub
Plot
変数G1 = Adventureの変数V1
変数S1 = Storyの変数V1
変数V1
sub
Persona
変数G1 = Adventureの変数V1
変数S1 = Storyの変数V1
変数P1 = Plotの変数V1
変数V1
end
end
end
inv
(Dynamic)Scene
変数V1 = 変数L1としてAdventure, Story, Plot側から参照できる
end
エレメントについては特別な変数が設定されている。
変数 |
説明 |
E[n] |
Element[n]で指定されたGearのIDを格納する変数 |
N[n] |
Story gearはE[n]の代わりにN[n]を使う |
E[Variable] |
エレメントのインデックス番号[n]の代わりに変数を用いる場合に使う |
E[Variable]について補足。
通常ではエレメントの変数はE1からE8になる。
ここでEV1とすれば、変数V1に値を代入することでランダムなエレメントを指定できたりする。
スクリプト
スクリプト実行の起点となる「トリガー」をはじめとして、処理を行うためのいろいろなコマンドがある。
詳細は
コマンドの解説を参照。
ランダムマップ
ランダムマップとは一定のパターンに基づいて自動生成される地形のこと。
一部のランダムマップはマクロに置換されている("Wildmap"など)。
各ランダムマップおよびマップタイルについては以下のファイルを参照。
ファイル |
内容 |
GameData\ randmaps.txt |
ランダムマップのリスト |
doc.making\terrain list.txt |
マップタイルのリスト |
ランダムマップの構成は以下のようになる。
コマンド |
説明 |
Name[RandomMap ID] <名前> |
ランダムマップのIDおよび名前の記述。 IDの番号が負のものはGapFillコマンドで使われる。 |
Param[RandomMap ID] <...> |
ランダムマップ[RandomMap ID]の基本パラメータ。 |
GapFill[RandomMap ID] <RandomMap ID1, RandomMap ID2...> |
他のランダムマップを個々の地形として挿入する。 |
例) 森林マップ(マクロの"ForestMap"と同じ)
Name2 <Forest>
Param2 <Fill 1 2>
GapFill2 <-4 -4 -5 -9 -4 -4 -5 -13>
Name2はランダムマップのID = 2と名前を示す。
Param2はName2の基本となる地形を指定する。マップを<地面>タイルと<森>タイルで塗りつぶす。
GapFill2はName2に挿入するほかのランダムマップのIDと頻度(複数記入すると多くなる?)。
挿入するランダムマップはForest(-4)/Hills(-5)/Lake(-9)/Grass(-13)。
以下はParamで用いるコマンド。l/m/nはマップタイルの番号。
コマンド |
説明 |
Wall [n] |
タイル[n]で外周を囲む。 |
Dwall [n] |
ドア付きのWall。 |
Owall [n] |
ドアの替わりに隙間があるWall。 |
Fill [m] [n] |
タイル[m]と[n]でマップを塗りつぶす。 |
Lattice [m] [n] |
タイル[m]の上にタイル[n]の格子を生成する。町の道路の地形で使われる。 |
Monkeyhouse [m] [n] |
床タイル[m]、壁タイル[n]の通路のある建物を生成する。 |
Monkeymaze [m] [n] |
? |
Carve [l] [m] [n] |
タイル[n]をタイル[l](+ [m])で削る? |
Ellipse [l] [m] [n] |
楕円形の地形を生成する。外縁の方から[l] → [m] → [n]の順。丘や池などの地形で使われる。 |
Scatter [l] [m] [n] |
タイルを放射状に散らす。外縁の方から[l] → [m] → [n]の順。 |
既存のSceneやMapFeatureをID無しのParamやGapFillで上書きすることもできる。
Dynamic Sceneの場合、Scene用のテキストファイルを使わないものはSetMapTypeコマンドでランダムマップを指定できる。