Compare commits
14 Commits
7c5b817d99
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| eeae1a1f89 | |||
| 693e913ecc | |||
| 9b547e1aee | |||
| 33d271c783 | |||
| 29b5db9071 | |||
| b0810fbdfd | |||
| cf4a8bc6e3 | |||
| 33b37f47de | |||
| e06ff7c3ca | |||
| 19e3cc84bd | |||
| ca3c051194 | |||
| d837fe6313 | |||
| 4e4a362def | |||
| d895a18537 |
@@ -0,0 +1,62 @@
|
|||||||
|
# Handoff → Forge (Ozan's Windows box): build Windows 4.7 + ship GodotSharp
|
||||||
|
|
||||||
|
**Date:** 2026-06-19 · **From:** macOS 4.7 native-module migration · **For:** Windows build owner
|
||||||
|
|
||||||
|
## Why
|
||||||
|
|
||||||
|
The engine moved to **Godot 4.7** and **Terrain3D + agent_skinned are now native engine modules**
|
||||||
|
(compiled into the binary — no GDExtension `.framework`). macOS is done and shipped in this repo
|
||||||
|
(`engine/macos-arm64/`). **Windows is still 4.6.5 with the GDExtension** and must be brought up to
|
||||||
|
4.7 the same way, or Windows teammates can't run the new `ariki-game` (the game-side cutover removed
|
||||||
|
the terrain GDExtension).
|
||||||
|
|
||||||
|
## The critical bit (don't skip)
|
||||||
|
|
||||||
|
After the 4.7 build you **must regenerate GodotSharp and ship it next to the binary.** A native
|
||||||
|
module changes the engine's class list; the C# bindings (`GodotSharp`) must be regenerated to
|
||||||
|
include `Terrain3D` / `MultiSkinnedMeshInstance3D`, or the game throws
|
||||||
|
`Wrapper class not found for type: Terrain3D` (terrain = water, animals frozen). The engine does
|
||||||
|
**not** regenerate GodotSharp at runtime.
|
||||||
|
|
||||||
|
## Steps (Windows)
|
||||||
|
|
||||||
|
1. **Sync engine source** to the current `tinqs/engine` `main` (single 4.7 snapshot, `4ba7b5b`).
|
||||||
|
```
|
||||||
|
cd engine
|
||||||
|
tinqs pull # or: git fetch origin && git checkout main && git reset --hard origin/main
|
||||||
|
```
|
||||||
|
2. **Build the editor**:
|
||||||
|
```
|
||||||
|
scons platform=windows target=editor arch=x86_64 module_mono_enabled=yes
|
||||||
|
scons platform=windows target=editor arch=x86_64 module_mono_enabled=yes windows_subsystem=console # console binary
|
||||||
|
```
|
||||||
|
3. **Regenerate the mono glue + GodotSharp assemblies** (this is the step that fixes the wrapper errors):
|
||||||
|
```
|
||||||
|
bin\tinqs.windows.editor.x86_64.mono.exe --headless --generate-mono-glue modules\mono\glue
|
||||||
|
python modules\mono\build_scripts\build_assemblies.py --godot-output-dir=bin --godot-platform=windows
|
||||||
|
```
|
||||||
|
Confirm `bin\GodotSharp\Api\Debug\GodotSharp.dll` exists and that
|
||||||
|
`modules\mono\glue\...\Generated\Constructors.cs` contains `Terrain3D` (grep it).
|
||||||
|
4. **If you hit the same build errors I did** (already fixed in `main`, but for reference): a core
|
||||||
|
module can't expose an editor-API type — `Terrain3D::set_plugin` must take `Object*` not
|
||||||
|
`EditorPlugin*`; `Terrain3DAssetResource` must be `GDREGISTER_ABSTRACT_CLASS`; drop the redundant
|
||||||
|
`Terrain3DRegion::duplicate` bind. These are already in `main` — a clean pull should have them.
|
||||||
|
5. **Drop into this builds repo** (`engine/windows-x64/`):
|
||||||
|
- `tinqs.windows.editor.x86_64.mono.exe` (+ `.console.exe`)
|
||||||
|
- the whole `GodotSharp/` folder ← **new requirement; was previously .gitignored**
|
||||||
|
6. **Update `manifest.json`** windows-x64 block: version `4.7…`, `engine_commit` `4ba7b5b`, new
|
||||||
|
sha256s, add `"godotsharp": "engine/windows-x64/GodotSharp"`, clear the "pending" note.
|
||||||
|
7. `tinqs push`.
|
||||||
|
|
||||||
|
## Verify
|
||||||
|
|
||||||
|
On a Windows machine with `ariki-game`: run the update-engine skill (`.agents/skills/update-engine`,
|
||||||
|
Windows path), launch `game.sh run`. Healthy = terrain renders, animals animate, **0**
|
||||||
|
`Wrapper class not found`, no `.NET assemblies not found`.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- `.gitattributes` already LFS-tracks `engine/**`, so the binary + GodotSharp go to LFS automatically.
|
||||||
|
- The macOS side in this repo is the reference for exactly what the layout should look like.
|
||||||
|
- Game-side cutover (GDExtension removal, `project.godot`→4.7) is committed on `ariki-game` `main`
|
||||||
|
(held pending team sync) — Windows teammates need this engine before that lands for them.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# GodotSharp (the engine's C# bindings) IS now tracked and shipped alongside each binary.
|
||||||
|
# It is a matched pair with the binary — see README.md / .agents/skills/update-engine.
|
||||||
|
# (Previously windows-x64/GodotSharp was ignored; that was wrong — teammates need it.)
|
||||||
@@ -1,11 +1,41 @@
|
|||||||
# tinqs/builds
|
# tinqs/builds
|
||||||
|
|
||||||
Build artifacts for the Tinqs stack — engine editor binaries and game exports.
|
Build artifacts for the Tinqs stack — engine editor binaries (+ their GodotSharp C# bindings).
|
||||||
**Binaries are stored via Git LFS** (see `.gitattributes`). Source lives in `tinqs/engine`,
|
**Binaries and GodotSharp are stored via Git LFS** (see `.gitattributes`). Source lives in
|
||||||
`tinqs/ariki-game`, `tinqs/ariki-sim`. See `manifest.json` for what's here.
|
`tinqs/engine`, `tinqs/ariki-game`, `tinqs/ariki-sim`. See `manifest.json` for exact versions.
|
||||||
|
|
||||||
Long-term plan: CI (Gitea Actions) builds on push and publishes here / to S3 — see
|
> **Use `tinqs pull` / `tinqs push`, never raw git** — these are LFS-heavy.
|
||||||
`docs/ai/plans/build-pipeline-architecture-2026-06-07.md`.
|
|
||||||
|
## Installing / updating the engine
|
||||||
|
|
||||||
|
**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
|
||||||
|
|
||||||
|
Each engine binary ships with a `GodotSharp/` folder (Godot's C# bindings) **generated from that
|
||||||
|
exact engine build**. You must install them **together** and replace any old `GodotSharp`.
|
||||||
|
|
||||||
|
- The engine does **NOT** regenerate GodotSharp at runtime. If it's missing you get a
|
||||||
|
**`.NET assemblies not found`** dialog pointing at `engine/bin/GodotSharp/Api/Debug`.
|
||||||
|
- A **stale** GodotSharp (from an older engine) against a newer binary throws
|
||||||
|
**`Wrapper class not found for type: Terrain3D`** → terrain renders as water, animals don't animate.
|
||||||
|
|
||||||
|
This matters now because **Terrain3D and `agent_skinned` are native engine modules** (no separate
|
||||||
|
`addons/terrain_3d` GDExtension `.framework`). Built-in module classes need their wrappers baked
|
||||||
|
into GodotSharp, so GodotSharp had to be regenerated — and must ship here alongside the binary.
|
||||||
|
|
||||||
## Current contents
|
## Current contents
|
||||||
- `engine/macos-arm64/tinqs.macos.editor.arm64.mono` — Godot 4.6.3 fork editor (mono), built on Kraken with Xcode 26.3.
|
|
||||||
|
| Platform | Engine | Terrain3D | GodotSharp shipped? |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `engine/macos-arm64/` | **4.7** (`4ba7b5b`) — native modules | built-in module | ✅ yes (`GodotSharp/`) |
|
||||||
|
| `engine/windows-x64/` | **4.6.5** (`420e74bf8`) — still GDExtension | GDExtension | ❌ pending — see handoff |
|
||||||
|
|
||||||
|
**Windows is not yet on 4.7.** The 4.7 Windows build + its GodotSharp must come from Forge —
|
||||||
|
see [`.agents/handoffs/forge-windows-4.7.md`](.agents/handoffs/forge-windows-4.7.md).
|
||||||
|
|
||||||
|
Long-term: CI (Gitea Actions) builds on push and publishes here / to S3 —
|
||||||
|
`docs/ai/plans/build-pipeline-architecture-2026-06-07.md`.
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user