「フレーム処理」の編集履歴(バックアップ)一覧はこちら

フレーム処理」(2018/02/24 (土) 21:14:02) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

---- *■フレーム処理 :フレーム(F)とは:60f/秒| ''処理の単位''であり全体の処理を''1周することが1フレーム''。 フレームが連なり処理表示を繰り返すことでコンピューターは「動いている・操作している」ように見える。 基本''1秒につき60フレーム(=処理60周分)''である。(設定で調整はできるが基本は60F/秒。) -例えながら砕いて言うと --映画フィルムの1コマ、あれが1フレームに相当します。 --表示を毎秒60コマ変えていくことで動かしているわけです。 ---ちなみに映画フィルムは24コマ/秒が一般的な規格。 :ただし| 手間の関係上キャラの画像も1枚/F、60枚/秒というのは困難。 一応、表示の最小単位が1Fごとと覚えておけばいい。、 映画フィルムレベルでも2~3Fに1枚表示で同レベルになる。 (アニメに関して言えば、最低限あるなら枚数よりも全体の流れの方が重要。) ---- **■MUGENのフレーム処理 :| MUGENでも決まった順番で処理をしていく。 作っていてあまり気にしない部分だが、細かい処理にはとても重要。 ※かなり大雑把な表 ※''内部を解析したわけではないため、一部順序は実際と異なる可能性あり'' ※''検証の足りない部分は多いです''※ :基本| -フレーム開始処理 --Ctrl=1系統の処理・ガードフラグ -キャラ・ステート処理 --順番は[[スロットID]]参照 --中身は後述する表を参照 ---''※Damage処理や生死判定自体はキャラ側で行われている'' -フレーム終了処理 --[[SC-/BindToTarget]]などのBind系の移動を行う? --攻撃の命中処理を行う。 --[[SC-/Projectile]]の処理をする。※''キャラ側ではないので注意'' --[[SC-/Explod]]の処理をする。※''キャラ側ではないので注意'' --その後描画処理する -フレーム終了 --フレームレートに合わせて待機するかすぐ次のフレームを処理する。 |~ 状態 |~ 内容 |~ 備考 | |>|>|~↓&br()■フレーム開始時点■&br()↓| |~フレーム開始処理|Ctrl=1による移動処理|ステート変更。[[Commonステート]]参照| |~|↑自動振り向き処理|AutoTurnが可能である場合に、振り向く判定を行う。| |~|手動ガード判定|ステート変更。[[ガード]]参照| |~|自動起き上がり処理|ステート変更。[[Commonステート]]参照| |||| |>|>|~↓&br()■キャラ処理■&br()キャラ同士の順番は[[スロットID]]参照&br()↓| |~[[常時監視ステート]]|-3番(ステート処理補助)|※[[ステートを奪われている状態>ステート奪取]]では読み込まない| |~|-2番(常駐処理)|ステートを奪われていても読み込む。&br()その関係上[[T-/StateNo]]条件などは基本使わないこと| |~|-1番(基本コマンド認識)|※[[ステートを奪われている状態>ステート奪取]]では読み込まない。&br()-2ステートでSelfStateで戻した場合は読み込むとのこと| |~番号ステート|現在のステート([[StateNo>T-/StateNo]])|番号ステート。細かくは[[File-/Stateファイル]]から参照| |~|[[ステート移動>SC-/ChangeState]]実行後|実行したステートの読み込みを中断し次のステートを読み込む。| |||| |~番号ステート後|ステ移動数リセット|2500Loopエラー用のカウントがリセット| |~|ガード戻し処理|特定条件で140番からステート移動し''再度番号ステート処理''。&br()詳しくは[[Commonステート]]の該当項目参照| |~|速度処理・Vel反映|[[Vel]]のページを参照| |~|速度処理・Physics反映|~| |~|速度処理・自動着地処理|一定条件で52番ステートへ移動。''再度番号ステート処理''。&br()詳しくは[[Vel]]参照。| |~|[[ダメージ]]反映|[[T-/MoveType]]=HでGetHitVar(Damage)がある場合、&br()その数値分体力を減らす。| |~|生死判定|[[T-/Life]]=0かつ[[SC-/AssertSpecial]]のNoKOなどが無ければ&br()死亡判定となり[[T-/Alive]]を0に、他試合終了判定を行う。| |~|[[SC-/DestroySelf]]|Helperキャラの消去を行う(''少なくとも自動着地の後'')| |>|>|~↓| |~キャラ処理後|次ヘ|次のキャラの処理を行う。無ければステート終了処理へ| |~キャラ処理|>|順番は基本[[スロットID]]に応じて決定される。[[T-/ID]]ではない。&br()詳しくは[[スロットID]]を参照。| |~|>|1.既存キャラの内、Movetype=AでスロットIDが若い順| |~|>|2.既存キャラの内、MoveType!=AでスロットIDが若い順| |~|>|3.新規Helperの射出された順番| |~|>|[[SC-/Pause]]などが実行されている間は該当MoveTimeが無ければ処理スキップ。&br()ただし新規Helperは例外的にPause中でもスキップされない。| |||| |>|>|~↓&br()■ステート終了処理■&br()↓| |~終了時点|>|※''キャラごとの順番処理など詳しくは不明''| |~Bind系処理?|Bind判定|[[SC-/BindToTarget]]などのBind系の処理をする。&br()''※検証不足。押し出し判定よりも優先、のはず''| |~[[押し出し>座標]]|衝突判定|重なっているキャラの押し出し判定を行う。&br()キャラごとの処理順については''※調査不足※''| |>|>|~↓| |~[[SC-/Projectile]]処理|MoveTime判定|[[SC-/Pause]]や[[SC-/SuperPause]]に対するMoveTimeの残量確認&br()残量無し・もしくは本体停止状態の場合は処理をスキップする&br()''※射出したフレームではスキップを行わない?''| |~|Time消失判定|ProjRemoveTime - ''経過時間'' = 0がなら消失する。| |~|速度処理|Velの分移動させる。| |~|加速度処理|Accelの分Velに加算。※''射出時点では加算しない?''| |~|画面外消失判定|消失する条件を満たしている場合消失する。&br()※画面外による消滅には移動が必要?| |~|時間経過|Time系パラメータの残りを-1する?&br()RemoveTimeは不変。代わりに''経過時間''に1加算。&br()※''他は調査不足''| |~|表示について|本体停止中に''ProjRemoveTime=1+MoveTime有り''で射出すると、&br()''停止中表示されず停止解除後に1F表示される''&bR()表示は無くても命中はする。&br()RemoveTimeが2以上やMoveTime無しなら射出時点から表示される。| |>|>|~↓| |~攻撃判定|>|&b(){攻撃の処理は[[T-/GameTime]]偶数,奇数で確認処理が逆順に}みたいな状態?&br()他、属性について細かくは[[攻撃属性]]なども参照| |~|[[SC-/ReversalDef]]判定|''最も早い''。ヒットしたら相手の[[SC-/HitDef]]や&br()[[SC-/NotHitBy]][[SC-/HitBy]]の無敵などを無効化する。| |~||| |~|命中判定1&br()攻撃判定処理|[[SC-/HitDef]]、[[SC-/Projectile]]について&br()''相手くらい判定へ攻撃判定が重なり''&br()''HitFlagが適合しているか''。StateType属性が変化。| |~|命中判定2&br()無敵|[[SC-/NotHitBy]]、[[SC-/HitBy]]の無敵に適合していないかどうか。| |~|命中判定3&br()HitOverride無敵|攻撃のP1StateNo指定かP2StateNo指定の有無と&br()[[SC-/HitOverride]]を確認&。重なっている場合命中しない。| |~|命中判定4&br()Target限度|既に[[Target]]が8体あり、かつそのTargetの相手かどうか。| |~|命中判定5&br()Priority|全員の攻撃のPriorityを確認し優先ヒット・回避を判定| |~攻撃処理|>|判定の結果、攻撃が命中していれば。&br()&b(){※細かい処理の順番は不明※}| |~|命中処理1&br()基本|判定に従い攻撃を受けた側をMovetype=HのCtrl=0にして、&br()汎用のくらいステートへ飛ばす。詳しくは[[Commonステート]]を参照。&br()[[SC-/ReversalDef]]のヒットでは変更せず?Ctrlは不明| |~|命中処理2&br()ガードフラグ|攻撃のGuardFlagに適合する[[ガード]]をしており、&br()[[SC-/HitOverRide]]が不適合なら、対応ガードくらいステートへ。| |~|命中処理3&br()[[ステート奪取]]|攻撃のP2getP1Stateのフラグを確認しステートを奪う。&br()省略時、通常0、P2StateNo指定有り1。0指定でステートを奪わない。| |~|命中処理4&br()相手ステート奪取|攻撃にP2StateNo指定がある場合&br()ヒットした相手をP2StateNoへステート変更。| |~|命中処理5&br()相手ステート変更|攻撃にP2StateNo指定が無くガードでなければ&br()対応くらいステートへ飛ばす。[[Commonステート]]参照&br()[[SC-/ReversalDef]]のヒットでは行わない。| |~|命中処理6&br()自分ステート変更|攻撃にP1StateNo指定がある場合&br()ヒットしたら自分のステート変更。| |~|命中処理7&br()攻撃情報付与|攻撃の情報を相手に与える。| |~|命中処理8&br()[[Damage>ダメージ]]加算|相手のDaamge量に攻撃のDamage数値を加算する。| |~|[[SC-/HitOverride]]処理|属性が適合している場合発揮され、StateNoが変更される。&br()StateNo指定が-1の場合変更しない。&br()&b(){少なくとも通常対応くらいステート移行処理の後}| |~|[[Target]]|[[SC-/HitOverride]]が発揮していないなら&br()対象の相手を[[Target]]として認識する。| |~|命中フラグ|[[T-/MoveContact]]系のフラグを立てる。&br()[[T-/MoveHit]],[[T-/MoveGuarded]]はもちろん区別。| |~|[[Proj>SC-/Projectile]]時消滅処理|Projによる攻撃を消滅させる| |~|>|恐らく攻撃キャラ(対象キャラ順番)→次の攻撃キャラの処理順?&br()[[SC-/HitDef]][[SC-/Projectile]]の順序・優先度は不明。| |>|>|~↓| |~[[SC-/Explod]]処理|MoveTime判定|[[SC-/Pause]]や[[SC-/SuperPause]]に対するMoveTimeの残量確認&br()残っていない場合は処理をスキップする&br()''※射出したフレームではスキップを行わない?''| |~|Time消失判定|RemoveTime - ''経過時間'' = 0がなら消失する。| |~|OnGetHit消失判定|RemoveOnGetHitが1で親キャラが攻撃を受けたなら消滅。| |~|速度処理|Velの分移動させる。※Bindの影響をこの後に受ける| |~|加速度処理|Accelの分Velに加算※''射出時点では加算しない?''| |~|Bind判定|BindTime中、基準位置へ移動する| |~|時間経過|BindTimeなどTime系パラメータの残りを-1する?&br()RemoveTimeは不変。代わりに''経過時間''に1加算。&br()※''他は調査不足''| |||| |~その他|>|雑多な処理判定?| |~表示処理|アニメ表示|命令に従ってキャラの描画をする| |~|[[デバッグ]]表示|基本[[デバッグ]]表示を決定する。[[SC-/DisplayToClipboard]]系でない。&br()※デバッグPauseでのFRAMESは停止後+1増えて停止する模様| |~処理完了|フレーム経過|フレームレートが合うよう待機時間を整える。&bR()※フレームレートが高い場合、その分待機せず次フレーム処理へ。| |||| |>|>|~↓&br()フレーム処理完全終了後、次のフレームへ移る&br()↓| ※''あくまで大雑把な推測を含む表なので鵜呑みにしないこと'' ----
---- *■フレーム処理 :フレーム(F)とは:60f/秒| ''処理の単位''であり全体の処理を''1周することが1フレーム''。 フレームが連なり処理表示を繰り返すことでコンピューターは「動いている・操作している」ように見える。 基本''1秒につき60フレーム(=処理60周分)''である。(設定で調整はできるが基本は60F/秒。) -例えながら砕いて言うと --映画フィルムの1コマ、あれが1フレームに相当します。 --表示を毎秒60コマ変えていくことで動かしているわけです。 ---ちなみに映画フィルムは24コマ/秒が一般的な規格。 :ただし| 手間の関係上キャラの画像も1枚/F、60枚/秒というのは困難。 一応、表示の最小単位が1Fごとと覚えておけばいい。、 映画フィルムレベルでも2~3Fに1枚表示で同レベルになる。 (アニメに関して言えば、最低限あるなら枚数よりも全体の流れの方が重要。) ---- **■MUGENのフレーム処理 MUGENでも決まった順番で処理をしていく。 作っていてあまり気にしない部分だが、細かい処理にはとても重要。 ※かなり大雑把な表 ※''内部を解析したわけではないため、一部順序は実際と異なる可能性あり'' ※''検証の足りない部分は多いです''※ :基本| -フレーム開始処理 --Ctrl=1系統の処理・ガードフラグ -キャラ・ステート処理 --順番は[[スロットID]]参照 --中身は後述する表を参照 ---''※Damage処理や生死判定自体はキャラ側で行われている'' -フレーム終了処理 --[[SC-/BindToTarget]]などのBind系の移動を行う? --攻撃の命中処理を行う。 --[[SC-/Projectile]]の処理をする。※''キャラ側ではないので注意'' --[[SC-/Explod]]の処理をする。※''キャラ側ではないので注意'' --その後描画処理する -フレーム終了 --フレームレートに合わせて待機するかすぐ次のフレームを処理する。 |~ 状態 |~ 内容 |~ 備考 | |>|>|~↓&br()■フレーム開始時点■&br()↓| |~フレーム開始処理|Ctrl=1による移動処理|ステート変更。[[Commonステート]]参照| |~|↑自動振り向き処理|AutoTurnが可能である場合に、振り向く判定を行う。| |~|手動ガード判定|ステート変更。[[ガード]]参照| |~|自動起き上がり処理|ステート変更。[[Commonステート]]参照| |||| |>|>|~↓&br()■キャラ処理■&br()キャラ同士の順番は[[スロットID]]参照&br()↓| |~[[常時監視ステート]]|-3番(ステート処理補助)|※[[ステートを奪われている状態>ステート奪取]]では読み込まない| |~|-2番(常駐処理)|ステートを奪われていても読み込む。&br()その関係上[[T-/StateNo]]条件などは基本使わないこと| |~|-1番(基本コマンド認識)|※[[ステートを奪われている状態>ステート奪取]]では読み込まない。&br()-2ステートでSelfStateで戻した場合は読み込むとのこと| |~番号ステート|現在のステート([[StateNo>T-/StateNo]])|番号ステート。細かくは[[File-/Stateファイル]]から参照| |~|[[ステート移動>SC-/ChangeState]]実行後|実行したステートの読み込みを中断し次のステートを読み込む。| |||| |~番号ステート後|ステ移動数リセット|2500Loopエラー用のカウントがリセット| |~|ガード戻し処理|特定条件で140番からステート移動し''再度番号ステート処理''。&br()詳しくは[[Commonステート]]の該当項目参照| |~|速度処理・Vel反映|[[Vel]]のページを参照| |~|速度処理・Physics反映|~| |~|速度処理・自動着地処理|一定条件で52番ステートへ移動。''再度番号ステート処理''。&br()詳しくは[[Vel]]参照。| |~|[[ダメージ]]反映|[[T-/MoveType]]=HでGetHitVar(Damage)がある場合、&br()その数値分体力を減らす。| |~|生死判定|[[T-/Life]]=0かつ[[SC-/AssertSpecial]]のNoKOなどが無ければ&br()死亡判定となり[[T-/Alive]]を0に、他試合終了判定を行う。| |~|[[SC-/DestroySelf]]|Helperキャラの消去を行う(''少なくとも自動着地の後'')| |>|>|~↓| |~キャラ処理後|次ヘ|次のキャラの処理を行う。無ければステート終了処理へ| |~キャラ処理|>|順番は基本[[スロットID]]に応じて決定される。[[T-/ID]]ではない。&br()詳しくは[[スロットID]]を参照。| |~|>|1.既存キャラの内、Movetype=AでスロットIDが若い順| |~|>|2.既存キャラの内、MoveType!=AでスロットIDが若い順| |~|>|3.新規Helperの射出された順番| |~|>|[[SC-/Pause]]などが実行されている間は該当MoveTimeが無ければ処理スキップ。&br()ただし新規Helperは例外的にPause中でもスキップされない。| |||| |>|>|~↓&br()■ステート終了処理■&br()↓| |~終了時点|>|※''キャラごとの順番処理など詳しくは不明''| |~Bind系処理?|Bind判定|[[SC-/BindToTarget]]などのBind系の処理をする。&br()''※検証不足。押し出し判定よりも優先、のはず''| |~[[押し出し>座標]]|衝突判定|重なっているキャラの押し出し判定を行う。&br()キャラごとの処理順については''※調査不足※''| |>|>|~↓| |~[[SC-/Projectile]]処理|MoveTime判定|[[SC-/Pause]]や[[SC-/SuperPause]]に対するMoveTimeの残量確認&br()残量無し・もしくは本体停止状態の場合は処理をスキップする&br()''※射出したフレームではスキップを行わない?''| |~|Time消失判定|ProjRemoveTime - ''経過時間'' = 0がなら消失する。| |~|速度処理|Velの分移動させる。| |~|加速度処理|Accelの分Velに加算。※''射出時点では加算しない?''| |~|画面外消失判定|消失する条件を満たしている場合消失する。&br()※画面外による消滅には移動が必要?| |~|時間経過|Time系パラメータの残りを-1する?&br()RemoveTimeは不変。代わりに''経過時間''に1加算。&br()※''他は調査不足''| |~|表示について|本体停止中に''ProjRemoveTime=1+MoveTime有り''で射出すると、&br()''停止中表示されず停止解除後に1F表示される''&bR()表示は無くても命中はする。&br()RemoveTimeが2以上やMoveTime無しなら射出時点から表示される。| |>|>|~↓| |~攻撃判定|>|&b(){攻撃の処理は[[T-/GameTime]]偶数,奇数で確認処理が逆順に}みたいな状態?&br()他、属性について細かくは[[攻撃属性]]なども参照| |~|[[SC-/ReversalDef]]判定|''最も早い''。ヒットしたら相手の[[SC-/HitDef]]や&br()[[SC-/NotHitBy]][[SC-/HitBy]]の無敵などを無効化する。| |~||| |~|命中判定1&br()攻撃判定処理|[[SC-/HitDef]]、[[SC-/Projectile]]について&br()''相手くらい判定へ攻撃判定が重なり''&br()''HitFlagが適合しているか''。StateType属性が変化。| |~|命中判定2&br()無敵|[[SC-/NotHitBy]]、[[SC-/HitBy]]の無敵に適合していないかどうか。| |~|命中判定3&br()HitOverride無敵|攻撃のP1StateNo指定かP2StateNo指定の有無と&br()[[SC-/HitOverride]]を確認&。重なっている場合命中しない。| |~|命中判定4&br()Target限度|既に[[Target]]が8体あり、かつそのTargetの相手かどうか。| |~|命中判定5&br()Priority|全員の攻撃のPriorityを確認し優先ヒット・回避を判定| |~攻撃処理|>|判定の結果、攻撃が命中していれば。&br()&b(){※細かい処理の順番は不明※}| |~|命中処理1&br()基本|判定に従い攻撃を受けた側をMovetype=HのCtrl=0にして、&br()汎用のくらいステートへ飛ばす。詳しくは[[Commonステート]]を参照。&br()[[SC-/ReversalDef]]のヒットでは変更せず?Ctrlは不明| |~|命中処理2&br()ガードフラグ|攻撃のGuardFlagに適合する[[ガード]]をしており、&br()[[SC-/HitOverRide]]が不適合なら、対応ガードくらいステートへ。| |~|命中処理3&br()[[ステート奪取]]|攻撃のP2getP1Stateのフラグを確認しステートを奪う。&br()省略時、通常0、P2StateNo指定有り1。0指定でステートを奪わない。| |~|命中処理4&br()相手ステート奪取|攻撃にP2StateNo指定がある場合&br()ヒットした相手をP2StateNoへステート変更。| |~|命中処理5&br()相手ステート変更|攻撃にP2StateNo指定が無くガードでなければ&br()対応くらいステートへ飛ばす。[[Commonステート]]参照&br()[[SC-/ReversalDef]]のヒットでは行わない。| |~|命中処理6&br()自分ステート変更|攻撃にP1StateNo指定がある場合&br()ヒットしたら自分のステート変更。| |~|命中処理7&br()攻撃情報付与|攻撃の情報を相手に与える。| |~|命中処理8&br()[[Damage>ダメージ]]加算|相手のDaamge量に攻撃のDamage数値を加算する。| |~|[[SC-/HitOverride]]処理|属性が適合している場合発揮され、StateNoが変更される。&br()StateNo指定が-1の場合変更しない。&br()&b(){少なくとも通常対応くらいステート移行処理の後}| |~|[[Target]]|[[SC-/HitOverride]]が発揮していないなら&br()対象の相手を[[Target]]として認識する。| |~|命中フラグ|[[T-/MoveContact]]系のフラグを立てる。&br()[[T-/MoveHit]],[[T-/MoveGuarded]]はもちろん区別。| |~|[[Proj>SC-/Projectile]]時消滅処理|Projによる攻撃を消滅させる| |~|>|恐らく攻撃キャラ(対象キャラ順番)→次の攻撃キャラの処理順?&br()[[SC-/HitDef]][[SC-/Projectile]]の順序・優先度は不明。| |>|>|~↓| |~[[SC-/Explod]]処理|MoveTime判定|[[SC-/Pause]]や[[SC-/SuperPause]]に対するMoveTimeの残量確認&br()残っていない場合は処理をスキップする&br()''※射出したフレームではスキップを行わない?''| |~|Time消失判定|RemoveTime - ''経過時間'' = 0がなら消失する。| |~|OnGetHit消失判定|RemoveOnGetHitが1で親キャラが攻撃を受けたなら消滅。| |~|速度処理|Velの分移動させる。※Bindの影響をこの後に受ける| |~|加速度処理|Accelの分Velに加算※''射出時点では加算しない?''| |~|Bind判定|BindTime中、基準位置へ移動する| |~|時間経過|BindTimeなどTime系パラメータの残りを-1する?&br()RemoveTimeは不変。代わりに''経過時間''に1加算。&br()※''他は調査不足''| |||| |~その他|>|雑多な処理判定?| |~表示処理|アニメ表示|命令に従ってキャラの描画をする| |~|[[デバッグ]]表示|基本[[デバッグ]]表示を決定する。[[SC-/DisplayToClipboard]]系でない。&br()※デバッグPauseでのFRAMESは停止後+1増えて停止する模様| |~処理完了|フレーム経過|フレームレートが合うよう待機時間を整える。&bR()※フレームレートが高い場合、その分待機せず次フレーム処理へ。| |||| |>|>|~↓&br()フレーム処理完全終了後、次のフレームへ移る&br()↓| ※''あくまで大雑把な推測を含む表なので鵜呑みにしないこと'' ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: