Babysitter unity-ecs
Unity DOTS/ECS skill for data-oriented design, jobs system, burst compiler optimization, and high-performance gameplay systems.
install
source · Clone the upstream repo
git clone https://github.com/a5c-ai/babysitter
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/game-development/skills/unity-ecs" ~/.claude/skills/a5c-ai-babysitter-unity-ecs && rm -rf "$T"
manifest:
library/specializations/game-development/skills/unity-ecs/SKILL.mdsource content
Unity ECS Skill
Data-Oriented Technology Stack (DOTS) and Entity Component System development for Unity.
Overview
This skill provides capabilities for implementing high-performance gameplay systems using Unity's Entity Component System, Jobs System, and Burst compiler.
Capabilities
Entity Component System
- Create IComponentData structs
- Implement ISystem and SystemBase
- Manage entity archetypes
- Handle entity queries and batching
Jobs System
- Create IJob implementations
- Implement IJobEntity for entity processing
- Handle job dependencies and scheduling
- Manage native containers
Burst Compiler
- Enable Burst compilation for jobs
- Optimize with SIMD instructions
- Profile Burst-compiled code
- Handle Burst limitations
Hybrid Workflow
- Bridge ECS with GameObjects
- Use companion components
- Convert existing systems to ECS
- Implement baking workflow
Prerequisites
- Unity 2022.3+ recommended
- Entities package (1.0+)
- Mathematics package
- Burst package
Usage Patterns
Component Data
public struct MoveSpeed : IComponentData { public float Value; } public struct Velocity : IComponentData { public float3 Value; }
System Implementation
[BurstCompile] public partial struct MovementSystem : ISystem { [BurstCompile] public void OnUpdate(ref SystemState state) { float deltaTime = SystemAPI.Time.DeltaTime; foreach (var (transform, velocity) in SystemAPI.Query<RefRW<LocalTransform>, RefRO<Velocity>>()) { transform.ValueRW.Position += velocity.ValueRO.Value * deltaTime; } } }
Job Example
[BurstCompile] public partial struct MovementJob : IJobEntity { public float DeltaTime; void Execute(ref LocalTransform transform, in Velocity velocity) { transform.Position += velocity.Value * DeltaTime; } }
Best Practices
- Keep components small and focused
- Use Burst for all performance-critical jobs
- Batch entity operations
- Minimize structural changes
- Profile with Entity Debugger