Releases: Bands-yt/kronos-platform
Release list
v4 pre-beta
Kronos v4 pre-alpha
A large jump since v0.3.0-beta — real 3D modeling tools, a working video
pipeline for Movie Maker, moderation/age-gating enforcement, and a
self-contained Linux build that no longer needs anything installed
separately. This is a pre-alpha: expect rough edges.
3D Maker / Modeling
- GPU vertex displacement sculpt brushes — Grab, Clay Strips, Pinch,
and Smooth now actually deform mesh geometry on the GPU. - Non-destructive modifier stack — Mirror, Array, Solidify,
Subdivision, and Boolean modifiers, stacked and re-orderable. - Real Catmull-Clark subdivision, plus zero-friction PBR
auto-instantiation when a mesh is created. - Vertex/edge/face sub-object picking with a real gizmo in the
viewport, for direct mesh editing. - Freshly-spawned Sphere and Cube primitives now auto-attach a real
editable mesh component (valid topology + UV coordinates), so sculpt
brushes and PBR textures work immediately — no more manual "convert to
editable" step first. - Viewport click-to-select fix: clicking into the 3D viewport to
select an object now works on the very first click, even when that
click is also the one bringing the viewport window into focus
(previously the first click was silently swallowed). - Fixed a shutdown-time use-after-free and sampler leak in the offscreen
render target; added a brush-size ring indicator in the 3D Maker
viewport. - Mouse-wheel viewport zoom; a real native OS file dialog for asset
import (replacing the old in-app picker). - Un-clipped the "Add Primitive" dropdown; removed feature-gating between
Beginner/Professional modes (nothing is hidden behind a mode anymore);
added a vertical tool column.
Movie Maker / Video
- Real libav-backed MP4 decoding (
core::VideoDecoder) — actual
video files decode, not placeholders. - MP4 import with 3D-over-2D compositing and envelope-driven
playback on the timeline. - NLE clip-timeline plugin and Media Bin, fully wired into the
Studio build. - Drag-and-drop Effects Library: Bloom, Color Grade, Chromatic
Aberration, Vignette — drag straight onto a clip. - Real audio waveform peak display rendered on timeline clips.
- Live viewport camera and depth-of-field now driven directly by the
cinematic rail's actual physical camera, instead of an approximation. - Camera badge overlay added to the Movie Maker viewport.
Moderation & Safety
- Automated moderation queue (
moderation_queuetable): a
classifier (e.g. Gemini) can now flag chat, voice transcripts, UGC
assets, or movie exports for review before anyone reports them —
separate from the existing human-report flow, with its own
resolve/dismiss/audit trail. - Real age-gating enforcement, checked live at both places content
actually gets served — direct session join and matchmaking ticket
queueing — not just hidden from the catalog listing (which a client
that already knows the game's slug could bypass entirely). - Self-serve birthdate submission endpoint, feeding a live
age_verifiedlookup (checked on every request, the same pattern
admin-role checks already use — no stale token can carry a
verification claim past a revocation).
Platform / Entitlements
- Added
EntitlementManager,PluginRegistry, andTerrainGenerator
to the engine core.
Packaging — installation friction removed
Previous builds needed the host machine to already have the full
ffmpeg/codec stack, curl+TLS/SSH, and GTK/Cairo/Pango installed
separately. The Linux release asset below is now fully
self-contained: every one of those ~130 shared libraries — the entire
ffmpeg + libav codec stack, curl with TLS/SSH, GTK/Cairo/Pango,
SDL2, and libstdc++/libgcc (the C++ runtime itself) — ships in lib/
next to the binaries. Extract and run; no separate install step, no
system package manager involved.
Two things genuinely cannot be bundled, because they must come from the
host by nature (verified against a clean container with none of the
above pre-installed):
- A Vulkan-capable GPU driver (NVIDIA/AMD/Intel) — a hardware
driver, not an application dependency. - glibc, and this build's floor is high: it was compiled on a
system running glibc 2.44. If your distro's glibc is
meaningfully older, the binaries will refuse to start with a
GLIBC_2.xx not founderror — check withldd --version. This is
the one real remaining requirement, not a missing-dependency bug.
Known rough edges (pre-alpha)
- Cylinder/Plane/Torus primitives don't yet get an editable mesh
component on spawn (Sphere/Cube only, for now). - Monaco-based script editing isn't implemented on this platform yet;
falls back to a built-in ImGui text editor.
Requirements: Linux x86_64, a Vulkan-capable GPU with an
up-to-date driver, glibc 2.44+ (see Packaging note above).
v0.3.0-pre-beta (not fully beta just yet . mistake on my end)
v0.3.0-beta fix(engine): name tinyexr's anonymous HeaderInfo struct so MSVC accep…
v0.2.5-alpha — Studio Revamp
Studio Revamp
Native Script Editor — Script Editor now defaults to a real native code editor (ImGuiColorTextEdit) with line numbers and Luau syntax highlighting, backed by live error-marker squiggles from Luau's own type-checker (Luau.Analysis), instead of the plain ImGui text-box fallback. The ImGui fallback still exists as a safety net if the native backend ever fails to initialize.
Known scope boundary: type-checking currently runs in permissive (nonstrict) mode and doesn't yet recognize the engine's own script globals (game, workspace, script, ...) — real syntax/type errors are caught, but those globals aren't flagged as undeclared. A full API type-definition file is a natural follow-up.
Pause menu overlay fixes — Friends, Notifications, and Avatar Shop could render behind the in-game pause menu instead of on top of it, the same bug already fixed for Graphics Settings. All four now use the same real overlay/page window handling and can never get stuck behind the pause menu again.
Lighting Inspector: Cascaded Shadow Maps — the Lighting Tools panel now shows real, live facts about the actual shadow system this scene renders with (cascade count, shadow map resolution, max shadow distance, the real bias formula) instead of nothing at all. These are compile-time constants tied to a fixed-size GPU resource, so they're shown as read-only info rather than fake sliders — see the panel's own tooltip for why.
Studio layout: Reset to Default — View menu now has a real "Reset Layout to Default" action, so a scrambled window arrangement no longer requires deleting imgui.ini and restarting.
Also in this release
- Fixed the sticky version string: Studio/engine builds were still reporting
0.2.3-alphaafter two later tags had already shipped, which would have offered users an "update" to the build they were already running. - Fixed the Graphics Settings overlay rendering behind the pause menu (same root cause as the panels above).
- Fixed the Windows release workflow not attaching
windows-x64.zip— root cause was a real MSVCC1128section-limit compile error in the test target, not a packaging/workflow bug; fixed with/bigobj.
Known issues
- Monaco/webview-based script editing (the longer-term architecture) remains unimplemented — evaluated Ultralight as the embeddable browser engine for it, but its renderer components are proprietary/license-gated, not freely fetchable like this project's other dependencies. Shelved pending a licensing decision; CEF remains the open-source fallback option if that's preferred.
- Skybox is procedural only (two-tone gradient); real HDRI/image-based lighting is not implemented.
v0.2.4-alpha
Fix sticky version string and Settings z-order in the in-game pause menu Version sticky bug: kKronosVersion was still "0.2.0-alpha" despite v0.2.1-alpha and v0.2.2-alpha already being tagged -- this header's own comment already warns about exactly this mistake happening once before. The updater's replace-with-rollback logic (installer/src/UpdateApply.cpp) is structurally correct; every "updated" build just kept compiling in the same stale version string, so the About panel/update check never had a chance to show anything else. Bumped to 0.2.3-alpha to match the current tip. Graphics Settings z-order: drawSettingsPanel() serves two real presentations -- a full-canvas Home-sidebar "page" (where NoBringToFrontOnFocus/NoMove and the sidebar+brand-panel inset are correct, so it never fights z-order with sibling pages) and, opened from the pause menu's own "Graphics Settings" button, a floating overlay on top of live gameplay -- which was still using those same page-oriented flags. NoBringToFrontOnFocus is exactly why it could never draw above the pause menu window opened just before it. The overlay case now draws as its own centered, independently-focusable floating window instead. Script Editor fallback: real, honest, pre-existing scope gap, not a quick fix -- MonacoWebViewEditor::initialize() always returns false by design (see ScriptEditorPanel.hpp's own class comment); a real native editor backend means embedding a browser engine (CEF/WebView2), a substantial separate undertaking left alone here rather than attempted half-built under time pressure.
v0.2.3-alpha
Fix Windows CI: /bigobj for the real MSVC C1128 section-limit error Windows (x64) build failure, confirmed from the actual CI log (run 32841214687): MSVC error C1128 compiling test_main.cpp -- "number of sections exceeded object file format limit" -- the standard COFF ceiling a single, deliberately-unsplit ~14000-check translation unit runs into on MSVC specifically (no equivalent limit on GCC/Clang, which is why the Linux job never hit this). This is what left kronos-windows-x64.zip missing from the v0.2.2-alpha release: build-windows failed at the Build step, before Package/ Upload ever ran, while build-linux succeeded independently and uploaded its own archive. Fix: /bigobj on the engine_tests target for MSVC, the compiler's own documented fix for this exact error.
v0.2.2-alpha
v0.2.2-alpha: fix washed-out lighting/fog, Windows Studio crash, and …
v0.2.1-alpha
v0.2.1-alpha: fix overexposed daytime ambient lighting and thin fog
Kronos v0.2.0-alpha
Kronos v0.2.0-alpha — the platform release.
v0.1.0-alpha was an engine you could run. This is a platform: a real client, a real backend, real accounts, and a real way to publish to it.
Kronos Client — a proper launcher
A complete visual rebuild around a fixed shell: a left sidebar (Home / Discover / Avatar / Create / Directory / Settings), a top bar with search and profile, and a brand panel — all in a strict dark theme (charcoal #191B1D, slate #232527, sky blue #4EA8DE, action green #00B259).
- Discover — the live catalogue, browsable signed-out, loading in 200-item batches with infinite scroll and local caching
- Avatar — an interactive orbit/zoom 3D preview beside the item controls
- Create — local projects plus one-click Launch Kronos Studio
- Directory — every account with live presence and status colours
- Friends — carousel with presence badges and direct-join
Sign in without ever typing a password into the client
The launcher has no credential fields at all. The one entry point opens your system browser, and the session comes back over a loopback callback with CSRF state that fails closed. A password that never enters the client process cannot be captured from it. Play as Guest needs no email.
Backend service
Node/Express + PostgreSQL + Redis, with 66 tests running against real databases — nothing mocked.
- Accounts, sessions, password reset, email confirmation
- Google ID tokens verified against Google's JWKS — RS256 pinned, issuer/audience/expiry checked
- Friends graph, user search, account directory, live presence (
offline/launcher/in studio/in game) - Server allocation with signed join tickets
- Guest accounts, bans, appeals, and 30-day username recycling
- One-click publish from Studio straight into the public catalogue
Multiplayer joins are actually enforced
Allocation now issues a signed join ticket that travels in the handshake, and the game server validates it against the backend before admitting anyone. Connecting directly to a server's address no longer gets you in.
Luau sandbox hardening
Security identities (UserScript / CoreScript / StudioPlugin), fixed at VM creation and unreachable from Lua. getfenv/setfenv/newproxy removed. A VFS-backed require() with no filesystem access. 38 adversarial tests, including the first real coverage proving the execution watchdog and memory ceiling actually stop a runaway script.
Animation & cinematics
Two-bone and FABRIK inverse kinematics with pole targets and exact bone-length preservation, plus physical camera parameters (focal length, f-stop, sensor size, ISO, shutter) driving depth of field through real thin-lens maths.
Ship-ready deployment
docker-compose.prod.yml with automatic Let's Encrypt TLS via Caddy, health-checked Postgres, persistent Redis, and one-shot migrations. Plus a fly.toml alternative and a bootstrap installer.
Fixes worth calling out
The previously published archive could not function: it shipped binaries but no assets/ or games/, so the font atlas was missing and the client started with no HUD, no animations and nothing to play. Also fixed this release:
- Windows builds shipped no DLLs — every binary failed to start
- Browser sign-in hung forever if the browser pre-connected before redirecting
- Closing the sign-in tab mid-response could kill the launcher
- Guest sign-in crashed the client on a null email
- A failed avatar spawn crashed the entire server, dropping everyone
- The same bug client-side was worse: release builds compile the assertion out, making it silent memory corruption
Packaging now hard-fails rather than publishing an archive that cannot run.
Downloads
kronos-v0.2.0-alpha-linux-x64.tar.gz · kronos-v0.2.0-alpha-windows-x64.zip
Each ships with a .sha256. Extract and run engine_runtime.
Alpha, and honestly so. The backend defaults to localhost:8080 — point it elsewhere with a config.json beside the executable or KRONOS_API_URL. The Windows build has not yet been run on real Windows hardware.
Kronos v0.1.0-alpha
Kronos 0.1.0-alpha
This is the first alpha release of Kronos — a Vulkan-based reference
game engine and creator platform, built from source with an
11,022-check automated test suite backing it. Every feature below is
real, working code in this repository, not a mockup or a stated future
plan.
Kronos Core Engine
- Vulkan PBR renderer — cascaded shadow maps, ray-traced shadows via
inlineVK_KHR_ray_querywhere the device supports it (falling back
to rasterized CSM otherwise), screen-space reflections, HDR bloom, and
ACES tone mapping. - Dynamic day/night weather cycle — time-of-day lighting, weather
state blending (clear/rain/fog and beyond), with a real, deliberate
isolation boundary so indoor/preview scenes (Avatar Shop, Home,
Studio) stay on neutral, weather-independent lighting instead of
bleeding outdoor conditions into a UI context. - ECS architecture — an EnTT-backed entity/component registry
(core::ECS) shared, unmodified, byengine_runtimeandstudio
alike: what you place and edit in Studio is the exact same live data
the runtime simulates and renders. - Jolt physics, a sandboxed Luau scripting VM (per-script memory/time
budgets, real hot-reload), and real-time multiplayer with client
prediction/server reconciliation.
Kronos Studio
- Command Palette (Ctrl+K) — a VS Code-style floating action search:
execute registered commands (Spawn Baseplate,Toggle Physics Debug,Clear Engine Log) or type an entity name to jump the
viewport camera straight to it. - Live Lua Script Hot-Reload — the Script Editor is wired to a real,
entity-attachedcore::Scriptcomponent; saving while Play-testing
reloads just that script's environment in place, without resetting
physics, the ECS, or the camera. - Network Conditioning Bar — real Latency (0/50/150/300ms) and
Packet Loss (0/2/5/10%) presets in the toolbar, applied directly to
NetworkSession's live ENet transport for testing multiplayer code
under real bad-connection conditions. - F3 Performance Profiler — a toggleable overlay with a live frame-
time graph, draw call count, GPU memory, and Lua VM memory usage,
reachable via F3 or View → Performance Overlay. - Viewport Surface Snapping (End) — a real downward raycast from the
selected entity's own origin, dropping it flush onto the surface
below; paired with independent Grid Snap (0.25/1.0/5.0m) and Angle
Snap (15°/45°/90°) toolbar controls for transform gizmo operations. - Also included: an Explorer/Inspector/Viewport with a real ImGuizmo
translate/rotate/scale gizmo, multi-selection property editing, a
right-click "Enter Formula" popup for live math expressions
(+10,*2,180 - 45) on Position/Rotation/Scale fields, Undo/Redo,
autosave with multi-slot crash recovery, and a One-Click Package
Exporter (File → Package World).
Avatar System 2.0
- Skinned skeletal rigging — an 18-bone humanoid skeleton with real
GPU vertex skinning (bone matrices, joint indices/weights), driving
idle/walk/run/jump animation clips. - Vertex-color hair gradients — real per-vertex color authoring and
interpolation through the render pipeline, giving hair strands a
genuine root-to-tip gradient rather than a single flat material color. - RuntimeShell state management — a real, tested state machine
drivingengine_runtime's Home/Session-Browser/In-Game flow, with
live LAN session discovery and join/leave handling.
Network & Safety
- Integrated ENet network conditioning — real send-side latency and
packet-loss simulation in the transport layer itself (ENetTransport):
latency delays the actual packet send via a local queue; loss only
ever drops unreliable sends, since a dropped reliable packet with no
retry would break the reliability guarantee it's supposed to have on
a real lossy network too. - Local profanity filtering — a real, leetspeak-aware, word-boundary-
preserving chat filter (moderation::ProfanityFilter), fully wired
intoNetworkSession's chat broadcast path, gated by per-world safety
settings. - zlib-compressed
.kronosworld packaging — a real, custom deflate-
compressed archive format bundling scene data, a relative asset
manifest, scene-authored scripts, and an optional captured thumbnail
into a single portable file.
Verification
- 4 build targets (
engine_core,studio,engine_runtime,
engine_tests), each rebuilt clean from scratch for this release with
zero compiler warnings. - 11,022 / 11,022 automated checks passing.
- Both
studioandengine_runtimemanually launched and confirmed
stable post-build.
Known limitations
This is an alpha. Notably: no CI-stamped build numbering (version is
hand-bumped), SSR is a single-frame raster fallback with no temporal
accumulation, .kronos packaging bundles an asset manifest rather
than asset file contents, and several Studio panels (Mesh colliders in
Play mode, PhysicsMaterial round-tripping through saved scenes) have
real, stated scope boundaries documented inline in the source. See
docs/ for the fuller account of what's deliberately out of scope this
pass.