KF-KBI作成 開発工程 頁9![]() 拡張パターン作成に向けた下準備関連いろいろ。拡張パターン実装は次ページかも。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<3-08.開発工程08 アクション拡張前準備> このコンテンツは、拡張パターンを組み込む前の情報整理を行います。 ざっくり言うと、今のキャラを本格的に格闘ゲームキャラにするために何が必要かを整理します。 <3-08-01.アクション拡張前準備@ 開発工程再整理> 基本的アクションを組み込んだことで、見た目上バトルをするキャラはできたわけですが、 それだけでは、まだまだ格闘ゲームとして成立しておりません。 何故そうなるかというと、今回のキャラの作り方が ●デフォルトキャラARAKIのフォルダをコピーし作成した というところから始まっているからです。 まず、ここまでやったことを整理すると、
というところ。 この作業フローにより、COMバトルテストを行うと以下の不具合が生じています。
まあ、正確には「不具合」じゃ無くて、予想されていた「未着手部分」というだけなのですが。 これ以外にも、
というのはあるのですが…この部分は「格闘ゲームとして成立するか」には関わりません。 「クオリティを上げる」の部類なので、クリンナップ期にやればいいこと。 つまり、今後格ゲーとして成立させるために、 未着手となっている部分の埋め合わせをしていく 必要があるわけです。 1.のサイズ相違については、元々よっとまんさんVer飛鳥先生をベースに身長設定確定済みで、 今後もこのサイズを変更することはありません。 ただし、パターンサイズを変えたことによる 「キャラのゲーム上での大きさ設定」 をする必要があります。 さらに、2.の別場所攻撃については、 「攻撃部位の再設定」 を行わなくてはなりません。 この1・2の補間作業が、 「当たり判定の設定」 になります。 なお、3.と4.の解消に関しては当たり判定設定のあとに行う、という予定です。 <3-08-02.アクション拡張前準備A 当たり判定とは> さて、いよいよ当たり判定の設定です。 少し前の時点では、この当たり判定も拡張パターンを組んでからの方がいいかと考えたのですが、 最低限ゲームが出来るくらいのパターンを入れてしまったことで、テスト上どうも気になるのです。 また、以後の拡張パターン組み込み時に、基本パターンの流用も出てくると思うので、 仕上がった分の当たり判定は最低限決めた方が、以後もやりやすいと考えました。 ところで、そもそも「当たり判定」とはなんでしょうか。 まあ、格闘ゲームに慣れてる人には常識のような単語なのですが、 管理人のように、格ゲー素人だけどキャラを作りたいという人向けに、 さらっと(?)説明を入れておきます。 「当たり判定」(接触判定・衝突判定ともいう)とは、アクションゲームでは必須の設定情報で、 キャラクターや飛び道具などが他の物体に当たったかどうかを 判定する為の領域情報および処理 のことです。 ちょっと言葉にすると分かりにくいので、某有名シューティングゲームの画面で例を。
以上、ものすごく有名な「ゼビ●ス無敵モード」をご紹介。 これは要するに、 「当たり判定がない状態でゲームをした場合」 の例です。 自分の操作する戦闘機と敵キャラが触れたとき、本来は爆発し1機ロスとなりますが、 そこに当たり判定設定がないと、延々にゲームは続く。これでは商売上がったり… じゃなくて、もうシューティングゲームとして成立しませんね。 では「触れる」とは、ゲーム内部処理上ではどういうことを指すのでしょう?
2Dゲーム上で「触れる」とは、簡単に言えば 一方のキャラのドットともう一方のドットが重なる ことです。 つまり、アクションゲームでは常にキャラクターとキャラクター・飛び道具・壁などとの 重なり合いが無いかどうかを判定し続けているわけです。 ところが、この重なり合いを1ドット1ドットごとに判定していたら、ものすごい判定回数になります。 しかもゲーム上にはキャラが2つしか存在しないわけじゃなく、パターンも固定ではありません。 要するに1ドット1ドットづつの重なり判定などしていたら、とてもじゃないがゲームにならないのです。 そこで、2Dアクションゲームでは簡易的な当たり領域を設定をします。 ソルバ●ウと●ーロイドで言うならこんな感じ。
このように四角い領域を設定すると、 赤領域(の左上の座標から右下の座標までの範囲)と 青領域(の左上の座標から右下の座標までの範囲) で重なる位置が存在するか という単純な処理のみですばやく当たり判定を処理することが出来ます。 そのため、昔から2Dゲームではこういう四角い領域で当たり判定を処理しています。 このように四角い形で設定する範囲部分を「矩形領域」などといいます。 そこで本題に入ります… KF-Xのキャラクターも、当たり判定を設定するに当たり、矩形領域を利用して作ります。 ![]() まず、これがARAKIの立ちキャラ。また、小パンチの1パターン目としても使われています。 ソルバル●のように、ほぼ正方形なキャラではありません。また、大きさも全く違います。 これに対し、当たり判定を矩形領域で付けるにはどうすればいいのか? 実はこのように設定されています。 ![]() このように、二種類の矩形領域を使うのです。 ざっくりすぎだろう! と思う方もいるかもしれませんが…これがせいぜい。 格闘ゲームの場合基本的に対面でゲームすることになるので、 前方から接触があったときにどう判定されるかの区別がつく程度でいいのです。 また、●ルバルウでも説明していますが、あまり判定部分の数が多いと、 処理部分に負荷がかかりとてもアクションゲームとして成立しなくなる。 そのため、あまり多くは領域を増やさないようです。 ところで、実はKF-Xではこれに加えてもう一つ当たり判定領域が存在します。 ![]() これは、小パンチのモーション内の一つの画像への当たり判定ですが、 左腕のところに赤い枠があります。もうお分かりだと思いますが、 パンチしたときに攻撃部位として判定される領域を、赤枠で示しているのです。 つまり、
の3つの当たり判定を、それぞれのアクションに組むことで 本当の格ゲーになる、というわけです。 有明のMOTIONはARAKIのMOTIONをコピーしているので、 すでに判定自体は登録されていますが、
上記のように差替画像の大きさ・攻撃部位(このアクションではパンチ)の位置が違うので、 プレイした際の見た目と結果に差が出ます。 有明本番素材にきちんと合う範囲設定をすることで、ようやくまともな格ゲーキャラになる というわけです。 実際に組み込む場所は ![]() MOTION.LSTのこの場所になります。 <3-08-03.アクション拡張前準備B 当たり判定設定方法> さて、ではどのようにしてこの矩形情報をMOTION.LSTに設定するのでしょうか。 パターン画像の左右中央でかつ最下の点を原点(0,0)とし、そこからの相対的座標系で 矩形の左上座標と右下の座標を設定することにより矩形領域を定めます。 ![]() 矩形領域がこの状況の場合、前述のMOTION.LSTの250行のDef1にはどのように記述されるか。 12桁の数字とアルファベットで、以下のように構成されます。
符号を一桁、座標を16進数で表現することで、2つのXY座標を12桁の文字数で収めるわけです。 なるほどなるほど… ということは、 1.まず範囲設定したい画像素材の原点となる位置をチェックし 2.そこからどのくらいの高さの範囲になるかを計算して 3.そこから左に何ドット幅とるか決めて 4.左上座標を確定させ、その座標を数値化。 5.さらにその数値を16進数に変換して 6.X座標3桁+Y座標3桁の6桁の文字を確定。 7.右下の座標についても同じように2.〜6.で考えて 8.これで一つの範囲の12桁化で出来上がる。 9.これで一つの領域設定が書き込める。 10.続いて2つ目の領域について… 11.さらに3つ目の… 12.これを、それぞれのMOTION行ごとに繰り返し… ふむふむ… …… … って、何日かかるんじゃゴルァ!!! 当然、こんなことちまちまやる人はいませんよね。 いや、一部パーツ調整の際にダイレクトにいじる人はいるみたいだけど… 普通は、ツールを使ってMOTIONを書き換えしてもらいます。 標準ツールは、kfxcmパッケージに同梱されてる「HITCHECK.EXE」になるわけですが、 これが1999年制のもので、優れもの! …なわけないw これが、まさに数世代前の開発ツールといったところで、 ・フルスクリーンで利用 ・ファンクションキーとキー操作必須 など、ガリガリ大量生産するのに不向き、というか、1キャラ作るのにも使いづらい仕様。 そこで、その後開発された便利ツールを利用します。 管理人は、「HitEdit」というKF-X判定専用ツールを使います。 ![]() 何度か開発素材の紹介に使ってるこれです。 旧開発期のバックアップファイル内に残っていたのですが、使い慣れてて愛着があります。 まずとにかく操作がシンプル、また見た目もシンプル、なのに項目は全て右側に和訳済み、 何よりKF-X用設定縛りが入っています(実は意外と重要!)。 今回開発初期からフル回転で利用してます。 しかしこのツール、もう出回ってないようなんですよね…より幅広く使える良ツールがあるから。 よっとまんさんのお勧めは、「Plus List Editor」となってます。 これは、総合リストエディタで、MOTION.LST以外のリストも編集でき、 さらにKFシリーズ上位機種にも使える本当の優れもの。 新規で入手したい人はこちらから入手してください。 どっちも今はなき飛龍++さん開発なんですよねー…画面も操作も共通性がある。 ただ、あまりにもいろんなものに使えすぎて、KF-Xでは使えない設定も作れちゃうという… この点がちょっと不安なので、管理人は現時点で触らずにおきます。 後々HitEditの範疇を超える作業が必要なときに利用するかもです。 汎用性や自由度の高さというのは、時にして危険性や自己責任の範囲を広げてしまうので、 マニュアル男の自分にとっては、怖いんですよねえ… とか言いつつ、テストプレイはほとんどKF-Aでやってるわけですがw <3-08-04.当たり判定の適用> では、実際に当たり判定をMOTION.LSTに組み込んでいきましょう。 ![]() 基本的に、CHAR.BMPの中身を参照しながら操作することになるため、 MOTION.LSTは実際に使うキャラフォルダから読み込みます。 キャラフォルダ内MOTION.LSTをダイレクトに修正していくこととなるので、 バックアップをうまく行える環境を構築しましょう。 管理人的には…
こういう段階でバックアップ・バージョン管理していこうと思います。
●当たり判定領域名称の呼び方について 当たり判定についてはいろいろな呼び方があるので、KF-X内の名称としては HitEditでの名称を以後このサイトでの共通名称とします。
「当たり判定」は、これらの総称とさせていただきます。 ●やられ判定1の設定縛りについて KF-Xでは、投げ・敵との距離判断・衝突判定などのシステム的な都合により、 やられ判定1の領域は幅設定が決まっています。 ![]() 素材の中心から左右に18ドットづつ。ここが固定です。 要するに、やられ判定は高さのみを設定することになります。 HitEditで作る際は設定があらかじめ固定され、幅は変えられないようになっています。 なお、やられ判定2はフリー領域で作れます。 ただし、MOTION.LSTの直接入力や「Plus List Editor」を使うと変更できてしまうので、 KF-Xで正常動作させるには幅は変えないようにしましょう。
●システム処理モーションの当たり判定変更禁止 システム処理の当たり判定を変更すると、 ・ヒット状況が想定外の判定をされる ・連続技が入らなくなる というように、ゲームとして成立しなくなります。 固定つなぎアクション等が設定されている、 motion.lstのnum150〜220,700〜875 は当たり判定の変更禁止 としましょう。 これも直接編集でいくらでも変えることが出来てしまうので、気をつけましょう。
ではでは、実際の範囲設定方法を。いろいろ並べ立ててきましたが、作成方法は簡単です。 まず、やられ判定1から。 最初に、判定領域を作りたいMOTIONの行をクリックして選択します。 すると、その行が丸ごと反転し、上の表示領域に対応する画像パターンが表示されます。 ![]() この際、設定済みの領域も一緒に表示されます。 ここで、左上のタブから変更したい判定種類をクリックして選びます。 今回は「衝突/やられ判定1」のタブをクリック。 続いて、設定したい範囲矩形を作るよう上下に左ドラッグ。幅と最下部は固定です。 ![]() 適当なところでマウスを離し、確定。 ![]() 今回は有明の左手の先端の高さまでの範囲としました。 下の位置も変更できますが、今回は行いません。 下を変更したい場合、右ドラッグで行えます。
続いて、やられ判定2。 要するに、判定1以外でも当たり判定にしておきたい部分を補うサブ領域設定。 先に左上のタブから「やられ判定2」をクリックしてから行います。 後背位に当たり判定を作る必要は無いので、前に出ている左手部分にのみ適用。 適用したい矩形領域を、左上から右下にドラッグ…ではなく、以下の3手順で行います。 ●1.左クリック(ドラッグ)で範囲の上限決定 やられ判定2が設定無しから始める場合、左ドラッグしても原点からの延長矩形になる。 そのため、第1段階はあくまで上の位置設定ということにしておきます。 ![]() ●2.右クリック(ドラッグ)で判定領域の右下座標決定 1.で設定された位置から右クリック位置への対角線上に矩形範囲が設定されます。 ![]() ●3.再び左クリック(ドラッグ)で判定領域の左上座標決定 これで、作りたい矩形領域が確定できます。 ![]() 別にやられ判定1と2が重なっても問題があると思えませんが、 なんとなく気持ち悪いので重ならないように作っておきます。
この画面は立ちキャラなので本来攻撃判定は付けませんが、作成サンプルとして擬似設定。 基本的に作り方はやられ判定2と同じ。 先に左上のタブから「攻撃判定」をクリックしてから行います。 (というか、タブは「攻撃判定」で右側情報の名称は「攻撃判定1」になってたんだな…) ●1.左クリック(ドラッグ)で範囲の上限決定 第1段階はあくまで上の位置設定。 ![]() ●2.右クリック(ドラッグ)で判定領域の右下座標決定 1.で設定された位置から右クリック位置への対角線上に矩形範囲が設定されます。 ![]() ●3.再び左クリック(ドラッグ)で判定領域の左上座標決定 これで、作りたい矩形領域が確定できます。 ![]() あとは「上書き保存」でMOTION.LSTに反映ということになります。 今回に関しては、攻撃判定反映前まで戻してから上書きします。 が…『上書きできない』というエラーが発生したので、別名で保存しておきます。 うーむ…ま、いいか。 ※別名で保存した方への上書きは出来るため別名保存。 後で判明したが、この時MOTION.LSTを別エディタで開いてました。 それで保存できなかっただけかも。
同じパターンまたは微妙にずらすようなパターンには、一度設定した範囲をコピーして貼り付けします。 コピーしたいパターン行を選んだ後、メニューの「編集」から、「全判定コピー」をクリックします。 (特定判定のみコピーしたいならコピーしたいタブを選んで「判定コピー」を選択) ![]() その後、範囲を貼り付けたいパターン行を選び、メニューの「編集」から、「全判定ペースト」をクリックします。 (特定判定のみ貼り付けたいなら貼り付けたいタブを選んで「判定ペースト」を選択) ![]() あとは、必要に応じ範囲の微調整をします。 ※右クリックメニューからも同じコピー・貼り付け操作が行えます。 慣れるとこっちの方が早いです。 これらの、範囲設定〜コピー貼り付け〜微調整を繰り返し、 注意事項に気をつけながら、基本アクションの当たり判定を仕上げます。 ※ここまでの操作はあくまで「HitEdit」の操作方法。 「PlusListEditor」の操作方法とは異なるので注意。 : ツールの使い勝手が結構いいようで、思いのほか簡単に当たり判定設定が終わりました! これで一応、基本アクション分の見た目と当たり方は完全に一致したことになる。 どんな風に見えるかテストしてみましょう。
当たり方はかなりリアルになったようです。きっちり決まると見栄えいいですなあ。 ただ…なぜか相手と距離があるところで当たらない必殺技放ってるw 実は今回、距離があるときと至近距離のときにジャンプをするよう、 ENEMYの修正をしてみたのです。 しかし、どうも%調整で組み込んだものが変に働いちゃってるようですね… やっぱり、きちんとENEMYのロジック理解してから作らないと駄目かw とはいっても、もともとARAKIの必殺技だからかみ合わないのはしょうがないか。 それと気づいたのは、ダウンしたときにずいぶん浮いてること。 これは、素材作成時に右腕が身体の下に描いてるため、足の位置がそれより高いんです… ま、これもクリンナップ時にということで。 <3-08-05.技の属性とガード方向の設定> 次のコンテンツでARAKIの解析をしている最中に、 攻撃への「ガード方向」という設定全くいじくってなかった ことが判明いたしましたw これ、そういや旧開発期にまったく意識してなかったような… ほとんど覚えていない部分でした。 当たり判定を正しく作っても、それに対応するガードの位置があってないと、 攻撃・防御の双方向コミュニケーションが壊れてしまいます。 なので、ガード方向は本来当たり判定とパッケージで設定するべきです。 また、これに付随してアクションそれぞれには 「技の属性」 なるものがあることも判明。というか、存在は分かってましたが… 解析を後回しにしていた部分だったので、ようやく追いついたというところです。 ここはおそらくデフォルトARAKIにて設定済みで、修正する必要ほとんどないでしょうが… さらには、「くらい状態」・「ダメージ」・「ヒット数」なるパラメータもありますが… その辺は、クリンナップ期に見直すこととします。 いずれにしても、「技の属性」と「ガード方向」についてここではぱぱーっとやってしまおう。 まず、MOTION.LSTの記載について。 ![]() この部分に設定されます。すでに何らかのパラメータが設定済み。 まあ、デフォルトARAKIのコピーですからね… 続いて、「技の属性」と「ガード方向」の設定情報の詳細。
基本的に、上記設定を分かっていれば直接MOTION.LSTの入力で問題ないのですが、 MOTION.LSTは横にも縦にも長いし、項目一覧が上の行にあるので、行が進むと 項目がどこなのかわかんなくなり、入力ミス・入力漏れの可能性が高くなります。 一番怖いのが、「直したつもりで直していない」・「直したかどうか分からなくなる」です。 修正部分が反転されるなどの効果が出るツールがあればいいのですが… そこで管理人は、万全を期してHitEdit上で修正します。 ![]() HitEditの場合、修正したいアクション行を選択すると、それぞれの項目を 右上にすべて表示してくれます。これキャラの当たり判定画像を照らし合わせながら、 ![]() 「1行編集」をクリックして出てくる入力ウィンドウで編集する、というわけです。 この方法を取ることで、1行づつ確実に操作できるわけです。 とはいっても、「技の属性」についてはARAKIのデフォルト設定そのままでほぼ問題ないはず。 ガード方向については、あくまで攻撃判定のあるアクション行のみで大丈夫かな。 : 慎重に行いましたが、修正は数箇所のみ、無事に終わりました。 このあたりはむしろ、必殺技などを組み込むときの注意事項ですな… <3-08-06.残りアクションの解析> 上記項目を、MOTION.LSTを上から順番にチェックしながら作っていましたが、 以前イントロ部分を作る際にぶっこんだ、システム処理の1行戻り直し挿入モーション部が 行番号の順番の前後関係を無視して挿入していたことに気づきました。 100行〜220行をまとめてぶっこんじゃったため、立ち上がり部の120・121行が220行の後ろに… まあ、立ち上がりアクションは普通に出てたから、きちんと行参照されてたようですが。 こういうのを残しておくと後々怖いので、修正。 1行づつ編集を行うことで、こういうミスにも気づきやすいのです。 時間はかかるけど、1行づつのチェックは非常に大事という、一つの例です。 さてさて、拡張アクション部分に手をつける前の最後のお仕事。 「デフォルトARAKIでは、 基本アクション以外のモーションは何を入れているのか?」 の解析です。要するに、まだ手付かず部分の内容と作業の洗い出しです。 はじめに手をつけたときは、基本アクション以外で残るのは、勝ち・敗北処理と必殺技かな? と思ってましたが、もう一つ格闘ゲームに必須なアクションがありました。 基本アクションとシステム対応部以外の処理は以下のとおり。
残りは上記16アクションでした。 wikiでは、攻撃ボタンは小・大ではなく「弱」・「強」で表現されているので、 操作表現画像はそのまま「弱」・「強」を利用しています。 ARAKIのMOTION中ではS-P・B-P・S-K・B-Kという表現になっていたため Small・Big→小・大の意と捉えてここまで通してきましたが… むしろ格ゲーだと弱・強の表現の方が一般的ですね。 しかし、すでにフォルダ名やパターンファイル名に小・大(S・B)で 名前付けちゃってるので、開発管理名称ではS・Bで通します。 まず、一つ忘れていた格ゲー必須アクションが「投げ攻撃」です。 至近距離にいるとき、相手を捕まえて「えいやっ」とするアクション。 投げ自体が独立したボタンの存在しないアクションなので、 結局はコマンド入力になりますが、もっともシンプルなコマンド入力ということで テストもしっかりやらないと駄目かな。 上記解析結果によると、残りアクションを系統分けすると以下のようになります。
いざ調べてみると、必殺技6種、超必殺技4種と、意外と多いですね。 自分の中では、特殊技は合計で4〜6種くらいに思っていましたが… あと、ARAKIは波動拳のような、いわゆる「飛び道具技」が無いんですよね。 まあ、有明は一般的な人間ですから無理やり飛び道具出す必要ないですが、 相手に距離をとられた場合や相手が飛び道具出してくるときの対抗策として、 とび蹴り・飛び体当たり的な人体飛び道具を想定してたので、 ちょっと別キャラを調査。 某昇竜な人のパク…オマージュキャラである「RYOU」の『青龍拳』が 飛び道具の代表的サンプル。 これを調べたところ 、 ・技属性が「43:必殺技」 ・操作は「236p」・「236P」 になっています。飛び道具は必殺技として処理するということでしょう。 なお、RYOUの技種数は、 ・体接触系:NAGE-BP・NAGE-BK:2種 ・無敵必殺技:SYO-S-P・SYO-B-P:2種 ・必殺技:TAM-S-K・TAM-B-K・TYUDAN(M-S-P)・HAD-S・HAD-B:5種 ・無敵超必殺技:SPA(SIN-S)/パンチ小・大:2種 ・超必殺技:SZK(SP-B)/パンチ小・大:2種 必殺技7種、超必殺技4種ですが、半分が無敵技。そりゃ強いわけだ… でも、いわゆる必殺技の総数で見ると、ほぼ変わらないんですね。 また、入力コマンド数でいくと、 ・体接触系:2コマンド(方向1、攻撃ボタン1) ・必殺技:3コマンド(方向2、攻撃ボタン1) ・超必殺技:6コマンド(方向5、攻撃ボタン1) というのが一般的、と考えられるということなのでしょう。 個数とコマンドについては、基本的にARAKI踏襲、 飛び道具を組む場合は、そこだけRYOUの『青龍拳』を流用ってことでよさそうかな。 そんなこんなで、残りの作業のまとめとしては、
となり、この順番で作業をつめていこうと思います。 実は、1と4をまとめて「拡張アクションパターン」と考えていましたが、 格ゲー成立を優先とし、デモ部分は最後でいいかなと。 そんなわけで、この後のコンテンツ名も変更。 ・開発工程09 拡張技パターン作成 ・開発工程10 デモアクション作成 上記工程で、一応キャラの仮格ゲー化が落ち着く、という寸法です。 バランス調整やクリンナップは、バージョンアップの部類なので、 場合によっては別キャラの後でもいいかもな〜… まあ、後で考えましょう。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|