home / skills / a5c-ai / babysitter / unity-ecs

This skill helps you implement high performance gameplay using Unity DOTS ECS, Jobs, and Burst for efficient data-oriented systems.

npx playbooks add skill a5c-ai/babysitter --skill unity-ecs

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
2.5 KB
---
name: unity-ecs
description: Unity DOTS/ECS skill for data-oriented design, jobs system, burst compiler optimization, and high-performance gameplay systems.
allowed-tools: Read, Grep, Write, Bash, Edit, Glob, WebFetch
---

# 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

```csharp
public struct MoveSpeed : IComponentData
{
    public float Value;
}

public struct Velocity : IComponentData
{
    public float3 Value;
}
```

### System Implementation

```csharp
[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

```csharp
[BurstCompile]
public partial struct MovementJob : IJobEntity
{
    public float DeltaTime;

    void Execute(ref LocalTransform transform, in Velocity velocity)
    {
        transform.Position += velocity.Value * DeltaTime;
    }
}
```

## Best Practices

1. Keep components small and focused
2. Use Burst for all performance-critical jobs
3. Batch entity operations
4. Minimize structural changes
5. Profile with Entity Debugger

## References

- [Unity DOTS Documentation](https://docs.unity3d.com/Packages/com.unity.entities@latest)
- [Burst Manual](https://docs.unity3d.com/Packages/com.unity.burst@latest)

Overview

This skill helps implement high-performance gameplay systems in Unity using DOTS, the Entity Component System, Jobs System, and Burst compiler. It focuses on data-oriented design patterns, safe multithreading with jobs, and low-level optimizations for tight CPU-bound workloads. The skill covers hybrid workflows to integrate ECS with existing GameObject code and conversion/baking patterns.

How this skill works

It inspects code and project structure to recommend or generate IComponentData, ISystem/SystemBase implementations, and job types (IJob, IJobEntity). It highlights opportunities for Burst compilation, SIMD-friendly math, and safe use of native containers while tracking job dependencies and minimizing structural changes. It can propose or validate component layouts, entity queries, batching strategies, and conversion patterns for hybrid workflows.

When to use it

  • When you need deterministic, high-throughput simulation for large numbers of entities (hundreds to millions).
  • When converting CPU-bound GameObject logic to a data-oriented ECS implementation.
  • When you want to leverage Burst and Jobs to reduce frame time and improve multithreading utilization.
  • When designing systems that require minimal GC pressure and predictable memory layout.
  • When implementing server-side or gameplay simulation where determinism and performance matter.

Best practices

  • Keep components small, focused, and trivially copyable to enable fast memory access.
  • Favor readonly access and batch queries to reduce synchronizations and cache misses.
  • Use Burst for performance-critical jobs and annotate with BurstCompile while testing fallback paths.
  • Minimize structural changes (AddComponent/RemoveComponent) inside tight loops; defer to command buffers.
  • Profile with the Entity Debugger, CPU profiler, and Burst inspector to verify real-world gains.

Example use cases

  • Implementing high-speed movement, collision, or flocking systems using IJobEntity and Burst.
  • Converting an existing flocking or particle system from GameObjects to Entities for massive scale.
  • Building server-side deterministic simulations with minimal GC and predictable frame cost.
  • Optimizing AI steering, pathfinding, or physics preprocessing using SIMD-friendly math.
  • Creating hybrid scenes where GameObjects drive visuals while heavy simulation runs in ECS.

FAQ

Which Unity versions and packages are required?

Use Unity 2022.3+ with Entities (1.0+), Burst, and Mathematics packages for full compatibility.

When should I avoid Burst or Jobs?

Avoid Burst for code that needs dynamic managed objects, reflection, or frequent structural changes; profile to confirm overhead justifies multithreading.