Skills

Bevy Data Resources

Place Bevy 0.20 gameplay data on a Component or a Resource.

Install

npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill bevy-data-resources -g -a claude-code -y
Category
Engineering
Updated
19d ago
License
LGPL-3.0
Context cost
Mediumabout 1,986 tokens
Runs scripts
No, instructions only

What it does

Place Bevy 0.20 gameplay data on a Component or a Resource. Use when choosing Query versus Res/ResMut, insert_resource, Time and Timer, or a RON/asset handle stored once for the app. Keywords: Bevy, Resource, Res, ResMut, Component, Timer, AssetServer.

Bevy data resources

When to use

Load this when you are deciding where a piece of data lives: on many entities, or once for the whole app. The Resources page and the ECS page are the source for the names below.

ECS shape

  • Components are for data you query across entities (Component, Query). Use them when many things carry the same kind of fields.
  • Resources are globally unique data (Resource). The Resources page names elapsed time, asset collections, and renderers as examples. Access them with Res<T> (read) and ResMut<T> (write).
  • Insert. insert_resource places a resource on the App. The page's sample derives Resource on GreetTimer(Timer) and inserts Timer::from_seconds(2.0, TimerMode::Repeating).
  • Time. Time is inserted by add_plugins(DefaultPlugins). time.delta() is the elapsed time since the last update. Timer::tick and just_finished are the page's timer methods.
  • Schedule: The sample reads Res<Time> and ResMut<GreetTimer> inside an Update system. Startup versus update is on the ECS page.

A resource can hold asset handles loaded through AssetServer. The handles are data; the loader stays on the asset server.

Where data lives

NeedBevy idiom
Data on one gameplay thingA Component
One copy for the whole appA Resource inserted with insert_resource
Shared clockTime from DefaultPlugins, or your own Resource
Authored data fileserde plus ron::from_str into a Resource, or Handle<Mesh> from AssetServer

Scope

  • Handles, RON tables, and plugin insert_resource calls are in the examples below.
  • Per-entity data files and save blobs are out of scope. See bevy-save-load.
[package]
name = "data-resources"
version = "0.1.0"
edition = "2021"

[dependencies]
bevy = "0.20"
serde = { version = "1", features = ["derive"] }
ron = "0.10"

One greet timer resource, ticked from Time on Update.

Read the whole SKILL.md on GitHub

More in Engineering