001 はじめに
002 ゲーム作成
003 各種メニュー確認
004 「キャラクター」作成
005 「ステージ」作成
006 「デモ」作成
007 「テストプレー」
008 「ステージ」編集
009 「キャラクター」編集
010 パレット管理
011 アニメーション
012 「座標移動」
013 重力の設定
014 その他スクリプト
015 「リアクション」
016 ヒットエフェクト
017 スクリプトの並べ方
018 攻撃動作
019 「コマンド入力」
020 攻撃判定
021 やられ判定
022 やられ動作の設定
023 「タイトル画面」作成
024 タイトルカーソルの表示
025 「キャラクターセレクト」
026 各種インターフェイス
027 ラウンド関連の表示
028 CPUの動作指定
029 「ストーリー」の作成
030 ヒット数の表示
031 投げ技の作成
032 ゲージ消費技の作成
033 ステージの組み方
034 デモシーンの組み方
035 格闘ツクールの仕様
■ コマンド解説
001 画像呼出
002 座標移動
003 防御枠
004 攻撃枠
005 リアクション
006 サウンド
007 キャンセル条件
008 色変更
009 オブジェクト発生
010 変数による分岐
011 条件分岐:技中有効
012 条件分岐:基本分岐
013 条件分岐:ランダム分岐
014 条件分岐:コマンド入力
015 スクリプト移動: 移動
016 スクリプト移動: 呼出
017 スクリプト移動: ループ
018 座標・画像変更
019 スクリプト変更
020 スペシャルゲージチェック分岐
021 ライフゲージチェック分岐
022 ゲージ変更
023 パレットアニメ・揺らし
024 停止
025 残像
026 終了
■ テクニック解説
002 画面レイアウト
003 カラーセレクトの設定
004 ヒットエフェクトの研究
005 ヒットエフェクトの描き方
006 スクリプト一覧のテキスト化
007 通常立ちの設定
008 VSで開始位置指定
009 雛型キャラの作成
010 INIファイルの内容
011 変数の大小チェック
012 当て身投げの作り方
013 必殺技コマンドの設定
014 アニメ作成_通常攻撃
015 ゲームモードによる分岐
016 変数の一覧を記録
017 受け身入力の判定
018 ダウン値による分岐処理
019 飛び道具の作成
020 ワープ技の作成
021 ヒット硬直のコントロール
022 ステージの地面表現
023 ヒット数表示の固定
024 横方向のホーミング攻撃
025 1P/2Pの判別
026 ライフ減少アニメ
027 画面下部の表示内容
028 ステータス表示の意味
029 ガードクラッシュの表現
030 押せないOBJ
031 アイテムのあるゲーム
032 復活する技の作成
033 空ガードの作成
034 ステージ選択付きキャラセレ
035 ゲージMAXの表示
036 固定ダメージを表現する
037 ラン動作の作成
038 投げ技によるKOの作成
039 ボタン溜め押し技の作成
040 中段攻撃の作り方
041 製作に役立つツール
042 カラーセレクトに適した画像
043 相手によって動作変更
044 横幅のあるキャラを表現
045 ラウンド限定の動作
046 影色の塗りを効率化
047 モードを切り替えるキャラ
048 当たり判定設定のコツ
049 空中ジャンプを表現する
050 キャラの向きを判別する
051 途中でKOしない乱舞技
052 カウンターヒットの作成
053 OBJの動作を停止
054 ハイジャンプの作成
■ バグ・よくあるミス
Q_A よくあるミスQ&A
001 消せない画像
002 リスト選択とキーボード操作
003 アニメプレビューで落ちる
004 起動直後に落ちる
005 OBJ発生位置がずれる
006 着地すると技終了
007 画面端でのヒットバック1
008 グラデーションが汚い
009 画面端でのヒットバック2
010 境界のアンチエイリアス問題
011 ガードされてもキャンセル可能
012 プレーヤーの読込に失敗
013 謎の残像が発生する
014 コマンドが左右反転する
015 パレット管理でよくあるミス
016 下溜め技が失敗する
017 パレットウィンドウで落ちる
018 コンボが途切れない
019 やられ中にしゃがみ可能
020 ソフトのバージョン表記
021 空中でコマンド左右反転2
022 左右押しでガード前進
023 真空投げが発生する
024 空中でコマンド左右反転3
■ テスト時のチェック項目
■ 解説用データ ダウンロード
029
ガードクラッシュの表現
格闘ゲームにおいて、ひたすらガードを続ける相手を攻略するのは難しいです。
上下段攻撃の使い分けや投げ技、その他ガード不能攻撃など
キャラクターの技でバランスをとっていることも多いですが
これらとは別に、ゲームシステム側でのバランス調整として
「ガードクラッシュ」というルールがあります。
MEMO
ガードクラッシュ
ガードの回数に制限を設けるルール。
連続でガードし続けると、相手の攻撃に耐え切れず
ガードを崩して操作不能状態になってしまうというもの。
今回はこのガードクラッシュを表現する方法について
引っかかりやすい問題点も含めて説明していきたいと思います。
作成する内容の確認
まずはガードクラッシュの動きについて見ていきましょう。
現在、キャラが相手の攻撃をガードしています。
最初の内はしっかりガード出来ていますが、ガード回数が一定値を越えると…
ガードクラッシュ が発生、キャラはガードを崩してしまいます。
ガードクラッシュ後しばらくはキャラを操作出来ず、相手の攻撃を回避することが出来ません。
なお、実際にガードクラッシュのシステムを持つゲームでは
ライフゲージと一緒にガードクラッシュゲージを表示することが多いですが
今回は説明を省くため、シンプルに
ガード値が一定に達するとガードクラッシュが発生する
というルールだけを作ることにします。
MEMO
ガードクラッシュゲージ
ガードクラッシュするまでのガード耐久量をゲージとして画面上に表したもの。
ガード動作の種類によって耐久の減少量が異なる場合も
現在の状況を視覚的に確認できるため便利です。
スクリプトの編集
今回作成する処理では次のような仕組みを用意します。
ガードをするたびにガードクラッシュ用変数を加算。
変数値が 10 以上になった時、ガード動作からガードクラッシュに分岐。
変数を 0 に戻して、ガードクラッシュ動作を一定時間行う。
以下に今回の処理で使用するグラフィックを載せておきます。
ガード動作・ガードクラッシュ動作
ガード・ガードクラッシュエフェクト
※ゲーム用BMPは上記画像のリンク先にて提供しております
スクリプト編集画面に入ったら、まずは「ガードクラッシュ」行を作成してください。
------------------------------------------------------------
次はガード動作です。
ここではスクリプト先頭にガードクラッシュへの分岐処理を追加します。
番号 | 命令 | 設定内容 |
1 | キャラ変数Gを+1、9より大きいならガードクラッシュへ | |
2 | キャンセル不可 | |
3 | ぶつかり・やられ・投げやられをONに | |
4 | やられをONに | |
5 | 移動X = -0.28 重力X = +0.01 (代入) | |
6 | WAIT=25 |
※表中、色違いの部分がガードクラッシュ用の追加処理となっています。
スクリプト先頭の変数分岐命令に注目してください。
ここではガード動作を1回行うたびに変数の値を +1 しており、
変数を加算した結果、値が 9 を超える場合は
「ガードクラッシュ」
行へ飛ぶよう設定しています。
なお、ゲーム中に複数のガード動作がある場合は
それら全てに対して同様の処理を追加してください。
弱ガードではガード値の変化を小さく、逆に強ガードでは変数の変化量を大きめに設定するなど
ゲームバランスを考えて色々工夫すると良いでしょう。
分岐設定が済んだら、「ガードクラッシュ」行にスクリプトを追加していきます。
番号 | 命令 | 設定内容 |
1 | キャラ変数Gを0にする | |
2 | キャンセル不可 | |
3 | ぶつかり・やられ・投げやられをONに | |
4 | やられをONに | |
5 | 移動X = -1.43 重力X = +0.02 (代入) | |
6 | 自分停止 = 0、 相手停止 = 30 | |
7 〜 11 | 順番に…WAIT = 2, 20, 15, 8, 8 | |
12 | 移動、重力ともに0を代入 | |
13 | WAIT=200 |
上の方で載せた画像を並べています。
ガードクラッシュ後の隙を表現するため、
画像のWAIT値が大きめとなっている点に注意してください。
また、スクリプト内でガードクラッシュ用の変数値を
リセットしておくのも忘れないようにしてください。
※これがないと、通常のガードに戻らなくなります!
MEMO
ガードクラッシュ時の繰り返し動作
上の例では1行のシンプルなスクリプトで
ガードクラッシュの動作を設定しましたが、
ガードクラッシュ後、辛そうなポーズを複数回繰り返す
というパターンも考えられます。
こういった場合は、スクリプトのループ処理を活用すると良いです。
上図では、ガードクラッシュの行を「終了」命令によって前半/後半に分け、
前半のラストにて後半部分をループ呼び出ししています。
( 念のため、防御枠設定などもループ構造の中に入れておくと良いです )
これでガード動作からガードクラッシュへの分岐処理をセットすることが出来ました。
しかし、このままでは1つ問題があります。
実際にテストプレーで動きを見てみましょう。
問題点の確認
問題点
現在、相手がガードクラッシュした状態にあります。
ここは相手に攻撃を当てるチャンス、と考えて攻撃を行うと…
なぜか相手はしっかりガードします。
------------------------------------------------------------
原因
ガードクラッシュ時の動作について考えてください。
現在キャラクターはガードクラッシュ直前の状態にあります。
ここで敵の攻撃をガードすると、まず通常どおり「ガード動作」のスクリプトに入ります。
スクリプト開始直後、変数分岐命令によって「ガードクラッシュ」行へ移動するのですが
ここで1つ注意すべき点があります。
画面上にガードエフェクトが出ていることからも分かるとおり、
キャラクターは攻撃のガードに成功しています。
ここで「ガードクラッシュ」動作に移行したとしても、
内部的にはポーズを変えたガード動作でしかない。
その結果、相手の攻撃をしっかりガード出来てしまうのです。
( 連続ガードを行った、という扱いになります )
------------------------------------------------------------
対策
この問題を解決するには、相手の攻撃をガードした
という状態を一旦リセットする必要があります。
その方法として一番最適なのが キャラクターを着地させること です。
ガードクラッシュ行の先頭に以下のスクリプトを追加してください。
番号 | 命令 | 設定内容 |
1 | キャラ変数Gを0にする | |
2 | キャンセル不可 | |
3 | 着地したら 6 へ | |
4 | 移動Y = +10.00 | |
5 | WAIT = 0(無限) | |
6〜 |
スクリプト解説
ブロック3〜5でキャラの着地処理を行っている点に注目してください。
ブロック5に置いている画像については、
元のスクリプトで一番最初に表示していた画像( ガードクラッシュ動作の1コマ目 )でOKです。
処理的には一瞬でキャラが着地するので、このあたりの画像が表示されることはありません。
ガードエフェクトの分岐
また、ガード時に発生するガードエフェクトについても
ガードクラッシュ時の分岐を設定しておきましょう。
(変数の分岐条件は、キャラ本体と同じです)
グラフィックについては、上の方でガードエフェクトと一緒に載せた
ガードクラッシュエフェクト を利用すると良いです。
以上の設定で、ガードクラッシュ のルールがうまく動作すると思います。
テストプレーで処理を確認
テストプレーでガードクラッシュの処理を確認してみましょう。
今回は相手キャラにガードしてもらいたいので、相手の動作はガード
にしておきます。
ゲーム開始、自キャラで相手に攻撃を行います。
CPUの設定通り、相手はガードを行います。
引き続き攻撃を繰り返していくと…
ガードクラッシュが発生、相手はしばらく動けなくなります。
ここで再び攻撃を仕掛けると…
しっかり攻撃がヒットしました。
以上の結果から、ガードクラッシュの処理が正しく行われていることが確認出来ました。
まとめ
ガードクラッシュのルールはゲームバランスを大きく左右する部分となるので、
攻撃とガードのバランスが取れるよう何度もテストプレーを繰り返して調整すると良いです。
その他、今回の説明では省略しましたが
ガードクラッシュ値の回復についても何かルールを考えておくと良いかもしれません。
( 立ち・しゃがみなどの待機状態で徐々に回復する、など )
また、今回の処理で使用した 着地によるキャラの状態リセット というテクニックは
他の処理を表現する際にも活用できるので、しっかり覚えておくと良いでしょう。
長くなりましたが、以上で ガードクラッシュの表現 に関する説明を終えます。
なお、今回の説明で不明な点や質問などがあれば
掲示板 にて受け付けておりますので気軽にお尋ねください。