トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

解説/FEBuilderGBA/増援

Last-modified: 2017-10-01 (日) 13:13:02 (265d)

FE定番の増援イベントの作り方について説明します。
とりあえず序章に毎ターン増援を出したいと思います。
https://i.imgur.com/FvE4iYm.jpg

増援ユニットの設定

まずは、増援するユニットを作ります。

StepA1

「ユニット配置」ボタンをクリックしてください。
https://i.imgur.com/7bnHLBX.jpg

StepA2

新規に増援ユニット群を定義したいので、「新規領域の確保」ボタンをクリックしてください。
https://i.imgur.com/UHKdKEW.jpg

StepA3

確保する人数を設定します。
とりあえず3人ぐらい確保します。
https://i.imgur.com/6W4aI7F.jpg

https://i.imgur.com/SPsLz1y.jpg

StepA4

新規枠が確保されました。
NEWとかかれている部分です。
https://i.imgur.com/LwlOPQU.jpg

新規枠には、とりあえずエイリークが設定されているので、そのキャラをどけて増援で出したいキャラを設定します。

StepA5

まずは、一番上のキャラクターを設定します。
https://i.imgur.com/NfVOXxQ.jpg

StepA6

とりあえず、こんな感じにしてみました。
座標は、左上にしました。
https://i.imgur.com/JI7omjY.jpg

ユニット7Fグラド兵士
クラス3F戦士
アイテム1F鉄の斧
座標X=2,Y=3

StepA7

「書き込む」ボタンで内容を確定します。
https://i.imgur.com/w676R2l.jpg

StepA8

2人目を設定します。
座標は、さっきの奴の隣です。
https://i.imgur.com/MwDnICg.jpg

設定したら、「書き込む」ボタンで結果を確定します。

StepA9

3人目を設定します。
https://i.imgur.com/k79ZWZy.jpg
同様に、「書き込む」ボタンで結果を確定します。

StepA10

設定が終わったら、彼らが配置されている先頭アドレスをメモってください。
https://i.imgur.com/w6HBJkP.jpg


今回は、0x01000000が先頭アドレスです。

なぜ、先頭アドレスをメモする必要があるのか? それは、彼らを表示するイベントはこれから作るため、彼らのデータはどこへも紐付けされていないためです。
そのため、ユニット配置ウィンドウを閉じたり、別の章に切り替えたりすると、データが失われるためです。
データが失われても、領域を占有していることにはかわりなく、無駄な領域が生まれてしまいます。
とはいっても、100バイトにも満たない程度のロスだと思いますが・・・

StepA11

メインの簡易メニューに移動します。
次は、先ほど作成したユニットを出現させるイベントを作ります。

StepA12

イベントを作るには、「イベント」と書かれている部分をクリックします。
https://i.imgur.com/dgw9bDG.jpg

StepA13

イベント設定画面に来ました。
今回は、ターンイベントで彼らを出現させます。
https://i.imgur.com/5P2Em15.jpg

StepA14

イベントの種類が、ターン条件になっているか確認してください。
ディフォルトはターン条件なので、たいていの場合、何もしなくても大丈夫です。
https://i.imgur.com/URNYWBY.jpg

StepA15

次に、ターン条件に新規枠を確保するため、「リストの拡張」ボタンをクリックします。
https://i.imgur.com/URNYWBY.jpg

StepA16

何やら画面が表示されますが、とりあえずそのまま「移動処理を実行する」ボタンをクリックします。
https://i.imgur.com/zOjuWTN.jpg

StepA17

ターン条件イベントが確保されました。
ちょっと多すぎましたね・・・
まあ、1つ12バイトなので、誤差みたいなものです。誤差だよ誤差。
https://i.imgur.com/lmtHCat.jpg


ちゃんと、やる場合は、先ほど領域を確保するときに、確保するサイズをちゃんと指定してください。
ただ、小さすぎると、もっと増やしたくなった時に、再度追加で確保すると、断片化によるロスが発生しますので、どちらがいいかは、難しいところです。

StepA18

領域を確保はできたので、新規に確保したターン条件に増援のイベントを作ります。
新規に増設された5番目のイベントをクリックしてください。
https://i.imgur.com/8Kr0D6o.jpg

StepA19

今回は以下のように設定しました。
https://i.imgur.com/Wctnsbp.jpg
イベントは後で設定するので0のままにします。

発生タイプ22=ターン条件
開始ターン2
終了ターン3
ターン前指定0主人公ターンに実行


つまり、2-3ターン目の主人公ターンに増援を出します。
合計2回の増援が行われます。

主人公ターンとは、プレイヤーが操作できるターンのことです。
主人公ターンに増援するのと、敵ターンに増援するのでは、難易度が大幅に変わります。

主人公ターンに増援されたキャラは、出てきたターンは動きません。
そのため、先制攻撃で倒すことができます。

敵ターンに増援すると、出てきたターンに即行動するので、プレイヤーからすると完全な不意打ちになります。
もし、背後から増援され、敵ターンで先行して動かれたりなんてすると、悪夢ですね。

前半のステージは、プレイヤーターンに増援して、後半は敵ターンにするとかの使い分けを考える必要があります。

StepA20

とりあえず、「書き込み」ボタンを押して結果を確定します。
https://i.imgur.com/kADBQoG.jpg


この後に、イベントの確保をしたときにも書き込みは行われるので、ここで書き込みをするかどうかは、実はどうでもいいです。
ただ、やったところで損は何もありません。

StepA21

次に、イベントの設定をします。
「新規イベント」ボタンをクリックしてください。
https://i.imgur.com/kADBQoG.jpg

StepA22

「新規に領域を割り当てますか?」と聞かれるので、「はい」と答えます。
https://i.imgur.com/GZg658F.jpg

StepA23

領域を確保しました。
https://i.imgur.com/GZg658F.jpg

StepA24

新規にイベント領域が確保されました。
この領域にイベントを作っていきます。
https://i.imgur.com/gYPopgX.jpg

StepA25

イベントとと書かれている部分をクリックすると、イベント命令を設定する画面に行けます。
https://i.imgur.com/9AH5dFG.jpg

StepA26

イベント命令を設定する画面に来ました。
現在は、終端命令のリターンしかない、まったくの白紙の状態です。
ここに増援を実行するイベントを作ります。
https://i.imgur.com/lhlNTjG.jpg

StepA27

画面の余白を、ダブルクリックしてください。
コントロールパネルが出現します。
https://i.imgur.com/IzSOMZ6.jpg

StepA28

「命令変更」ボタンをクリックしてください。
https://i.imgur.com/pGcGrj6.jpg

StepA29

イベントでどんな命令を実行するか選ぶことができます。
ここには、先人たちの解析で現在判明しているすべての命令が登録されています。
https://i.imgur.com/W2YuWC8.jpg
イベント命令は、 config/data/eventcond_*.txt にあります。
命令はFEシリーズごとにことなります。
また、ASMを使えれば新規に命令プログラムすることもできます。

StepA30

今回は、ユニットを出したいので、カテゴリの「ユニット設置」を選択します。
https://i.imgur.com/tYGKtuj.jpg

StepA31

「[XXXXXXXX:POINTER_UNIT:ユニット情報]を読込移動 主に増援 カメラ移動有り」を選択してください。
https://i.imgur.com/SgWOhlK.jpg
選択後に、「命令を選択する」ボタンを押してください。
なお、命令をダブルクリックしても、大丈夫です。

StepA32

先ほど選択した命令が選択されました。
命令の引数を設定します。
https://i.imgur.com/SgWOhlK.jpg

StepA33

最初の方でユニットを増設したアドレスをメモりましたよね。
その内容をここで書きます。

今回は、 0x01000000にユニットを設置しましたので、 01000000となります。
https://i.imgur.com/55q0W3H.jpg



ちなみに、正式には、ポインタですので、GBAのアドレス配置のルールにより +0x08000000しないといけません。
0x01000000 + 0x08000000 = 0x09000000ですので、 0x09000000が正しい値です。
でも、そんな計算をいちいちするのは面倒です。
面倒ということはミスが発生するのでよくないです。
そのため、FEBuilderは自動的に変換してくれます。
ユーザは、何も考えずに、値を書くだけで自動的にすべて解決します。
もちろん、+0x08000000した正しい値を書いていただいてもまったく問題ありません。

StepA34

ユニット情報の値を書いたら、変更か新規挿入ボタンを押します。
現在イベントはないので、どちらでも結果は同じです。
https://i.imgur.com/oOTn6Ce.jpg

StepA35

記載した内容がリストに表示されています。
https://i.imgur.com/dxZrTbP.jpg

StepA36

最後に、「書き込み」ボタンを押して内容を確定してください。
https://i.imgur.com/60Ic5jL.jpg

これで、データの紐付ができました。
先ほどメモした、ユニット配置のアドレスはもう消しても大丈夫です。

StepA37

F5キーを押して、エミュレータを起動して、動作を確認します。
2ターンから3ターン目に増援が現れます。
https://i.imgur.com/FvE4iYm.jpg


増援を確認したら、エミュレータは終了してください。

人数の増減

いきなり3人増援はちょっとやりすぎたかもしれません。
増援を減らすべきなのかも・・・・ということで、ユニット数の増減をやってみます。

StepB1

メイン画面である簡易メニュー画面に戻ってください。
FEBuilderGBAは、PAUSE/BREAKキーを押すと、どの画面からでも、メイン画面に戻れて便利です。
https://i.imgur.com/4fQNrb7.jpg

簡易メニュー画面では、増援で出てくる敵キャラがちゃんとマップに表示されています。
彼らの数を変えたいので、増援ユニットをダブルクリックしてください。

StepB2

増援キャラの設定に飛びます。
作ったときは、NEWでしたが、彼らはターンで増援されるという設定になりましたので、ターン条件で増援されるキャラとして表示されます。
https://i.imgur.com/NqZPJ8U.jpg

StepB3

数を減らしましょう。とりあえず1人だけにしてみます。
真ん中のキャラを選択してください。
https://i.imgur.com/YpCWKlJ.jpg

StepB3

真ん中のキャラのユニット番号を 0 にしてください。
ユニット番号 0 というのは、終端という意味です。
これ以降にはデータはありませんという意味になります。
https://i.imgur.com/aTIqRi5.jpg

StepB4

「書き込み」ボタンで書き込んで結果を確定させます。
https://i.imgur.com/U4Ipuj5.jpg

StepB5

そうすると、真ん中のキャラが -EMPTY- となります。
これは終端マークが入っているキャラという意味です。
一度ユニット設定を移動してしまうと、終端以降のキャラの表示は消えます。
https://i.imgur.com/U4Ipuj5.jpg

StepB6

F5キーでエミュレータを起動して動作を確認します。
終端マークを2人目に入れたため、今回は、1人しか増援されません。
https://i.imgur.com/mNzlkLw.jpg

StepB7

1人だけだと味気ない場合は、元に戻すこともできます。
先ほどのユニット情報を再度見てみると、1人になっています。
これは、ディフォルトは終端まで読み込むからです。
2人目に終端が入っているので、1人だけの読込になっています。
https://i.imgur.com/Nqa03II.jpg

StepB8

元に戻すには、「読込数」で、元の人数である「3」を入力し、「再取得」ボタンを押します。
そうすると、ちゃんと3人表示されます。
https://i.imgur.com/8sQYQ6C.jpg
ここで、2人目の ユニットIDを 0 以外にすれば復元できます。

StepB9

では、増やす場合、読込数をもっと大きい値にすればいいのか?というと、そんなことはダメです。
試しに、読込数を10と、当初の3よりもっと大きい値にすると、このようになりました。
https://i.imgur.com/Audoqsi.jpg
なにやら、めちゃくちゃな情報が表示されました。
これは、終端を突き破って、別の情報を強引にユニット情報として解釈したためです。
これらを書き換えると、他の情報を壊してしまうため、とても危険です。
ゲームのフリーズにつながります。

StepB10

何かまずいことが起きた場合は、もう一度、リストを選択しなおすと、自動的に再取得が行われるため、安全になります。
「書き込む」ボタンを押さない限り、大丈夫です。
https://i.imgur.com/V7SQ7AG.jpg
また、間違って「書き込む」ボタンを押したとしても、Undo機能で元に戻せますし、そもそも、メインメニューでROMに書き込むと、命じない限り、すべての処理はメモリ上で行われるので、ROMファイルを傷つけることはありません。
もし、ROMにも書き込んでしまったという場合でも、FEBuilderはROMに書き込む前にバックアップを取っています。

だからといって、バックアップもすべて消してしまったという場合は、さすがにどうしようもありません。

StepB11

では、もともとの人数を覚えていなかったり、
最初に確保した数よりユニットを増やした場合はどうするか?というと、「リストの拡張」ボタンを利用します。
https://i.imgur.com/hbKOHhg.jpg

StepB12

リストの拡張で、設定したい人数を入れれば、安全にデータを拡張できます。
https://i.imgur.com/LdLvzPr.jpg

StepB13

5人に増やしてみました。
https://i.imgur.com/D2R1aaC.jpg

リストの拡張でいくらでも変えられるといっても、リストの拡張をやりまくると、使えない断片データがたくさん生まれて、残り容量を圧迫します。
ご利用は計画的にどうぞ。

将来的には、断片データを再利用するdeflagする機能を作りたいとは思います。
ただ、なかなか難しい機能なので開発は難航しています。

おしまい

以上で増援の説明は終了です。
ユニット数の調整は、章開始イベントとかでもやりますので、やり方を覚えてしまうと、幅広い応用が可能です。