- 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>
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>/GodotSharpis missing, the build owner needs to add it (it ships with the binary — seemanifest.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_3dGDExtension.framework). If you still haveaddons/terrain_3d/terrain.gdextensionor the macOS.framework, remove them — they conflict with the built-in module.