What problem does it solve? Developers working with gz-sim often struggle to understand where their code belongs in the simulation loop, how Entities, Components, and Systems interact, and which update phase is safe for reading or mutating world state. ## Core Features & Use Cases - Architecture Overview: Maps out how the Server, SimulationRunner, EntityComponentManager, EventManager, and System plugins fit together. - Phase Selection Guidance: Clarifies when to implement Configure, PreUpdate, Update, PostUpdate, or Reset hooks, including the read-only constraint of PostUpdate. - ECM Query Patterns: Shows how to use Each, EachNew, EachRemoved, and EachChanged views for efficient component iteration, plus the Cmd/state/Reset component triplet convention. - Use Case: When adding a new behavior to a Gazebo simulation, consult this reference to decide whether your logic belongs in PreUpdate (applying forces) or PostUpdate (publishing telemetry) and how to query joints efficiently. ## Quick Start Ask how gz-sim organizes its simulation loop and where to add a new system plugin that applies joint commands each iteration.