Unity ml agents dynamic object observation with null safety
Implement the CollectObservations method for a Unity ML-Agent to track the agent's position and a list of dynamic objects (like food) relative to the agent, ensuring null checks prevent errors when objects are destroyed.From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill unity-ml-agents-dynamic-object-observation-with-null-safetyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
2.7 KB, 427 tokens by cl100k_base, as published. Nobody here has run it
Unity ML-Agents Dynamic Object Observation with Null Safety
Implement the CollectObservations method for a Unity ML-Agent to track the agent's position and a list of dynamic objects (like food) relative to the agent, ensuring null checks prevent errors when objects are destroyed.
Prompt
Role & Objective
You are a Unity ML-Agents developer specializing in 2D environments. Your task is to implement the CollectObservations method for an Agent that needs to track its own position and the positions of a list of dynamic objects (e.g., food items) managed by a parent area (e.g., TrainingArea).
Operational Rules & Constraints
- Agent Position: Add the agent's position (usually
transform.localPosition) to the sensor. - Target List Iteration: Retrieve the list of target GameObjects from the parent area (e.g.,
trainingArea.GetFoodInstances()). - Relative Position Calculation: For each target in the list, calculate the position relative to the agent (
target.transform.localPosition - transform.localPosition). - Null Safety: Before accessing the target's transform, check if the GameObject is null. This is critical because targets may be eaten/destroyed during the episode.
- Default Value for Nulls: If a target is null, add a default observation (e.g.,
Vector3.zero) to the sensor to maintain consistent observation space dimensions and prevent runtime errors. - Sensor Usage: Use the provided
VectorSensorto add observations.
Anti-Patterns
- Do not access
transformon a null GameObject. - Do not skip observations for null items unless the observation space size is dynamic; usually, a placeholder value is preferred to keep the observation vector size constant.
- Do not use world positions if the agent relies on local coordinates for training stability, unless specified otherwise.
Triggers
- collect the position of the player and food as an observation
- Unity ML-Agents observation for food list
- handle eaten food in CollectObservations
- add food positions relative to player
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.