Releases: saias-o/SaidaEngine
Release list
SaidaEngine 1.0.0 Beta 4
Windows editor distribution
SaidaEngine 1.0.0 Beta 4 is the first self-contained Windows editor distribution.
- The editor, Hub, runtime template and CLI now resolve every shipped resource beside the installed executable; writable state and developer projects live under the current Windows user profile.
- The portable ZIP and the per-user installer contain the same inventoried payload.
- Both formats are fail-closed tested through Hub/editor/CLI startup, WitnessGame export, first run, persisted restart, exact installer payload comparison and uninstall.
- All four executables carry Windows product/version metadata.
- The repository now contains the reproducible human/LLM publication runbook in
RELEASE.md.
Install on Windows 11 x64
Portable: extract SaidaEngine-v1.0.0-beta.4-windows-x64.zip, then run SaidaEngineHub.exe.
Installer: run SaidaEngine-v1.0.0-beta.4-windows-x64-Setup.exe. It installs for the current user and does not require administrator access.
No Visual C++ Redistributable, Vulkan SDK/runtime, MSYS2, CMake, Python, compiler or other build tool is required. The package includes GLFW and the Vulkan loader. The machine still needs a normal Intel, AMD or NVIDIA graphics driver exposing Vulkan 1.3.
This beta installer is unsigned (Authenticode: NotSigned), so Windows SmartScreen may display a warning.
Qualification
- Source commit:
e497d76a889af758701cb75d635a4d83b123867f - GitHub Actions: Windows native/full CTest/package, Web/Witness, Linux clean build/cross-OS determinism, and GHCR image publication all passed on 2026-08-25.
- The exact ZIP and installer below passed the complete packaged-layout test on Windows 11 hardware: clean extraction/install, Hub/editor/CLI launch, game export, first run, persisted restart and uninstall.
- Dependency closure contains bundled
glfw3.dllandvulkan-1.dllwith no missing DLL.additionalRuntimeInstall: false.
SHA-256
afaf90f1646e4e805106e11f9533807255b42b40049884bc3226a6cec9e362f8 SaidaEngine-v1.0.0-beta.4-windows-x64.zip
de3302a0e337832488b9dd9d6dc660d9ac43257deec9a9e1de23201d9a2cadfe SaidaEngine-v1.0.0-beta.4-windows-x64-Setup.exe
22f6e626b08acf0cbb8a491c21911f5d2f1edb9f1ffd6395aacc707da63033b5 SaidaEngine-v1.0.0-beta.4-windows-x64-Setup.manifest.json
86904ebcac446f4087e47cd2b7c2a3dc10ab9cb6456abbf6e03b7b5dc760926e release-manifest.json
Linux editor distribution
A self-contained Linux x86_64 editor archive is now available with a verified per-user installer, portable mode, Hub, editor, native runtime template, CLI, shaders, assets, fonts, sample project and private ELF dependency closure.
Install on Linux x86_64
tar -xzf SaidaEngine-v1.0.0-beta.4-linux-x86_64.tar.gz
cd SaidaEngine-v1.0.0-beta.4-linux-x86_64
./install.sh
saidaengine-hubThe installer uses no sudo. It targets Ubuntu 22.04/24.04, Debian 12 and compatible x86_64 distributions with glibc 2.35+, X11/XWayland and a normal Intel, AMD or NVIDIA graphics driver exposing Vulkan 1.3. No Vulkan SDK, compiler, CMake, GLFW development package or other build tool is required. The hardware-specific graphics driver remains a normal system requirement.
See README-LINUX.md below for portable use, native game export, paths and uninstall instructions.
Linux qualification
- Linux asset source commit:
3aa0b8beb103210c474154a1662b0c787abb17f6(recorded separately because this owner-authorized Linux addition was built after the immutable Beta 4 tag; the tag and every Windows asset remain unchanged). - GitHub Actions run 32885121485 passed the complete build, all 83 native tests, payload hashes, isolated per-user installation, headless CLI, Hub Vulkan startup under Xvfb/lavapipe, installed-editor WitnessGame export, exported ELF dependency closure and uninstall.
- The package is compiled for baseline x86-64/SSE2; AVX/AVX2 are not required.
additionalRuntimeInstall: false; the GPU driver is the only machine-specific runtime requirement.
Linux SHA-256
9c2fe07c0a8278eb02b58cbbc2d2739e15fbce0a71896fd06ccba62c1c3017b5 SaidaEngine-v1.0.0-beta.4-linux-x86_64.tar.gz
SaidaEngine 1.0.0-beta.3 — HEAD build 3a7c769
SaidaEngine 1.0.0-beta.3 — HEAD build 3a7c769
Public developer beta for Windows 11 x64. This is a pre-release, not a release candidate.
Build identity notice: the downloadable binaries were built from
HEADcommit3a7c769af43d540fcb2cd732ac0bfa9f6362c998. The existing immutable tagv1.0.0-beta.3remains at33be48b442919752e98d77db24463f4ec48bd746. This intentional mismatch was requested for this beta upload; the tag andCHANGELOG.mdwere not changed.
Downloads
SaidaEngine-1.0.0-beta.3-windows-x64-HEAD-3a7c769-unsigned.zip— recommended bundle with the editor, Hub, runtime template,saida_tool, GLFW, shaders, fonts, compliance files and build manifest.SaidaEngine-1.0.0-beta.3-windows-x64-HEAD-3a7c769-unsigned.exe— raw editor binary. It is not standalone: keepglfw3.dlland the resources from the ZIP beside/available to it.
Verification
RelWithDebInfo, Windows x86_64, MCP enabled, OpenXR enabled- 84/84 CTest tests passed
saida_tool describe-enginepassedSaidaEngine --verify-runtime-contractpassed with Lavapipe/Vulkan 1.3- PE dependency closure passed for all four executables
- deterministic ZIP verified byte-for-byte (72 entries)
- SPDX SBOM, third-party notices and 1,100-asset inventory generated
SHA-256
6679552bf4c076a80c2e64cc0dd98d9e6bc60ff6325865bb69061f523ff9ffeb SaidaEngine-1.0.0-beta.3-windows-x64-HEAD-3a7c769-unsigned.zip
3db07fd649be7db966a4e8391d195d0d5b50cc80ce5b749383a138b0f4b1d528 SaidaEngine-1.0.0-beta.3-windows-x64-HEAD-3a7c769-unsigned.exe
Important limitations
- Unsigned: no Authenticode signature; Windows SmartScreen may warn.
- Unqualified developer artifact: the editor still contains configure-time absolute resource and project-discovery paths. Clean-machine portability is not yet qualified.
SaidaEngineRuntime.exeis the runtime template and requires an exported game.- Production XR is not a supported V1 surface.
See the included README.txt, BUILD-INFO.json, compliance files and CODE_SIGNING_POLICY.md for details.
SaidaEngine 1.0.0 Beta 2
SaidaEngine 1.0.0 Beta 2 - a pre-release for manual testing.
The Windows executable is unsigned. Windows SmartScreen will warn on first run; see CODE_SIGNING_POLICY.md.
Full diff: v1.0.0-beta.1...v1.0.0-beta.2
32 commits since v1.0.0-beta.1. Most of what follows was found by authoring
real content against the engine rather than by reading it — a vertical slice, a
main menu and two small games — which is why so many entries are defects that
produced a wrong picture with no error attached.
Rendering
- Skinned meshes now cast their animated pose.
shadow.vertdeclared
neitherJOINTS_0norWEIGHTS_0, so every skinned caster was drawn from its
bind pose. A character could appear to have no shadow at all. - Diffuse image-based lighting has a direction. The environment's diffuse
irradiance was a single sample of a coarse mip, which is very nearly the
environment average and identical for every normal — a floor and a ceiling
received the same light, washing the scene flat. - A scene's rendering settings are read in one place.
Scene::deserialize
andSceneSerializer::loadIntoSceneeach carried a copy of the
SceneSettingsfield list and the two had drifted: different defaults for the
same key, a different alpha on colours, and only one accepted an asset path
where the other demanded a numeric ID. A scene naming its skybox by path threw
a JSON type error that abandoned the whole load. Naming assets by path now
works and survives a re-keyed registry. - Scenes may drive rendering, animation and imports from data rather than
requiring native gameplay code.
Character and camera
- The follow camera no longer fights its own inputs. Two defects, both
measured rather than eyeballed. Pitching the rig into the ground made the view
alternate every frame between close and far, because the deoccluder probed the
segment the camera currently occupied and wrote its correction back into the
smoothing state. Sign changes in the pivot-to-camera distance went from 118 of
119 frames to 0. Running shook the image separately: target speed was a
one-frame finite difference over a jittery clock, so a steady run read as a 3x
speed swing that look-ahead, the speed-driven FOV and velocity recentring then
applied to the whole view. Jitter went from 1.59 to 0.53 against an input of
0.61. - Every skinned mesh on a character is driven. An imported character can
carry several skinned meshes (body, hat), each with its ownAnimator. Only
the first was driven, so the rest stayed stuck on whatever clip the import
started with. - A partial stick deflection walks at a partial speed. The left stick is
bound as an analog axis, but callers readingisActionHeldgot each axis
thresholded at 0.5 — eight directions and nothing in between. - The right stick looks around. The follow camera read the mouse and nothing
else, so a gamepad could move a character but never turn the view. Scripts can
now add a binding instead of replacing the whole table. - The character controller and its camera are tunable from data. Feel was eight
properties and a fixed solver, which pushed games into reimplementing both in
script.
User interface
- A reloaded UI document gets a fresh JS context. Document scripts run as
global code, so re-evaluating them in the context they replace redeclared
their top-levellet/constand threw. That alone broke hot reload for any
document whose script declared one. - UI documents resolve against the loaded project.
assetPath()points at
the engine root in editor and dev builds, so a game'sui/main_menu.htmland
its stylesheets and images only resolved when they happened to sit inside the
engine tree. - WebCanvas callbacks no longer re-enter the update that dispatched them. A
DOM mutation made from an RmlUi listener must not callContext::Update()
synchronously: focus and pointer listeners are themselves dispatched from an
update, so re-entering it repeated the listener until QuickJS reported a stack
overflow, and could then take the native stack with it. - Input targets survive a scene change.
UIInteractionSystemheld hovered,
pressed, focused and touch targets as raw pointers across frames, and a
deferredchangeScenedestroys the oldWebCanvasNodeafter input handling.
Editor
- Viewport gizmo rework. Click-to-select works with nothing selected —
picking no longer sits behind the gizmo's "requires a selection" early-out —
and ray picking collects every node under the ray, cycling through overlapping
candidates on repeated clicks. - The profiler reports triangle counts.
Scene/TotalTrianglesand
Renderer/FrustumTriangles, counted once per active mesh instance. The
frustum test is now shared with the renderer rather than duplicated, so the
camera figure cannot drift from what was actually submitted. Collection runs
only while the desktop profiler is open, and the collector is linked by the
editor alone. - A Small interface size for small displays, next to Editor Theme.
Assets and import
- A rejected glTF names its cause. The loader reported only
error 4. These
failures are almost always an exporter quirk in content the engine did not
produce, and the file is usually fixable — the invalid-glTF case now names the
scene root that is also another node's child, which is what makes cgltf refuse
a file before a single mesh is read. .hdris typed. Textures already decoded it throughstbi_is_hdr, but the
asset registry classified it asUnknown— it is the equirectangular skybox
and IBL source.
Authoring
- Optional standalone Python authoring SDK.
- Pong3D, a game authored against the released engine using only a project,
a scene and a script, without touching engine code. - Verdance, a two-level third-person vertical slice that exercises the
engine end to end: HDRI skybox with IBL, GI, SSAO, bloom, fog, cascaded
shadows, skinned characters, particles, bodies and areas, UI, audio and
QuickJS gameplay. Its second level, The Deep Wilds, spans 168 m by 160 m with
4,467 vegetation instances and roughly 580,000 mesh triangles, and is the
dense-geometry stress case. Its river uses the cartoon water style. - BeachDemo converted from the legacy INI project form, which the current
JSON project loader cannot read.
Release engineering
- One home for versions.
kProductVersion(human-facing release) and
kEngineVersion(on-disk format contract) both live in
src/core/EngineVersion.hpp, and nothing hard-codes a version elsewhere. - The vertical slice's art is declared. 676 tracked assets — the Kenney
kits, the audio and the Poly Haven sky — now carry a CC0-1.0 row each in the
fail-closed compliance inventory, with the repairs noted where a file was
modified. - An unattributed model was removed.
BeachDemo/assets/models/Zleda.glbhad
no recorded source, author or licence anywhere in the repository, so it was
deleted along with the scene that existed to display it. Every tracked asset
is now declared and distributable.
Known limitations
- The Windows executable is unsigned. The SignPath integration and a
publicly trusted certificate are not provisioned; see
CODE_SIGNING_POLICY.md. - The raw
SaidaEngine.exeis a developer artifact rather than a portable
distribution: the editor build resolves shaders, fonts and branding through
absolute configure-time paths, and the Open Project dialog scans the engine
checkout instead of the Hub registry. - Scene loading re-parses a model's glTF once per instance. Meshes are
deduplicated on the GPU, so this costs load time rather than memory, but a
dense scene pays for it: The Deep Wilds re-reads about 50 MB of glTF from
1.7 MB of distinct files.
SaidaEngine 1.0.0 Beta 1
First public beta
This is the first manual-testing beta of SaidaEngine 1.0.0. It establishes the baseline for the iterative Beta 1 → Beta 2 → release-candidate qualification cycle.
Included
- Vulkan desktop editor, Hub and standalone runtime
- WebAssembly/WebGPU player and authoring surfaces
- headless
saida_toolvalidation and deterministic scene folding - WitnessGame end-to-end test project
- CI-verified Windows, Web and Debian headless builds
- contribution guidance in
CONTRIBUTING.mdand LLM instructions inAGENTS.md
Validation
The release commit 21d76d12f529578444e1794ae4a145d632a68a0f passed the complete Saida Engine CI: 70 native tests, Windows Witness and reproducible installer checks, Web builds and Witness, Linux tests, cross-OS deterministic fold, compliance artifacts, symbols and GHCR publication.
The unsigned Windows editor executable attached below was rebuilt from that exact clean tag. The local rebuild passed 70/70 CTest and the native runtime round-trip contract.
Unsigned Windows editor executable
Download both SaidaEngine-v1.0.0-beta.1-windows-x64-unsigned.exe and glfw3.dll into the same directory.
- Architecture: Windows x64
- Build: RelWithDebInfo with external debug information removed
- Source commit:
21d76d12f529578444e1794ae4a145d632a68a0f - SHA-256:
4ce5649a09c8cfa6a1e4aca402862a0c5eb5e1de75d95ee794047dff94001ec4 - Authenticode: not signed
This is a raw developer beta executable, not an installer or a qualified Windows distribution. This Beta 1 build still resolves compiled shaders and editor assets from its source/build tree, so it is intended for developer and signing-provenance testing rather than portable installation. A portable Windows package must be produced in a subsequent immutable beta.
Manual testing status
Manual engine qualification starts with this beta. Defects found during testing will be fixed in Beta 2 and subsequent immutable betas. A release candidate will be created only after the beta test cycle is accepted.
Important limitations
- This is a pre-release and is not production-ready.
- The Windows installer is not attached or qualified until Authenticode signing is completed.
- Hardware, browser and XR coverage remains limited to the support matrix and known limits in
SPEC.md. - Compatibility between beta format revisions is not promised before the stable release.
Source archives are generated automatically from this immutable tag. The headless container is available as ghcr.io/saias-o/saida-tool:21d76d12f529578444e1794ae4a145d632a68a0f.