Files
builds/.agents/skills/update-engine/SKILL.md
T
ozan b0810fbdfd engine(macos-arm64): 4.7 native-module build + ship GodotSharp; add update-engine skill
- Replace macOS binary with the 4.7 build where Terrain3D + agent_skinned are native
  engine modules (no GDExtension .framework). Fixed C# bindability (set_plugin->Object,
  abstract Terrain3DAssetResource, drop dup duplicate bind) so glue generates.
- SHIP GodotSharp alongside the binary (matched pair) — stale/missing GodotSharp causes
  "Wrapper class not found for Terrain3D" / ".NET assemblies not found". Engine does not
  regenerate it. Un-ignore GodotSharp in .gitignore.
- manifest.json: macOS -> 4.7 (4ba7b5b) + new sha + godotsharp field; drop obsolete
  terrain_3d GDExtension section; windows flagged 4.7-pending.
- Add .agents/skills/update-engine (mac+win self-serve install) + README + Forge handoff.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 02:35:00 +01:00

4.1 KiB


name: update-engine description: Install/update the local Tinqs engine (binary + GodotSharp C# bindings) from this builds repo so ariki-game runs on the current engine. Use when an engine update is announced, when setting up a new machine, or when the game shows ".NET assemblies not found" or "Wrapper class not found for type: Terrain3D" (terrain is water / animals don't animate). Covers macOS (arm64) and Windows (x64).

Update the Tinqs engine from builds

Only Ozan edits the engine source. Everyone else installs the prebuilt engine from this repo into ../engine/bin/, which is where ariki-game looks for it.

⚠️ Read this first — binary + GodotSharp are a MATCHED PAIR

The engine binary and its GodotSharp/ folder (Godot's C# bindings) are both generated from the same engine source and must be installed together. The binary does not regenerate GodotSharp — it must sit next to the binary on disk. Mismatch symptoms:

Symptom Cause
.NET assemblies not found dialog (looks for engine/bin/GodotSharp/Api/Debug) no GodotSharp present
Wrapper class not found for type: Terrain3D / MultiSkinnedMeshInstance3D — terrain renders as water, animals don't animate stale GodotSharp from an older engine that predates the built-in Terrain3D / agent_skinned modules

So: always replace GodotSharp wholesale when you take a new binary, and clear the game's C# cache so it rebuilds against the new bindings.

Assumed layout

tinqs-ltd/
  ariki-game/    ← the game  (looks for ../engine/bin/…)
  engine/bin/    ← install target: binary + GodotSharp live here
  builds/        ← this repo (prebuilt engine)

Adjust paths below if your checkout differs.

1. Pull the latest build

cd <…>/builds
tinqs pull          # never `git pull` — tinqs handles LFS (the binary + GodotSharp are LFS)

Check builds/manifest.json for the current version/commit per platform.

2a. Install — macOS (arm64)

BUILDS="<…>/builds"; ENGINE="<…>/engine/bin"; GAME="<…>/ariki-game"
mkdir -p "$ENGINE"
# 1) binary
cp "$BUILDS/engine/macos-arm64/tinqs.macos.editor.arm64.mono" "$ENGINE/"
chmod +x "$ENGINE/tinqs.macos.editor.arm64.mono"
# 2) GodotSharp — REPLACE wholesale (matched pair)
rm -rf "$ENGINE/GodotSharp"
cp -R "$BUILDS/engine/macos-arm64/GodotSharp" "$ENGINE/GodotSharp"
# 3) clear the game's stale C# cache
rm -rf "$GAME/.godot/mono"

2b. Install — Windows (x64), PowerShell

$builds="<…>\builds"; $engine="<…>\engine\bin"; $game="<…>\ariki-game"
New-Item -ItemType Directory -Force -Path $engine | Out-Null
# 1) binaries
Copy-Item "$builds\engine\windows-x64\tinqs.windows.editor.x86_64.mono.exe" $engine -Force
Copy-Item "$builds\engine\windows-x64\tinqs.windows.editor.x86_64.mono.console.exe" $engine -Force
# 2) GodotSharp — REPLACE wholesale (matched pair)
Remove-Item -Recurse -Force "$engine\GodotSharp" -ErrorAction SilentlyContinue
Copy-Item -Recurse "$builds\engine\windows-x64\GodotSharp" "$engine\GodotSharp"
# 3) clear the game's stale C# cache
Remove-Item -Recurse -Force "$game\.godot\mono" -ErrorAction SilentlyContinue

3. Verify

"$ENGINE/tinqs.macos.editor.arm64.mono" --version          # matches manifest.json
ls "$ENGINE/GodotSharp/Api/Debug/GodotSharp.dll"            # MUST exist

Then run the game (cd ariki-game && bash tools/game.sh run). Healthy = terrain renders, animals animate, log shows 0 Wrapper class not found and no .NET assemblies not found dialog.

Notes

  • GodotSharp must be present in this repo for the copy to work. If builds/engine/<platform>/GodotSharp is missing, the build owner needs to add it (it ships with the binary — see manifest.json).
  • Don't mix a new binary with an old GodotSharp. Always replace both, together.
  • Terrain3D and the skinned-animation classes are built into the engine binary now (no separate addons/terrain_3d GDExtension .framework). If you still have addons/terrain_3d/terrain.gdextension or the macOS .framework, remove them — they conflict with the built-in module.