-
Notifications
You must be signed in to change notification settings - Fork 9
AboutFrameProcessing
tickle edited this page Oct 1, 2023
·
20 revisions
English | Japanese
| < オブジェクト構成・ボタン | 疑似フレーム処理仕様 | カスタムjs(スキンjs)による処理割込み > |
- Dancing☆Onigiri (CW Edition)では旧Flashでのフレーム処理を再現するため、
setTimeout を使って制御しています。そのイメージを下記に示します。
- fps=60のとき、1秒間に60フレーム処理できるように1フレームに1/60秒が割り当てられ、その時間で描画や計算処理を行います。余った時間は待ち時間になります。
描画や計算処理が追い付かないときは、後続のフレームで遅れのリカバリーを試みます。
setTimeoutの仕様で、処理が遅れていても4msはウェイトが入ります。
- playbackRate=1以外(例えば低速)の場合、フレーム数を再計算した結果、情報誤差が発生しやすくなることがあります。これを防ぐため、playbackRate=1以外に限り、計算元のフレーム数の小数を許容することで、情報誤差を最小化します。(計算後のフレーム数は整数部に丸められます)
- ロード処理で、各矢印の移動距離を決定します。
表示位置と表示タイミングは、ステップゾーン上の位置から逆算してフレーム毎の移動量を加算して算出します。
移動量が描画エリアを超えるまで逆算され、その距離だけ戻った状態で矢印の描画が開始されます。
- 音楽の再生位置を調整することで、Adjustmentの幅のみ擬似的に0.1フレーム単位で小数フレームを実現しています。音楽再生位置はフレーム数ではなく、ミリ秒で表現できるためです。
- 上記の音楽再生位置、Adjustmentなどの値によって、現在処理しているフレーム位置は変化します。
実際の制作やプレイに支障が出ないように、複数のフレーム(位置)を保持しています。
変数名 | 概要 |
---|---|
g_scoreObj.frameNum | 譜面ヘッダー及び設定画面のAdjustment、補正フレームを反映した実際のフレーム数(位置) |
g_scoreObj.baseFrame | すべての補正フレームを除いた、譜面作成側から見たフレーム数(位置) 演出等で利用することを考慮し、小数フレームは切り捨てる (譜面データで指定したフレーム数と一致) |
- 矢印・フリーズアロー生成/移動(再描画)、速度変化、色変化、背景・マスクモーション、矢印・フリーズアローモーション
- その他、mainEnterFrame上にある情報種
- 音楽再生位置、キー操作イベント(判定位置からの誤差フレーム数はフレーム数に依存)
- adjustment 📝 譜面位置の初期調整
- playbackRate 📝 楽曲再生速度(主にテストプレイ用)
Version | 変更内容 |
---|---|
v23.0.1 | ・譜面データが極端に小さいフレーム数のときにAdjustmentが一部利かない問題を修正(計算式を修正) |
v23.0.0 | ・音楽再生位置の調整により、疑似的に0.1フレーム単位のAdjustmentが使えるよう拡張 |
v1.0.0 | ・初期実装 |
| < オブジェクト構成・ボタン | 疑似フレーム処理仕様 | カスタムjs(スキンjs)による処理割込み > |
- Dancing Onigiri (CW Edition) WikiのテキストはCC BY-SA 4.0の下で利用可能です。
- Dancing Onigiri "CW Edition" Wiki text available under CC BY-SA 4.0.
- Wiki 更新履歴 / History
© 2018 ティックル & Contributors.
English | Japanese
- 譜面ヘッダー仕様 📝
- 譜面本体仕様 📝
- 譜面エフェクト仕様 (速度/ 色/ 背景) 📝
- グラデーション仕様 📝
- 共通設定ファイル仕様 📝
- スキンファイル仕様 📝
- 作品URLのクエリパラメーター仕様 📝
- 譜面データ中の特殊文字の取り扱い 📝
- キーの仕様について 📝
- KeyCtrl属性で使用するキーコード 📝
- 実行時エラー一覧 📝