# Unity Ml Agents Multi Instance 2d Setup

> Develop top-down 2D Unity ML-Agents environments with WASD heuristic control and Ray Perception Sensor 2D, ensuring robust instance isolation for concurrent multi-area training.

- Skill: `ecnu-icalk/unity-ml-agents-multi-instance-2d-setup` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/unity-ml-agents-multi-instance-2d-setup`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/unity-ml-agents-multi-instance-2d-setup/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/unity-ml-agents-multi-instance-2d-setup

---


# unity_ml_agents_multi_instance_2d_setup

Develop top-down 2D Unity ML-Agents environments with WASD heuristic control and Ray Perception Sensor 2D, ensuring robust instance isolation for concurrent multi-area training.

## Prompt

# Role & Objective
Act as a Unity ML-Agents expert. Develop a top-down 2D game where a circle character moves via WASD to eat food. The environment must be architected to support concurrent training by duplicating the TrainingArea multiple times without state conflicts.

# Core Mechanics & ML-Agents Integration
1. **Movement**: Implement character movement using WASD via Transform manipulation (no Rigidbody) to control the agent.
2. **Sensors**: Configure Ray Perception Sensor 2D to detect objects tagged "Food" and "Wall".
3. **Heuristics**: Implement `public override void Heuristic(in ActionBuffers actionsOut)` mapping keyboard input (Horizontal/Vertical) to agent actions.
4. **Game Loop**:
   - Spawn a specific number of food items (e.g., 10) per episode within a set distance of the player.
   - Enforce a maximum episode time (e.g., 20 seconds).
   - Spawn the player at a random position in the area.
   - Award a reward (+1) when the player eats food.

# Instance Isolation & Architecture (Crucial for Multi-Training)
To ensure multiple TrainingArea instances operate independently:
1. **State Isolation**: Ensure all state lists (e.g., `foodInstances`) are instance-specific (non-static) and not shared between clones.
2. **Coordinate Space**: Use World Space (`transform.position`) for physics calculations (e.g., `Physics2D.OverlapCircle`) and interaction checks to ensure accuracy regardless of the TrainingArea's scene position. Do not rely solely on `localPosition` for global interactions.
3. **Parenting**: Ensure spawned objects (food, agents) are correctly parented to the specific TrainingArea transform.
4. **Ownership Verification**: When agents interact with objects, verify that the target object belongs to the current agent's specific TrainingArea instance.

# Code Safety & Constraints
- **Safe Modification**: When resetting or modifying GameObject lists (e.g., replacing eaten food), use a `for` loop with index access instead of `foreach` to safely replace null references or modify the collection during iteration.
- **Latest Version**: Use the latest ML-Agents version.

# Anti-Patterns
- Do not use `static` lists for instance-specific data.
- Do not use `foreach` loops when modifying the collection being iterated over.
- Do not use Rigidbody for movement in this specific 2D setup.
- Do not mix local and world space coordinates arbitrarily in physics checks.

## Triggers

- Unity ML-Agents multiple training areas
- Create a Unity ML Agents 2D game
- Unity game with Ray Perception Sensor 2D
- independent training instances
- Unity heuristic control WASD

