Skip to content

Releases: Bands-yt/kronos-platform

v4 pre-beta

Choose a tag to compare

@Bands-yt Bands-yt released this 09 Sep 17:38

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_queue table): 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_verified lookup (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, and TerrainGenerator
    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 found error — check with ldd --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)

Choose a tag to compare

@github-actions github-actions released this 06 Sep 17:03
v0.3.0-beta

fix(engine): name tinyexr's anonymous HeaderInfo struct so MSVC accep…

v0.2.5-alpha — Studio Revamp

Choose a tag to compare

@github-actions github-actions released this 25 Aug 16:11

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-alpha after 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 MSVC C1128 section-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

Choose a tag to compare

@github-actions github-actions released this 25 Aug 14:54
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

Choose a tag to compare

@github-actions github-actions released this 25 Aug 14:43
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

Choose a tag to compare

@github-actions github-actions released this 25 Aug 11:25
v0.2.2-alpha: fix washed-out lighting/fog, Windows Studio crash, and …

v0.2.1-alpha

Choose a tag to compare

@github-actions github-actions released this 25 Aug 09:38
v0.2.1-alpha: fix overexposed daytime ambient lighting and thin fog

Kronos v0.2.0-alpha

Choose a tag to compare

@github-actions github-actions released this 22 Aug 11:32

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

Choose a tag to compare

@Bands-yt Bands-yt released this 18 Aug 12:01

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
    inline VK_KHR_ray_query where 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, by engine_runtime and studio
    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-attached core::Script component; 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
    driving engine_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
    into NetworkSession's chat broadcast path, gated by per-world safety
    settings.
  • zlib-compressed .kronos world 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 studio and engine_runtime manually 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.