115 lines
4.5 KiB
Markdown
115 lines
4.5 KiB
Markdown
# AGENTS
|
|
|
|
This file gives AI coding agents the minimum project context needed to work safely and productively in this Unity repository.
|
|
|
|
## Project Snapshot
|
|
|
|
- Unity editor version: 6000.5.6f1 (see [ProjectSettings/ProjectVersion.txt](ProjectSettings/ProjectVersion.txt)).
|
|
- Project type: Unity 2D game remake (see [README.md](README.md)).
|
|
- Input stack: Unity Input System package is enabled (see [Packages/manifest.json](Packages/manifest.json)).
|
|
|
|
## First Checks Before Editing
|
|
|
|
1. Read [ProjectSettings/ProjectVersion.txt](ProjectSettings/ProjectVersion.txt) and target that editor version.
|
|
2. Read [Packages/manifest.json](Packages/manifest.json) for package-provided APIs before introducing new types.
|
|
3. Do not edit generated folders or files listed in [.gitignore](.gitignore).
|
|
|
|
## Linux Build and Test Commands
|
|
|
|
Set a Unity executable path first (prefer your local Unity Hub install):
|
|
|
|
```bash
|
|
UNITY="${UNITY:-/home/$USER/Unity/Hub/Editor/6000.5.6f1/Editor/Unity}"
|
|
PROJECT="/home/mse/Documentos/Unity Projects/Barrack Unity"
|
|
```
|
|
|
|
Open project:
|
|
|
|
```bash
|
|
"$UNITY" -projectPath "$PROJECT"
|
|
```
|
|
|
|
Batch build (Linux player):
|
|
|
|
```bash
|
|
"$UNITY" \
|
|
-batchmode -quit \
|
|
-projectPath "$PROJECT" \
|
|
-buildTarget StandaloneLinux64 \
|
|
-buildLinux64Player "$PROJECT/Build/Barrack.x86_64" \
|
|
-logFile "$PROJECT/Logs/build.log"
|
|
```
|
|
|
|
EditMode tests:
|
|
|
|
```bash
|
|
"$UNITY" \
|
|
-batchmode -quit \
|
|
-projectPath "$PROJECT" \
|
|
-runTests -testPlatform EditMode \
|
|
-testResults "$PROJECT/test-results-editmode.xml" \
|
|
-logFile "$PROJECT/Logs/tests-editmode.log"
|
|
```
|
|
|
|
PlayMode tests:
|
|
|
|
```bash
|
|
"$UNITY" \
|
|
-batchmode -quit \
|
|
-projectPath "$PROJECT" \
|
|
-runTests -testPlatform PlayMode \
|
|
-testResults "$PROJECT/test-results-playmode.xml" \
|
|
-logFile "$PROJECT/Logs/tests-playmode.log"
|
|
```
|
|
|
|
Notes:
|
|
- If no tests exist yet, test runs may complete with zero tests.
|
|
- Do not treat [Assembly-CSharp.csproj](Assembly-CSharp.csproj) as source of truth; Unity regenerates it.
|
|
|
|
## Key Code Areas
|
|
|
|
- [Assets/Scripts/Game](Assets/Scripts/Game): gameplay loop, board, filling logic, UI, level flow.
|
|
- [Assets/Scripts/Game/Balls](Assets/Scripts/Game/Balls): ball hierarchy and shared physics behavior.
|
|
- [Assets/Scripts/Game/Player](Assets/Scripts/Game/Player): player movement, bars, laser behavior.
|
|
- [Assets/Scripts/Game/Spawners](Assets/Scripts/Game/Spawners): timed entity spawners.
|
|
- [Assets/Scripts/Game/Yummies](Assets/Scripts/Game/Yummies): collectibles and rewards.
|
|
- [Assets/Scripts/MainMenu](Assets/Scripts/MainMenu): menu flow and scene loading.
|
|
- [Assets/Scripts/Utils](Assets/Scripts/Utils): reusable helpers.
|
|
|
|
## Project Conventions
|
|
|
|
- One class per file; class name matches file name.
|
|
- No namespaces in project scripts.
|
|
- PascalCase for classes/methods; camelCase for fields/locals.
|
|
- Many Inspector-assigned dependencies are public fields.
|
|
- Lifecycle and coroutine patterns follow standard Unity `Start`, `Update`, `FixedUpdate`, and `IEnumerator` usage.
|
|
- Prefer existing Input System patterns over legacy `Input` APIs.
|
|
|
|
## Unity Safety Rules
|
|
|
|
- Preserve `.meta` files and GUIDs when moving/renaming assets.
|
|
- Treat scenes and prefabs as serialized contracts: renaming serialized fields, components, tags, or animator parameters can silently break references.
|
|
- Keep runtime string contracts in sync:
|
|
- scene names (for example in [Assets/Scripts/MainMenu/MenuCallbackHolder.cs](Assets/Scripts/MainMenu/MenuCallbackHolder.cs)),
|
|
- animator states/triggers/bools,
|
|
- `Resources.Load` paths (for example in [Assets/Scripts/Game/GameBoard.cs](Assets/Scripts/Game/GameBoard.cs)).
|
|
- Current scene build order lives in [ProjectSettings/EditorBuildSettings.asset](ProjectSettings/EditorBuildSettings.asset).
|
|
|
|
## Common Failure Patterns (Seen In Prior Sessions)
|
|
|
|
- Missing Inspector references leading to `NullReferenceException` at runtime.
|
|
- Animator transition or trigger mismatches causing entities to remain in wrong states.
|
|
- Type/namespace mismatches when using package APIs.
|
|
|
|
When adding fields or animator parameters, include defensive null checks and keep names synchronized with scene/prefab/controller data.
|
|
|
|
## Useful References
|
|
|
|
- [README.md](README.md)
|
|
- [ProjectSettings/ProjectVersion.txt](ProjectSettings/ProjectVersion.txt)
|
|
- [Packages/manifest.json](Packages/manifest.json)
|
|
- [Packages/packages-lock.json](Packages/packages-lock.json)
|
|
- [ProjectSettings/EditorBuildSettings.asset](ProjectSettings/EditorBuildSettings.asset)
|
|
- [Assets/InputSystem_Actions.inputactions](Assets/InputSystem_Actions.inputactions)
|
|
- [.vscode/launch.json](.vscode/launch.json)
|
|
- [.gitignore](.gitignore) |