Skip to main content
Stormworks のロジックは、決まった順序で毎ティック評価される同期回路として動作します。この仕組みを理解すると、回路のクロックや積分器を狙って作れるようになります。

ゲームティックの構造

1 ゲームティックは 60Hz 固定(1/60 秒)で進み、次の順序で処理されます。
1

センサー評価

物理状態を読み取り、センサーの出力値を更新します。
2

ロジック評価

ロジックブロック・マイクロコントローラー内部回路・Lua スクリプトを評価し、次の出力値を確定します。同時にアクチュエータへの目標値も決定します。
3

物理更新

物理エンジンが更新されます。品質設定に応じて 1 ティックの中で複数回のサブステップに分割されます(低品質 = 1 回、標準 = 2 回、高品質 = 3 回)。アクチュエータの目標値はティック内で固定され、全サブステップに同じ値が適用されます。
ロジック・Lua の評価は 1 ゲームティックに1回だけです。物理のサブステップごとに再評価されることはありません。
処理が間に合わない場合、ゲームの進行速度そのものが遅くなります(タイムディレーション)。抜け落ちたティックを後から詰め込んで帳尻を合わせることはありません。

同期回路モデル

すべてのロジックブロックは、入力を読む際に前ティックの値を参照します。 これはマイクロコントローラー内部でも車両レベルの配線でも同じです。全ブロックが同時に評価され、あるブロックの出力は次のティックになって初めて下流のブロックから見えるようになります。 つまり、信号は 1ブロックを通過するごとに1ティック遅延します。 信号の総遅延は、信号が通過する直列ブロック数で決まります。並列に分岐した経路は加算されません。

具体例

NOT ゲートの自己帰還 → クロック

NOT ゲートの出力を自分自身の入力に接続すると、毎ティック出力が反転する 30Hz のクロック信号になります。

Add ゲートの自己帰還 → 積分器

Add ゲートの出力を入力 A へ接続し、入力 B に定数 1 を与えると、毎ティック 1 ずつ増加する積分器(累算器)になります。

マイクロコントローラー経由でも追加遅延はない

マイクロコントローラーの入出力ピンを通過すること自体は、遅延を発生させません。
マイクロコントローラーをまたいで信号が流れる場合も、通過する直列ゲート数だけで遅延が決まります。
60 個のゲートを直列に通過する信号は、ちょうど 1 秒(60Hz × 1ティック/ゲート)で伝わります。