diff --git a/.agents/skills/update-engine/SKILL.md b/.agents/skills/update-engine/SKILL.md deleted file mode 100644 index 9fffcc2..0000000 --- a/.agents/skills/update-engine/SKILL.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -name: update-engine -description: Update this machine to the current Tinqs engine so ariki-game runs. Pulls the ariki-game game repo AND the builds repo, then installs the prebuilt engine (binary + GodotSharp C# bindings) into ../engine/bin. 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 this machine to the current Tinqs engine - -Run this and your machine ends up current: **game repo pulled + engine installed + verified.** -**Only Ozan edits the engine source.** Everyone else installs the prebuilt engine from the `builds` -repo into `../engine/bin/`, which is where `ariki-game` looks for it. - -## TL;DR for an agent - -1. `tinqs pull` the **ariki-game** repo (latest game code) and the **builds** repo (latest engine). -2. Copy the platform binary **+ its GodotSharp** from `builds/engine//` into `../engine/bin/`. -3. `rm -rf ariki-game/.godot/mono`, then `game.sh run` to verify. - -Detail below. - -## ⚠️ 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 game repo + the builds repo - -```bash -cd <…>/ariki-game && tinqs pull # latest game code (4.7 cutover etc.) -cd <…>/builds && tinqs pull # latest engine binary + GodotSharp (LFS) -``` -Never `git pull` — `tinqs` handles LFS + auth. If a repo is missing, clone first: -`tinqs clone tinqs/ariki-game` / `tinqs clone tinqs/builds` (and `tinqs/ariki-sim` if you run the sim). -Check `builds/manifest.json` for the current version/commit per platform. - -## 2a. Install — macOS (arm64) - -```bash -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 - -```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 - -```bash -"$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//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. diff --git a/README.md b/README.md index 8afc9f1..5d3b5f9 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,10 @@ Build artifacts for the Tinqs stack — engine editor binaries (+ their GodotSha ## Installing / updating the engine -**Don't copy files by hand — run the skill:** [`.agents/skills/update-engine`](.agents/skills/update-engine/SKILL.md). -Hand it to your agent; it installs the binary + GodotSharp into `../engine/bin/`, wipes stale -caches, and verifies. Covers macOS + Windows. +**Don't copy files by hand — run the `update-engine` skill (it lives in the game repo, which everyone has):** +[tinqs.com/tinqs/ariki-game · .agents/skills/update-engine](https://tinqs.com/tinqs/ariki-game/src/branch/main/.agents/skills/update-engine/SKILL.md). +Hand it to your agent; it `tinqs pull`s ariki-game + builds, installs the binary + GodotSharp into +`../engine/bin/`, wipes stale caches, and verifies. Covers macOS + Windows. ## ⚠️ The one rule: binary + GodotSharp are a MATCHED PAIR diff --git a/manifest.json b/manifest.json index f0945a7..0d029a6 100644 --- a/manifest.json +++ b/manifest.json @@ -1,5 +1,5 @@ { - "_install": "Use the update-engine skill (.agents/skills/update-engine) — it installs the binary AND GodotSharp together into ../engine/bin and clears stale caches. GodotSharp ships WITH the binary (matched pair); the engine does NOT regenerate it.", + "_install": "Use the update-engine skill in the GAME repo (tinqs/ariki-game .agents/skills/update-engine) — everyone has ariki-game; nobody but Ozan has the engine source. It tinqs-pulls ariki-game + builds, installs the binary AND GodotSharp together into ../engine/bin, and clears stale caches. GodotSharp ships WITH the binary (matched pair); the engine does NOT regenerate it.", "engine": { "macos-arm64": { "binary": "engine/macos-arm64/tinqs.macos.editor.arm64.mono",