mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-10-16 01:37:05 +00:00
Release 1.1.2 — the default path works end to end
Fix release for 1.1.1: the minimal path end to end, engine commands that run on Godot, Unity and Unreal, hook warnings you can see, and verdicts that say when they could not check. Details in CHANGELOG.md; upgrade steps in UPGRADING.md (v1.1.1 → v1.1.2). Fixes #67 Fixes #131 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuJn2FdynEybfL5KC697nJ
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
7ed2c3e9c4
commit
b21fa0f7f2
@@ -53,7 +53,7 @@ Changes between Godot versions, focused on post-LLM-cutoff changes (4.4+).
|
||||
| Core | `OS.execute_with_pipe` | Added optional `blocking` parameter |
|
||||
| Core | `RegEx.compile/create_from_string` | Added optional `show_error` parameter |
|
||||
| Rendering | `RenderingDevice.draw_list_begin` | Many parameters removed; `breadcrumb` parameter added |
|
||||
| Rendering | Shader texture types | Parameter/return types changed from `Texture2D` to `Texture` |
|
||||
| Rendering | `Shader.set_default_texture_parameter()` / `get_default_texture_parameter()` | Parameter/return type changed from `Texture2D` to `Texture`; the shading language did not change |
|
||||
| Particles | `.restart()` method | Added optional `keep_seed` parameter (CPU/GPU 2D/3D) |
|
||||
| GUI | `RichTextLabel.push_meta` | Added optional `tooltip` parameter |
|
||||
| GUI | `GraphEdit.connect_node` | Added optional `keep_alive` parameter |
|
||||
|
||||
@@ -7,21 +7,36 @@ This supplements (not replaces) the agent's built-in knowledge.
|
||||
|
||||
## GDScript (4.5+)
|
||||
|
||||
- **Variadic arguments**: Functions can accept arbitrary parameter counts
|
||||
- **Variadic arguments**: Functions can accept arbitrary parameter counts. The
|
||||
rest parameter is written `...name`, comes last, and is typed `Array` or left
|
||||
untyped — `values: Variant...` and `...values: Array[int]` do not parse
|
||||
```gdscript
|
||||
func log_values(prefix: String, values: Variant...) -> void:
|
||||
func log_values(prefix: String, ...values: Array) -> void:
|
||||
for v in values:
|
||||
print(prefix, ": ", v)
|
||||
```
|
||||
|
||||
- **Lambdas capture local variables by value** (every Godot 4 version): a local
|
||||
is captured once, when the lambda is created, and a lambda cannot reassign an
|
||||
outer local — `var hit := false` / `func(): hit = true` leaves the caller's
|
||||
`hit` false. Share state through a reference type (a Dictionary, an Array or
|
||||
an object) and mutate its contents. A rest parameter works in a lambda too, so
|
||||
`func(...args)` connects to a signal with any number of arguments (observed on
|
||||
4.6.1; a one-argument lambda on a zero-argument signal errors "Method expected
|
||||
1 argument(s), but called with 0")
|
||||
```gdscript
|
||||
var state := {"emitted": false}
|
||||
some_signal.connect(func(...args): state.emitted = true)
|
||||
```
|
||||
|
||||
- **Abstract classes and methods**: Use `@abstract` to enforce inheritance
|
||||
```gdscript
|
||||
@abstract
|
||||
class_name BaseEnemy extends CharacterBody3D
|
||||
|
||||
@abstract
|
||||
func get_attack_pattern() -> Array[Attack]:
|
||||
pass # Subclasses MUST override
|
||||
# No body: "a newline or a semicolon is expected after the function header".
|
||||
# Subclasses MUST override it.
|
||||
@abstract func get_attack_pattern() -> Array[Attack]
|
||||
```
|
||||
|
||||
- **Script backtracing**: Detailed call stacks available even in Release builds
|
||||
@@ -99,6 +114,49 @@ This supplements (not replaces) the agent's built-in knowledge.
|
||||
`rg --type gdscript` is a hard error — the search never executes.
|
||||
Always use `rg --glob "*.gd"` (shell) or `glob: "*.gd"` (Grep tool) to filter GDScript files.
|
||||
|
||||
## Command Line — Tests and Parse Check
|
||||
|
||||
Flags, from Godot's command-line tutorial: `--headless` (headless display and a
|
||||
dummy audio driver, "useful for servers and with `--script`"), `--path <dir>`
|
||||
(a directory holding `project.godot`), `-s`/`--script <script>`, `-d`/`--debug`
|
||||
(the local stdout debugger), `--remote-debug <protocol>://<host>[:<port>]`,
|
||||
`--import` (starts the editor, waits for the import, and quits),
|
||||
`--quit-after <n>` (iterations), `--export-debug <preset>` (implies `--import`)
|
||||
and `--check-only` (parse for errors and quit, with `--script`). The editor is
|
||||
not on `PATH` by default: on Windows and Linux run the binary by its relative or
|
||||
absolute path; on macOS run `Godot.app/Contents/MacOS/Godot` inside the bundle.
|
||||
|
||||
gdUnit4's runner is `res://addons/gdUnit4/bin/GdUnitCmdTool.gd`; `-a <dir|suite>`
|
||||
adds suites, reports go to `res://reports/` by default (`-rd` changes it), and
|
||||
the documented exit codes are 0 (all passed), 100 (failures) and 101 (warnings).
|
||||
The command the framework uses:
|
||||
`godot --headless -s -d --remote-debug tcp://127.0.0.1:0 res://addons/gdUnit4/bin/GdUnitCmdTool.gd -a res://tests --ignoreHeadlessMode`.
|
||||
|
||||
Observed on Godot 4.6.1 with gdUnit4 6.1.3 — not in the docs:
|
||||
- 101 is also the exit when every test passed but a test leaked orphan nodes;
|
||||
105 means a test script does not parse; 103 means gdUnit4 refused to run
|
||||
headless (`--ignoreHeadlessMode` missing). 104 is gdUnit4 refusing a Godot
|
||||
older than 4.3 — not reproducible on the pin.
|
||||
- Over zero tests the runner prints `No test cases found` and exits 0.
|
||||
- Without `--remote-debug tcp://127.0.0.1:0`, a script error opens the `-d`
|
||||
debugger and the run waits at a `debug>` prompt; with it, every run prints two
|
||||
`ERROR:` lines about the remote port, which are expected.
|
||||
- A fresh clone has no `.godot/` class cache: run
|
||||
`godot --headless --path . --import` first, or `GdUnitCmdTool.gd` does not
|
||||
load and the run exits 1 having run nothing.
|
||||
- `--check-only` with `-s <file>` exits 1 on valid code that names an autoload
|
||||
(`Identifier not found`), and `--import` / `--quit-after` exit 0 on a parse
|
||||
error — neither is a parse check. The framework's parse check is
|
||||
`godot --headless --path . -s res://.claude/scripts/godot-parse-check.gd -- res://<file>.gd …`
|
||||
(exit 1 when a script does not load).
|
||||
- On Windows, a quoted full path to the editor (`"C:/Program Files/Godot/…exe"`)
|
||||
runs from Git Bash with its stdout and exit code intact.
|
||||
|
||||
Sources:
|
||||
- Command line tutorial: https://docs.godotengine.org/en/stable/tutorials/editor/command_line_tutorial.html
|
||||
- gdUnit4 command line tool: https://godot-gdunit-labs.github.io/gdUnit4/latest/advanced_testing/cmd/
|
||||
- GDScript reference, lambda functions and rest parameters: https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html
|
||||
|
||||
## Platform (4.5+)
|
||||
|
||||
- **visionOS export**: First new platform since open-sourcing (windowed app mode)
|
||||
|
||||
@@ -38,6 +38,6 @@ with the "Use Instead" column.
|
||||
| String-based `connect()` | Typed signal connections | Type-safe, refactor-friendly |
|
||||
| `$NodePath` in `_process()` | `@onready var` cached reference | Performance: path lookup every frame |
|
||||
| Untyped `Array` / `Dictionary` | `Array[Type]`, typed variables | GDScript compiler optimizations |
|
||||
| `Texture2D` in shader parameters | `Texture` base type | Changed in 4.4 |
|
||||
| `Texture2D` in `Shader.set_default_texture_parameter()` / `get_default_texture_parameter()` | `Texture` base type | Changed in 4.4; the shading language's `sampler2D` / `texture()` did not change |
|
||||
| Manual post-process viewport chains | `Compositor` + `CompositorEffect` | Structured post-processing (4.3+) |
|
||||
| GodotPhysics3D for new projects | Jolt Physics 3D | Default since 4.6; better stability |
|
||||
|
||||
@@ -19,7 +19,9 @@ Last verified: 2026-02-12 | Engine: Godot 4.6
|
||||
|
||||
### 4.4 Changes
|
||||
- **`RenderingDevice.draw_list_begin`**: Many parameters removed; optional `breadcrumb` added
|
||||
- **Shader texture types**: Changed from `Texture2D` to `Texture` base type
|
||||
- **`Shader` default-texture methods**: `set_default_texture_parameter()` takes and
|
||||
`get_default_texture_parameter()` returns `Texture`, not `Texture2D` (the shading
|
||||
language's `sampler2D` / `texture()` did not change)
|
||||
- **Particles `.restart()`**: Added optional `keep_seed` parameter
|
||||
|
||||
### 4.3 Changes (in training data)
|
||||
@@ -55,5 +57,7 @@ Windows default backend: D3D12 (was Vulkan pre-4.6)
|
||||
## Common Mistakes
|
||||
- Assuming Vulkan is the default backend on Windows (D3D12 since 4.6)
|
||||
- Using manual viewport chains instead of Compositor for post-processing
|
||||
- Using `Texture2D` in shader uniform types (use `Texture` since 4.4)
|
||||
- Passing or expecting `Texture2D` in `Shader.set_default_texture_parameter()` /
|
||||
`get_default_texture_parameter()` (the type is `Texture` since 4.4 — the shading
|
||||
language's `sampler2D` / `texture()` did not change)
|
||||
- Not using Shader Baker for projects with many shader variants
|
||||
|
||||
Reference in New Issue
Block a user