◆遊んでみよう!
 
 ・1 ダウンロードしよう
 ・2 動かしてみよう
 ・3 キャラクターを追加してみよう
 ・4 拡張エンジンも使ってみよう
 
 
 
◆作ってみよう!
 
 ・1 画像をそろえよう
 ・2 簡単に動かしてみよう
 ・3 motion.lstを作ろう
 ・4 判定を設定しよう
 ・5 command.lstを作ろう
 ・6 voice.lstを作ろう
 ・7 < enemy.lstを作ろう >

Step7 enemy.lstを作ろう

さてstep6まで無事、全てこなせたでしょうか?
もしそうならば、既に思い描いたキャラクターが画面上に立ち、
思いのままに操作でき、繰り出す技に従い声や音のでる、夢の状況が出来上がっているはずです。

…でもちょっと待ってください。それで満足しては困ります。何か忘れてません…?
…そう。敵として出てきた時です。
step2で「てきとーえねみー」にて、
まさにてきとーなenemy.lstを作ってる場合はひとまず動いているとは思います。
でも、それがちゃんと戦ってくれてるか?となると別の話、ですよね?

というわけで、「動かすは易し、戦わせるは難し」な性質を持つ、
com制御ファイル、「enemy.lst」について解説していきます。

参考に、KFX付属のキャラクターであるRYOUの
enemy.lstを適当なテキストエディタで開いてみましょう。
以下のような内容が表示されるはずです。
Distance--100--Command--COMMENT
    160    30  42K236pN           ;アッパー
    160    50  623pN              ;アッパー
    160    60  623PN              ;アッパー
    160    70  214kN              ;アッパー
    160    80  214214PN           ;アッパー
    160    90  236PN              ;アッパー
    160   100  236236PN           ;アッパー
    320    50  236pNNN            ;アッパー
    320    60  236PNNN            ;アッパー
    320    90  236pNNN            ;アッパー
    320   100  9k                 ;アッパー

2行目からが編集可能な部分です。
最初の「Distance」に当たる個所はキャラクター間の距離を表します。
このエネミーでは距離0〜160、161〜320までの距離判断が用意されている、ということになりますね。
相手との距離が短い部分ほど初めの行に、離れた距離になるほど後の行に記述します。
距離の判断はお互いの中心軸基準になっており、単純に考えて衝突判定横幅の18がぶつかる36で密着。
それを少しアバウトにして40ぐらいが最短距離で問題ないと思います。
それより短い距離は…対空反応専用とか?
最長距離は例のように画面幅の320でも大抵は問題ないですが、
拡張エンジンなどでそれ以上の距離に離れた場合も想定し、
1000以上の値を入れておいてもいいかもしれません。

「100」に当たる個所は実行確率を表します。
……何気にここの確率値の書き方は間違って書く人が多いんですよね。
ま、ここの書き方はまた後で。

「Command」に当たる個所は…はい、実行するコマンドですね。
ここに書き込まれたコマンドがそのまま1フレームずつ、バッファに送り込まれて実行される仕組みみたいです。
書き方の基本はほぼcommand.lstのcommandと同じで、
ボタン入力には p k P K
方向入力に 1 2 3 4 6 7 8 9 がそれぞれ使えます。
また、n で5フレームキーニュートラル、
N で10フレームキーニュートラルとなりますが、
このコマンドが実行されている際は相手の攻撃に対し中段、下段を自動判断しガードしてくれます。
…また、推奨値ではないですが、1フレームニュートラルとして 5 も使えます。
n6n6kなどのコマンドを直接入力すると、その都度5フレームの待機が混ざってしまうので、
エネミーリストでは5656kといったように記述したほうが良いでしょう。

最後に";"を挟んでCOMMENT。
ここはコメント部分ですので、";"の入力さえ忘れなければ何を書いても問題ありません。
(;を忘れると正常動作しなくなります)
余談になりますが、見てのとおりデフォルトキャラのenemy.lstのコメントは何故か全て「アッパー」。
よくネタにされるので、覚えておいてソンはない…かも。



設定個所は以上ですが、これだけでは色々と説明不足ですね。
まずは、確率値に関して書き方を確認していきます。
下の例を見てください。
Distance--100--Command--COMMENT
     40    25  623pNNN ;@
     40    25  623PNNN ;A
     40    50  6P      ;B
よく見る「間違った」確率の書き方です。
書いた本人はおそらく、
@=25% A=25% B=50%

のような確率で実行されるように書いたつもりなんでしょうけど、
これだと実際は
@=25% B=25% かもしれないし A=25% B=25%?

まぁ不正な書き方なんでよく分かりませんが、ちゃんと実行されないのは確かです。
残り50%は前にロードされてたキャラのエネミーが使いまわされたり…といったところでしょうか。
(KFXは前にロードされたキャラが色々メモリに残るおかしな仕様になってます)

で、どうすればよいのかというと、こう書きます。
Distance--100--Command--COMMENT
     40    25  623pNNN ;@
     40    50  623PNNN ;A
     40   100  6P      ;B
つまり、
0〜25までの確立で@が、
25〜50までの確率でAが、
そして51〜100までの確率でBが実行される…
といった感じです。変な書き方ですが、
こういうモノと割り切って、諦めてくださいな。



次にコマンド。
「え、さっきいってたじゃん、コマンドリストと同じって」?
「それぞれ距離に合わせて、技のコマンドコピペするだけじゃん」?

…いやいやいや。よーく考えてみてくださいな。
それではコマンド技ぶっ放すだけでしょう?
戦うんだったら、距離に合わせて間合いは調節しますし、ジャンプもします。
通常攻撃が入ったらキャンセルかけて連続技もいれにゃ…!

…そう、こういうことをちゃんと考えていくと、
enemy.lstというのは決まった型、というものがないんですね。王道無し。

…まぁ、決まった型は無い、とはいえ、基本的な連続技の入力方法はお伝えしておきましょう。

またRYOUを例に進めます。
強キック→キャンセル白虎掌でも出してみましょうか。
RYOUの強キックは6フレーム目に攻撃判定が発生します。

ではそのフレームにあわせてコマンドを入力するように記述…しません。
それよりもヒットするタイミング+2フレームがベストでしょう。

何故なら、ヒットストップ中も実はエネミーの処理が進むためです。
つまり今回は6フレーム+ヒットストップで8フレーム。

コマンド入力の236が3フレームなので、間に5フレーム=nを挟めば8フレームになりますね。
Distance--100--Command--COMMENT
     50   100  nKn236PNNn ;強キックキャンセル白虎掌
連続技構築はこれが基本です。
長い連続技なども結局は、これが多く繋がっただけに過ぎないので、
それほど難しいことは考えなくとも良いと思います。


問題となってくるのは、その距離にあった最適な技、間合いの取り方、
どこで飛び込ませるか、どこでガードさせておくか…
キャラクターの性質をつかんだ上で、一行一行トライアンドエラーの繰り返しになります。

まさに最初に言った通り「動かすは易し、戦わせるは難し」。それがenemy.lstです。
ただのCOM制御ファイルと思っちゃいけませんよ?
自分の作ったキャラを、マニュアル等よりもっと分かりやすく、効果的に紹介できる部分でもあります。
落としたキャラクターを最初にCom VS Comで鑑賞してみる人は結構多いと思いますし…
高度すぎるものじゃなくてもいいけど、基本的な戦い方ぐらいは、見せつけちゃってくださいな。

もっと高度なものを求める方は
Tamaraさんによるenemy講座
を参考に頑張ってみて下さい。


・・・お疲れ様でした。ここまでの工程を全てこなしたのならば、
あなたはもう立派なキャラメイカーです!今後の活躍にご期待しております。
まだキャラを作ろうか考えている方も、ここのドキュメントが少しでも助けになれば幸いでございます…。
ここまでご覧いただきありがとうございました。
◆遊んでみよう!
 
 ・1 ダウンロードしよう
 ・2 動かしてみよう
 ・3 キャラクターを追加してみよう
 ・4 拡張エンジンも使ってみよう
 
 
 
◆作ってみよう!
 
 ・1 画像をそろえよう
 ・2 簡単に動かしてみよう
 ・3 motion.lstを作ろう
 ・4 判定を設定しよう
 ・5 command.lstを作ろう
 ・6 voice.lstを作ろう
 ・7 < enemy.lstを作ろう >

メニューへ戻る