Mode d’emploi
- Copiez la commande et examinez le paquet avant de l’installer dans votre environnement agent.
- Consultez le document original pour les outils, identifiants et environnements requis.
- Décrivez les entrées et le livrable souhaité ; comparez la sortie aux sources.
npx skills add https://github.com/thedivergentai/game-design-agentic-skills --skill bevy-state-machinesAvant de commencer
- L’installation n’inclut ni abonnement au modèle, ni quota API, ni accès aux fichiers.
- Étoiles et installations reflètent l’activité, pas un test indépendant de qualité ou de sécurité.
Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.
Bevy state machines
When to use
Load this when the app needs a large-scale mode (paused, in a menu, loading) or when one entity needs a small mode flag. Use bevy::state for the first. Use a component for the second. Do not merge them into one Godot-style state graph.
ECS shape
- App states.
bevy::state: states are app-wide finite state machines. Three types implementStates. - Standard states change only by setting the
NextState<S>resource. SubStatesalso useNextState<S>, and are removed from theWorldwhen source states are not in the required state.ComputedStatesderive from other states through acomputemethod.- Transition schedules.
OnEnter<S>,OnExit<S>, andOnTransition<S>run systems on matching transitions.StateTransitionEvent<S>fires when stateSchanges. Run conditions:in_state<S>andstate_changed<S>. - Entity lifetime.
DespawnOnEnter<S>andDespawnOnExit<S>despawn entities on those transitions (state_scoped). - Feature. The
bevy0.20.0 crate page includesbevy_statein thedefault_appcollection. The state module was opened;Appinstallation method names were not. Do not inventinit_stateor similar. - Per-entity mode. Store an enum in a
Componentand branch in a system (Queryfrom the ECS page). No per-entity state-machine type was opened.
Coming from Godot
| Godot idea | Bevy idiom |
|---|---|
| App mode (menu, pause, play) | A States type and NextState<S> |
| Run logic only in one mode | in_state or an OnEnter / OnExit / OnTransition schedule |
| Child mode that exists only inside a parent mode | SubStates |
| Mode derived from other modes | ComputedStates |
| One actor's animation or combat mode | An enum Component plus a system. Not States unless it is truly app-wide |
Scope
- Check
bevy::state::appfor state installation methods onAppbefore writing them. - The module names states, sub-states, and computed-state examples. Check those examples before writing them.
- Hierarchical per-entity graphs, transition tables, and animation state machines are yours to build. Check the state docs before assuming a built-in type.
Expert Knowledge Delta
Target: Bevy 0.20+.
Core ECS types: Component, Resource, Query, Commands, Startup, Update, Fixed / FixedMain (bevy::time), .chain(), Plugin, DefaultPlugins, MinimalPlugins. Messages and observers are an ownership slot. See bevy-events-messaging for their APIs. Systems run in parallel unless .chain() orders the ones that conflict.
Who owns state
| Piece | Owner | Who may mutate | Schedule |
|---|---|---|---|
| Data on one entity | Component | One system via Query | Update or FixedMain |
| One value for the whole app | Resource | One system | Startup to insert, then the schedule that reads it |
| Spawn | Commands | The spawning system | Startup for the initial world; later schedules for runtime spawn |
| Order that must not race | .chain() | The chained systems only | Same schedule |
| Plugin boundary | Plugin | build registers systems and resources | Before the app runs |
Borrow rule: two systems that both mutably query the same component must be ordered (.chain()) or split so only one writes. Unrelated systems stay parallel. That is the ECS page rule, not a guess at a system-set API.
Decision
| If you need | Do this | Do not |
|---|---|---|
| Per-entity data | Component + Query | A Godot node script |
| App-wide config or clock | Resource | Copy the value onto every entity |
| Stable simulation step | FixedMain and the Fixed clock | Tie simulation to raw frame Update |
| Startup spawn | Commands in Startup | Spawn from a render system |
| Cross-system notice that is not shared state | Message or observer slot in bevy-events-messaging | A new event type invented in this file |
| An API outside the documented set | Check the official docs first | A made-up crate or API |
Load references/ecs-ownership.md for the ownership table.
NEVER
- Do not pin
/0.20.0/in docs URLs. WHY: links stay onlatest; the 0.20 target is stated once in prose. - Do not mutably query the same component from two unordered systems. WHY: the schedule runs systems in parallel unless
.chain()orders them. - Do not invent a physics, navigation, networking, or XR crate here. WHY: this skill only names documented Bevy crates and modules.
- No Godot animation-tree or node state-machine types. WHY: Bevy code stays idiomatic ECS and uses only documented Bevy APIs.
- No invented
Appstate-setup methods. WHY: Bevy code stays idiomatic ECS and uses only documented Bevy APIs. - No third-party crates. WHY: Bevy code stays idiomatic ECS and uses only documented Bevy APIs.
Reference
docs.rs links use the unversioned latest permalink. The library pin on bevy-master stays 0.20.0.
Official Documentation
- Migration guides - Unversioned hop index.
- bevy crate -
bevy_stateships inside thedefault_appcollection. - bevy::state -
States,NextState,SubStates,ComputedStates, transition schedules,StateTransitionEvent,in_state,state_changed,DespawnOnEnter,DespawnOnExit. - Quick Start: ECS -
ComponentandQueryfor a per-entity mode flag. - Examples - Example tree on the
latestbranch. State examples live in that tree.
Related Skills
Prerequisites
- bevy-master - Schedules versus a scene tree.
- bevy-data-resources -
NextState<S>is a resource. Per-entity modes are components.
Complements
- bevy-events-messaging - Messages and observers that are not state transitions.
- godot-state-machine-advanced - Equivalent Godot skill. Do not import Godot types.
Downstream / consumers
- bevy-character-movement - Actor motion. A jump or ground mode stays a component unless a mode needs
States.
Master
- bevy-master - Bevy router.




