wave5-fixed-step-simulation-system-group

Schedule Unity DOTS systems with UpdateBefore and UpdateAfter relative to PhysicsSystemGroup.

6|Updated Apr 2, 2026
One-click install
npx skills add https://github.com/dyCuong03/unity-agent-team --skill wave5-fixed-step-simulation-system-group
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: wave5-fixed-step-simulation-system-group
Source: https://github.com/dyCuong03/unity-agent-team/tree/main/.claude/skills/unity-dots/wave5-fixed-step-simulation-system-group
Command: npx skills add https://github.com/dyCuong03/unity-agent-team --skill wave5-fixed-step-simulation-system-group

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

It prevents physics-affecting systems from running in the wrong place relative to the FixedStepSimulationSystemGroup and the underlying PhysicsSystemGroup/sub-groups, which can lead to incorrect forces, missed events, or mis-timed collision/trigger handling.

Core Features & Use Cases

  • Correct scheduling: Ensures force/impulse logic runs before the physics build/solve while event-reading logic runs after the physics simulation.
  • Phase-appropriate placement: Guides you to use UpdateBefore/UpdateAfter with PhysicsSystemGroup vs PhysicsSimulationGroup as appropriate for the data you read.
  • Fixed-timestep safety: Helps avoid render-rate assumptions and reduces runtime risks from multiple fixed ticks per frame.

Quick Start

Use FixedStepSimulationSystemGroup for physics-rate systems and place force systems with UpdateBefore(PhysicsSystemGroup) and event processing systems with UpdateAfter(PhysicsSimulationGroup).

Frequently Asked Questions about wave5-fixed-step-simulation-system-group

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I order fixed-step physics systems correctly in Unity DOTS?

Order fixed-step physics systems by scheduling force logic with UpdateBefore(PhysicsSystemGroup) and event processing with UpdateAfter(PhysicsSimulationGroup) inside FixedStepSimulationSystemGroup. This ensures forces apply before the solver and event reads happen after physics simulation.

Why are collision events missed in my Unity DOTS fixed-step simulation?

Collision events are missed when physics systems run in the wrong order relative to PhysicsSystemGroup. You must schedule collision/trigger event reading logic with UpdateAfter(PhysicsSimulationGroup) so it executes after the solver completes.

When do I use UpdateBefore(PhysicsSystemGroup) vs UpdateAfter(PhysicsSimulationGroup) in ECS?

Use UpdateBefore(PhysicsSystemGroup) for pre-solve logic that writes physics state like PhysicsVelocity, and UpdateAfter(PhysicsSimulationGroup) for post-solve logic that reads solver results such as collision or trigger events during fixed-timestep simulation.

Can I read collision events and apply forces in the same Unity DOTS system?

Reading collision events and applying forces in the same system breaks physics ordering. Force writing requires UpdateBefore(PhysicsSystemGroup) while event reading requires UpdateAfter(PhysicsSimulationGroup), so they must be split into separate bursted systems to maintain correct scheduling.

Why does my fixed-step physics logic behave inconsistently across different frame rates?

Fixed-step physics logic behaves inconsistently when render-rate assumptions leak into the fixed-step loop. Multiple fixed ticks can occur per frame, so systems must be scheduled inside FixedStepSimulationSystemGroup and avoid render-rate logic to ensure stable simulation timing.

What is the correct system group for physics-rate logic in Unity ECS?

The correct system group for physics-rate logic is FixedStepSimulationSystemGroup. Placing physics-affecting systems here ensures they run at the fixed timestep and can be properly ordered relative to PhysicsSystemGroup and its sub-groups using UpdateBefore and UpdateAfter attributes.