"イベントの発生タイミング"がどうなるのか
この記事の執筆時点では、まだサーバーにアップされてはいないようですが、I.MAGIC Blogで告示のあったアップデータ(v5.0.8.116?)では、時間系イベントの発生するタイミングが変わるそうです。
従来、
- 入力フェーズ
- (イベント発生)
- 座標演算
- 描画
のサイクルで動いていたものが、マニュアルによれば
- 入力フェーズ
- 座標演算
- (イベント発生)
- 描画
の順に変わるということです。この1サイクルにおよそ17ミリ秒ほど時間がかかります。1秒間に約60回このサイクルが繰り返されます。(60fpsの意味)
この変更が何に影響してくるかというと、アレです。
今までの仕様では、この速度によるズレを回避するために、座標の修正の目安として「前のフレームと今のフレームの移動距離」を加味してエミッターをアタッチする方法(一次近似)がありました。するとこうなります。
(厳密には、「今のフレーム」はイベントの処理を行なっている段階で既に数ミリ秒前の座標が反映された絵になっています。)
今回の仕様変更では、Timerイベントが呼び出された時点で、次のフレームで車両が出てくる座標が取り出せるようになったので、エミッターの座標補正を掛ける必要がなくなりました。
従来は、そのままやるとエミッターが1フレーム分過去の位置に出てきた(ので、1フレーム未来を一次近似していた)
のが、
そのままやっても正しい座標における
ようになったというわけです。
「座標補正」を行っていた頃の、「加減速時にやっぱりエミッターがずれる」現象も今回の変更でなくなるということのようです。
USO800鉄道さんの実証によると直ったわけではないようなので、deleteしておきました。こちらでも折って検証し結果を報告します。
う~ん伝わらないんだろうなぁ・・・@
ところで、気になる互換性の問題。
旧バージョンで保存されたレイアウトは、従来のタイミングで全く同じようにイベントが処理されるということですが、スクロールはどうなるのよ。(もちろん、上のケースではバグが出ます。エミッターが先走りします)
今回の仕様変更に直撃パンチを食らってバグるようなスクロールはいまパッとは思いつきませんが、こういう仕様変更って微妙にイヤなんですよね…。
| 固定リンク
「VRM:研究」カテゴリの記事
- VRMNXの時間系イベントが使いにくいなあと思っているアナタへ(2019.12.24)
- [VRMNX] フレーム同期の話(2019.07.18)
- [Python] リスト型をベクトルに見立てて計算したい(2019.06.16)
- VRMNXのレイヤーベース地形を使ってみよう(前編)(2019.05.18)
- [VRMNX]自動踏切モジュール(2019.01.25)
この記事へのコメントは終了しました。


コメント