Releases: ChenlizheMe/Infernux
Release list
Infernux v0.3.6
Infernux v0.3.6 · Unified Hierarchy and Hub Updates
Version 0.3.6 unifies the editor Hierarchy and restores automatic update discovery for packaged Infernux Hub builds.
Baseline for comparison: v0.3.5...v0.3.6
Editor
- Removed the separate Hierarchy UI mode. Scene and UI objects now share one tree, one selection model, and one context-menu path.
- Preserved Canvas root placement and UI Screen subtree constraints in the unified Hierarchy.
Hub Updates
- Restored startup update checks in packaged Nuitka Hub builds.
- Kept the Install Engine Version list on the selected Hub theme instead of inheriting the desktop system palette.
- Added verified full-package update fallback and elevation for protected installation directories.
- Changed the release pipeline to publish independently installable full Hub packages instead of incremental patch assets.
Infernux v0.3.5
Infernux v0.3.5
Infernux 0.3.5 is a standalone stable release. It can be installed directly and does not require Infernux 0.3.4 or any earlier release.
Downloads
- InfernuxHubInstaller-0.3.5.exe — recommended complete Windows installer.
- InfernuxHub-0.3.5-windows-x64-full.zip — self-contained Windows x64 Hub package.
- infernux-0.3.5-cp312-cp312-win_amd64.whl — Python 3.12 engine wheel for Windows x64.
- SHA256SUMS.txt — checksums for all published assets.
Changes
- Includes the fixes and stability improvements completed for the 0.3.5 release.
For the complete source comparison, see v0.3.4...v0.3.5.
This release is distributed as a complete version. No incremental patch package is required or provided.
Infernux v0.3.4
Infernux v0.3.4 · Full Engine Update
Version 0.3.4 is the largest Infernux release so far. It rebuilds the rendering, GPU VFX, editor interaction, asset, runtime, physics, and Player distribution paths around explicit ownership and production-facing workflows while keeping Python as the public gameplay and tooling layer.
Baseline for comparison: v0.2.9...v0.3.4
Highlights
- A programmable RenderStack and RenderGraph foundation now supports Forward, Forward+, and Deferred routes, reusable Effect assets, explicit stage mount points, custom pipelines, and per-camera render state.
- GPU Particle Graph now covers typed graph authoring, AOT graph-to-IR compilation, sprite, mesh, and ribbon outputs, events, continuations, sorting, culling, soft particles, and six-way lit smoke foundations.
- The editor now shares one interaction core for commands, shortcuts, selection, focus, documents, save/close transactions, dirty state, and undo/redo across Scene, Project, Inspector, Timeline, animation, FSM, and graph workflows.
- The asset system now treats GUID identity and Library artifacts as the durable contract, preserving references across moves and renames and separating authoring data from Player content.
- Standalone games use a native launcher, a private Python runtime, compressed
Content.inxpkg, packaged runtime shader sources and engine assets, and no editor services.
Rendering and shaders
- Added programmable Python RenderStack pipelines with ordered Effect and EffectGroup assets, explicit render stages, runtime parameter updates, and failure-safe fallback behavior.
- Unified Forward, Forward+, and Deferred geometry submission around the same material, lighting, shadow, and camera contracts.
- Added typed RenderGraph resources and passes, structural compilation caching, transient resource aliasing, explicit synchronization intents, renderer-list resources, and frame-safe retirement.
- Added structured GLSL stage metadata and interface linking so materials can author vertex, fragment, and shading-model responsibilities without manually maintaining descriptor layouts.
- Added reusable geometry-buffer requests for depth, normal, base color, motion, and project-defined buffers, including named sampling from specific passes.
- Isolated camera culling, shadows, render targets, and lighting resources so Scene, Game, preview, and runtime cameras no longer share mutable per-frame state.
- Added Forward+ tiled light lists, canonical GPU light data, light masks, particle lighting, and linked material surfaces.
- Improved shadow stability, cascade behavior, resource lifetime, MSAA routing, display encoding, fullscreen effects, outline, picking, gizmos, previews, and packaged-player render parity.
- Added engine-native capture for the editor, individual views, and game cameras.
GPU Particle Graph
- Replaced the public CPU/GPU split with a GPU-first particle workflow and retained one authoring model for emitter settings, Init, Update, events, and Rendering stages.
- Added a typed common graph core, Particle Graph editor, node defaults, typed attributes, curves, gradients, noise, conditionals, normalized age, rotation and size over life, and runtime-exposed parameters.
- Added sprite, static-mesh, and GPU-resident ribbon outputs with live materials, textures, alignment, UV controls, flipbook foundations, sorting, indirect drawing, and per-view culling.
- Added typed GPU event payloads, event routing, indirect spawning, continuations, waits, and graph-owned lifecycle state.
- Added plane, sphere, surface, vector-field, signed-distance-volume, skin-pose, and scene-depth interaction foundations.
- Added soft particles, six-way lit smoke support, emitter lifecycle controls, Scene/Game preview, selection, gizmos, bounds, diagnostics, and scheduling telemetry.
Assets, documents, and serialization
- Added revisioned Scene and Component documents with stable object and component identities, validation, transactional publication, rollback, and missing-script recovery.
- Added indexed asset records, dependency tracking, durable GUID references, asynchronous refresh arbitration, conflict-aware atomic writes, and current-disk reload semantics.
- Asset moves and renames now preserve references without requiring path-based runtime resolution.
- Expanded model, texture, shader, audio, material, prefab, animation, VFX, and physical-material import and preview paths.
- Added artifact-backed texture formats, mip generation, compression settings, GPU-correct previews, and broader common image, model, and audio format handling.
- Removed legacy serialization and shader syntax paths in favor of current schemas and explicit migration errors.
Editor authoring and interaction
- Added a global command and shortcut router with panel-aware focus and Play-mode editing support.
- Added authoritative global selection across Hierarchy, Scene, Project, Inspector, UI, Timeline, Console, FSM, and node-based editors.
- Added a global action journal with transaction-aware undo/redo for scene edits, asset operations, component operations, document navigation, Timeline keys, graph edits, and UI authoring.
- Unified Save, Save As, Discard, Cancel, close, exit, external-change arbitration, and dirty-state ownership across authoring windows.
- Rebuilt common Node Graph foundations for connection handling, dynamic node rebuilding, selection, parameters, contextual commands, and undo integration used by Particle Graph and animation FSM authoring.
- Improved Hierarchy expansion, persistent objects, component reordering, serialized resource fields, Project search and navigation, Console filtering, Inspector refresh, and authoring-panel docking.
Runtime, scripting, physics, and animation
- Improved Python component hot reload so method bodies and serialized fields can update during Play without replaying lifecycle entry points.
- Added safer runtime component proxies, lifecycle dispatch, coroutine waits,
WaitForEndOfFrame, deferred scene loading, and scene-request generation control. - Added batched native Transform and GameObject creation while preserving the standard scene model and public
instantiateworkflow. - Improved Jolt rigidbody synchronization, physical materials, collider shapes, fixed-step behavior, interpolation, collision callbacks, and coherent shadow/visible-transform submission.
- Expanded 2D clips, sprite animation, Timeline, skeletal animation, skinned meshes, FBX takes, animation state machines, and shared graph authoring.
- Added
DontDestroyOnLoadscene ownership and Hierarchy presentation for persistent runtime objects.
Player build and distribution
- Exported games now use one native launcher and a private runtime instead of installing into or modifying the user's system Python environment.
- Added the compressed
Content.inxpkgcontent container and Library-backed runtime assets while excluding editor panels, authoring metadata, caches, tests, and source-only services. - Packaged built-in and project shader sources, Effects, custom pipelines, display encoding, fullscreen passes, and other runtime-only render dependencies required for editor/Player parity.
- Added the wheel-distributed Player Runtime Pack, portable Hub archive, installer, incremental Hub manifest, and SHA-256 release manifest.
- Moved lengthy build, asset scan, content packing, and finalization work away from the editor frame loop and exposed progress and cancellation through the build UI.
- Release builds suppress native debug/info chatter while preserving Python logs and native errors.
MCP and validation
- Added an editor-side MCP Harness for deterministic project creation, scene and asset authoring, semantic UI inspection, bounded input, checkpoints, capture, and blocker reporting.
- MCP is an editor development and validation service; it is not included in exported games.
- Expanded native Vulkan, shader-linking, renderer, physics, headless, Python, packaging, website, and installed-wheel regression coverage.
Upgrade notes
- Back up or branch existing projects before opening them in 0.3.4. This release intentionally removes several legacy data and shader compatibility paths.
- Reimport project assets after upgrading so current Library artifacts and dependency records are available.
- Custom shaders must use the current structured shader schema and exact shader identifiers. Legacy
@syntax and hand-maintained engine descriptor layouts are no longer supported. - Particle authoring is GPU-first. Existing CPU-particle-only content is not part of the supported 0.3.4 workflow.
- Windows 10/11 x64 with Python 3.12 remains the primary supported development and distribution target.
Community
- Documentation: https://infernux-engine.com/wiki.html
- Community forum: https://infernux-engine.discourse.group/
- Issues: https://github.com/ChenlizheMe/Infernux/issues
Infernux v0.2.9
Infernux v0.2.9 · 0.3.0 Preview
This preview is the first large architecture update after v0.2.1. It rebuilds the scene, asset, rendering, physics, editor, automation, and distribution paths around stricter native data ownership while keeping Python as the public gameplay and tooling layer. It also adds new VFX, capture, build, and agent-facing workflows instead of being an MCP-only release.
Baseline for comparison: v0.2.1...v0.2.9
Scene data, serialization, and asset pipeline
- Introduced typed Scene and Component documents with stable object/component identities, strict validation, Python value codecs, missing-script recovery, and transactional publication or rollback.
- Added native atomic document storage and asynchronous scene reads, including dependency preflight, owner-thread commit boundaries, prefab-safe reference remapping, and stronger undo reconstruction.
- Reworked the AssetDatabase around indexed records and dependency tracking, with coordinated imports, artifact-backed meshes/textures/skinned meshes, safer rename/delete handling, and stable material and physical-material references.
- Improved runtime isolation and Play Mode transitions. Entering Play now refreshes the Python scripting domain without rebuilding an unchanged native graph; Stop restores the complete authored snapshot through the transaction path.
Rendering, VFX, and capture
- Expanded the render graph and RHI boundaries with explicit upload/residency accounting, asynchronous transfer publication, transient resource tracking, multi-camera state, and clearer ScriptableRenderContext contracts.
- Reworked material, texture, mesh, and preview lifetime management, fixing stale previews, descriptor pressure, delayed Inspector updates, and resource replacement races.
- Added the first VFX Graph and particle runtime, including typed VFX assets, compiler validation, renderer submission, and scene/game camera support.
- Added engine-native capture paths for the full editor, individual editor views, and game cameras. Capture does not depend on Windows screen APIs and remains compatible with hidden/headless rendering.
- Removed compute-shader authoring support. Parallel compute is intentionally routed toward external Python-compatible backends instead of extending the old compute-shader path.
Physics and large-scene performance
- Moved transform, component, and physics state toward contiguous native stores, with generation-safe handles, batched transform synchronization, deferred collider creation, and Jolt batch broadphase publication.
- Expanded collider and Rigidbody correctness, including physical materials, scene reload/rebinding behavior, contact lifecycle fixes, mesh cooking, runtime force delivery, and stricter serialized validation.
- Improved large-scene rendering and simulation stability through cached scene queries, render submission batching, static/dynamic body handling, and reduced Python/native round trips.
- PerformanceLab Play/Stop no longer rebuilds 10,000 unchanged native objects on entry. Measured internal transition cost fell from roughly
1.21s / 0.79sto0.43s / 0.59sfor Play/Stop, with repeated 10,001-collider cycles producing no runtime errors.
Editor and runtime UI
- Unified dirty-document, Save, Save As, close, and exit confirmation behavior across scenes and asset editors, including focused-panel
Ctrl+S, native file dialogs for people, and explicit paths for agent operations. - Improved Project, Inspector, Console, Hierarchy, menus, and window state, with native fast paths, cached plans, better focus/close interception, semantic control metadata, and lower per-frame polling overhead.
- Expanded Unity-style Screen UI behavior, including Canvas collection caches, persistent Button event targets, first-click Game View focus, runtime input routing, and editor-visible interaction semantics.
- Cached stable Screen UI rectangles and GPU command packets. SystemsLab increased from about
150 FPSto265 FPSin the packaged Release wheel while retaining invalidation for text, geometry, and button-state changes. - Improved animation, timeline, node graph, and VFX editor consistency, including shared graph interaction behavior, corrected timeline preview/runtime paths, and more predictable document switching.
Python API and agent validation
- Kept Python as the public engine surface while tightening C++ ownership. Public stubs, component identity, references, render APIs, physics settings, and parallel-backend contracts were expanded and validated.
- Added a two-mode MCP workflow for developer assistance and global validation, with semantic editor controls, deterministic input injection, frame/time-bounded runtime actions, transactions, checkpoints, blocker reports, and executable API guidance.
- Agent control remains editor-side. MCP is not exported into built games; player validation is launched and supervised from the editor so release games do not carry the development service.
- Added logic-first automated validation and optional recording/capture artifacts so agents can reproduce editor and gameplay workflows while human reviewers retain visual evidence.
Build and distribution
- Release presets now enforce the packaged runtime path, clean Python build artifacts and source metadata, verify native wheel payloads, and build the Windows launcher with Release LTO/IPO.
- Added a wheel-distributed Player Runtime Pack so projects do not compile Nuitka dependencies on first use. Core and optional parallel modules are staged as Deflate-compressed archives and expanded only when required.
- Reorganized game exports around a native launcher, private engine runtime, public data directory, and compressed
Content.inxpkginstead of exposing the source package layout directly. - Parallel support is prepared by Release builds by default but included in a game only when its build settings require the independent Numba/LLVM module.
Preview notes
- This release is a
0.3.0preview, not the final stable release. Scene/component documents, runtime packs, VFX, and MCP contracts are substantially newer thanv0.2.1and should be tested on copies of important projects. - Compute shaders are no longer accepted by the public shader API; use graphics shader stages or an external parallel backend.
- Restart the editor after installing a newly built wheel so Python modules, native bindings, and runtime-pack metadata come from the same build.
- Current verification: Release preset build succeeded, the packaged wheel passed SystemsLab and PerformanceLab validation, and the repository test suite completed with
1938 passed, 1 skipped.
Infernux v0.2.1
Infernux v0.2.1 · 熔炉
This is a focused stability and release-pipeline update after v0.2.0. It fixes the inline material preview path that could break when inspecting or creating SpriteRenderer materials, reduces noisy MeshCollider diagnostics, and makes the GitHub release workflow produce the Windows wheel and Hub installer from the same tagged version line.
Baseline for comparison: v0.2.0...v0.2.1
Editor and material preview fixes
- Fixed inline material preview crashes when the Inspector needed to render an unsaved or scene-local material preview from JSON instead of a
.matfile on disk. - Updated the Python preview callsite to match the unified C++ material-preview bridge, removing a stale
resource_keyargument that no longer belonged in the inline preview API. - Improved SpriteRenderer material inspection stability by letting inline previews resolve through the current path-hint based preview flow instead of an older mixed key/path call.
Physics and runtime cleanup
- Reduced MeshCollider log noise by silencing high-frequency shape/cooking info logs that were useful while debugging collision generation but too chatty for normal editor and runtime sessions.
GitHub Release and packaging automation
- GitHub Releases now use
UpdateLog.mdas the release body, so the release notes are authored intentionally instead of relying only on auto-generated PR summaries. - The version workflow now rebuilds when
UpdateLog.mdchanges or when the target release is missing, making patch-release publishing less fragile. - Windows release assets now include both artifacts from CI: the CPython 3.12 Windows wheel and
InfernuxHubInstaller.exe. - The publish job verifies required assets before editing or creating the release, preventing an incomplete release from being marked latest.
- Hub installer CI dependencies were fixed by installing the PyInstaller/PySide6/Pillow build requirements in the Windows workflow and removing a stale hidden import from the Hub spec.
Version, docs, and metadata
- Bumped project metadata to
0.2.1inpyproject.toml, Windows version resources, README badges, docs pages, MCP project metadata, and generated API index pages. - Updated Hub version-manager examples so downloaded engine wheels are documented under the
0.2.1cache layout. - Refreshed website and roadmap text so public project pages point at the current release line instead of
0.2.0.
Upgrade notes
- Install the new Windows wheel or Hub installer from this release if you hit Inspector material-preview failures in
v0.2.0. - Restart the editor after upgrading so the native preview bridge, Python UI layer, and MCP version metadata are all loaded from the same
0.2.1package. - If you maintain release automation for a fork, keep
UpdateLog.mdpresent and non-empty; the workflow now treats it as the canonical GitHub Release body.
Infernux v0.2.0
What's Changed
- 017/upgrade game builder by @ChenlizheMe in #38
- fix: remove the weird progres text by @hmr-BH in #42
- 017/fix chinese path by @ChenlizheMe in #46
- fix: double shortcut paste in Hierarchy panel and can't shortcut paste in Project panel by @Jianguo-Nut in #45
- Release Infernux 0.2.0 with animation FSM, Timeline, and automated releases by @ChenlizheMe in #48
New Contributors
- @hmr-BH made their first contribution in #42
- @Jianguo-Nut made their first contribution in #45
Full Changelog: v0.1.6...v0.2.0
Infernux 0.1.6 · 熔炉
Infernux v0.1.6 · 熔炉
This release turns Infernux's editor-facing MCP layer into a much more capable agent control plane: a FastMCP-backed server, hierarchical tool discovery, structured tool metadata with signatures / examples / return-shape hints, subsystem guides with knowledge-token gating, richer scene / camera / RenderStack control, and a safer runtime loop for long-horizon agents. It also lands a round of engine and editor hardening around scene safety, script error recovery, shader / material workflows, VSCode environment generation, and hot-reload edge cases.
Release tree: dd16c73388f1555093530ad760b9386b2a45862c
Baseline for comparison: 82763b512741892349a322301a9947d60524dc49
The infernux-0.1.6-cp312-cp312-win_amd64.whl and infernux-0.1.6.tar.gz assets attached to this GitHub release are rebuilt from the tree above. Infernux Hub and InfernuxHubInstaller.exe are updated in parallel for this milestone (same version line).
MCP framework and agent tooling
- FastMCP server surface: a full MCP server under
python/Infernux/mcp/with modular tools for assets, scenes, hierarchy, camera, UI, editor, runtime, materials, RenderStack, docs, project state, research helpers, transactions, and project-defined tools. - Configurable capability matrix:
mcp_capabilities.json/capabilities.pycentralize feature gates for research-grade MCP behavior (catalog, transactions, runtime observation, trace/evolution hooks, contracts, API discovery, RenderStack coverage, and more). - Hierarchical tool discovery:
mcp.catalog.list,mcp.catalog.get,mcp.catalog.search, andmcp.catalog.recommendlet agents browse tools by category and retrieve complete parameter / return metadata instead of guessing from raw names. - Automatic signatures and examples: tool registration now captures Python signatures, required parameters, defaults, return-envelope hints, and generated minimal examples for every MCP tool.
- Knowledge-token gating: shader, material, audio, and UI-sensitive operations can require a short-lived token returned by guide tools such as
shader.guide,audio.guide, orapi.get(...). This forces the model to read subsystem guidance before performing risky writes. - Python API discovery from stubs:
api.subsystems,api.get, andapi.searchindex.pyifiles first and fall back to.pysource so agents can query classes, methods, properties, enums, and short-name ambiguities from the real project API surface. - Project-defined agent tools: the
Assets/AgentTools/pipeline is formalized with decorators, registry, loadability checks, trace logging, and transaction helpers so projects can extend MCP without rebuilding engine code. - Research / trace hooks: configurable trace, contract, and tool-evolution helpers make the MCP layer usable for agent-evaluation and agent-tooling research rather than only editor automation.
Agent safety, recovery, and workflow hardening
- Scene-state guards: MCP now reports dirty / unsaved scene state back to the agent instead of letting the editor fall into modal prompts. Scene switching and mutation paths are blocked until the scene is in a safe state.
- Idempotent asset workflows: folder-creation and related asset paths were hardened so agents stop getting trapped in repeated
FileExistsErrorloops during scaffold generation. - Structured empty / failure responses: scene queries and RenderStack inspection now return reasons,
stop_repeating, and explicitnext_suggested_toolspayloads when nothing is found, reducing the chance that an LLM retries the same dead-end call forever. GET /mcpdiscovery endpoint: HTTP probes against/mcpnow return a200JSON response with server information instead of a 404, which makes client discovery cleaner.- Script-error hotfix: if a broken Python script is deleted or moved, its tracked error state is now cleared immediately instead of blocking Play Mode until an engine restart.
Scene, camera, render, and runtime control
- Richer scene queries: object search now supports exact / contains semantics for names and paths, better summaries, and more descriptive “no result” payloads for bootstrap scenes and service-only scenes.
- Camera understanding tools: agents can inspect the current view, report target visibility, frame selected subjects, and explicitly re-orient a camera toward a target set.
- RenderStack control plane: agents can inspect, create, select, and reconfigure scene RenderStacks and render passes directly through MCP, including pass parameters and injection-point visibility.
- Runtime observation tools: runtime-facing helpers can wait, run for controlled intervals, and collect script/runtime errors so the agent can validate outcomes instead of operating blind.
Engine, editor, and runtime fixes
- Serialized field robustness: class-level access to serialized fields no longer explodes in ordinary arithmetic / comparison flows, which fixes agent-authored scripts that referenced defaults through the descriptor object.
- Unbound component tolerance: editor callback paths around serialized fields and UI bootstrap inspection are more tolerant of components that are not yet attached to a live
GameObject, closer to the “do not crash the editor” behavior developers expect. - Active-scene file protection: file-watcher paths avoid mutating the currently open scene file behind the editor's back, reducing save / reload races.
- VSCode environment generation: generated workspace settings now point to the project-local
.venvcorrectly, including Windows Python executable paths and Pyright config. - AMD/editor viewport and shader hardening: the render/editor stack received a round of viewport, transform-cache, grid-shader, and material-path fixes, including the EditorGizmos grid cleanup.
Python API surface, stubs, and docs
- Stub coverage expanded:
.pyifiles were improved across audio, UI, materials, RenderStack, component exports, script loading, and package re-exports so agents and docs see a more faithful API surface. - Audio guidance improved:
AudioClip,AudioSource, andAudioListenerdocumentation now clarify track behavior, WAV lifecycle, and listener semantics. - UI guidance improved: UI canvas scaling, hit testing, enums, button event entries, and screen-component method signatures were expanded in the stub layer.
- Material / shader visibility: material metadata and docs expose more shader-facing information so agents can reason about bound vertex / fragment shaders and property layout.
- Docs / website rollout: the docs site, API index, and versioned release text were regenerated for
0.1.6, and the site/domain pipeline introduced the custom-domain deployment path now used by the public docs.
Packaging and release artifacts
Windows-facing artifacts for this line:
infernux-0.1.6-cp312-cp312-win_amd64.whl— Python wheel for CPython 3.12 on Windows amd64 (matches release commit above)infernux-0.1.6.tar.gz— source distribution (same commit)InfernuxHubInstaller.exe— Windows x64 Hub installer (updated for v0.1.6)- Portable Hub bundle — refreshed alongside the installer for this release
Upgrade notes
- Restart the editor / MCP server after upgrade so new tool registration, capability toggles, and subsystem guides are loaded into the running session.
- Agent integrations should prefer the catalog / API tools (
mcp.catalog.*,api.*, guide tools) instead of relying on memorized tool names or inferred argument shapes. - Sensitive shader / audio / UI / material writes may now require knowledge tokens. If a tool reports
error.knowledge_token_required, call the required guide tool first and retry with the returned token. - The generated VSCode workspace expects a project-local
.venv. Existing projects with custom interpreter settings may want to re-check their workspace settings after regenerating project files. - Broken-script cleanup is now immediate. Deleting a bad script should clear its tracked Play Mode blocker without restarting the engine.
Thank you
Thanks to everyone stress-testing the MCP workflow, surfacing agent failure loops, and pushing on scene safety, shader discoverability, API coverage, and hot-reload edge cases. The 0.1.6 release is shaped directly by that feedback loop.
Infernux 0.1.5 · 熔炉
Infernux v0.1.5 · 熔炉
This release lands the 3D animation foundation (skeletal animation, skinned mesh rendering, embedded FBX takes), reworks the Project / Inspector workflows and asset previews, adopts the official Chinese name 熔炉 (Róng Lú), and ships a fully rebuilt NASA-Punk styled documentation site. Baseline for comparison: v0.1.4 (08f473957c213e922e9db009138d3b8916a5bd13).
3D animation and skinning
AnimClip3Dassets: new core asset type with importer, schema versioning, and editor inspector. Embedded FBX takes are surfaced under each model as virtual.animclip3dsub-assets and can be dragged directly into the FSM canvas.- Skeletal animation runtime:
SkeletalAnimatorPython component plays backAnimClip3Ddata through the existingSpiritAnimator/AnimFSMgraphs; states acceptANIMCLIP3Dpayloads alongside the existing 2D path. - Skinned mesh rendering: new
SkinnedMeshRenderercomponent,InxSkinnedMeshresource, GPU skinning path, and a dedicatedSkinnedModelCache. The render pipeline gets matching descriptor / pipeline-manager updates for skinned draws. - Embedded takes UX: the Project panel now appends per-model sub-assets (materials + animation takes) with proper
animclip3dicons and a real expand/collapse glyph next to the model thumbnail. Take names that come back asArmature | Actionare normalised to justActionin the row label. - FSM + node graph: the generic node-graph canvas now accepts any drag-drop payload type, fixes drop targeting for
ANIMCLIP3D, and routes embedded takes throughGUID::subanimvirtual paths. The FSM editor adopts the matching upgrades.
Editor and asset workflows
- Project panel: redesigned model expand strip (pixel-aligned 32×32 PNG icon, hit-tested separately from the thumbnail), simplified label rendering, animation-clip rows that no longer collide with the model thumbnail icon, and a faster cached label path. Sub-asset rows correctly invoke the asset details renderer (formerly
asset_inspector→asset_details_renderer). - Inspector panel: centred component icons with snapped pixel coordinates (no more bilinear blur on small icons), low-resolution preview path for 16 px component badges, and missing-texture cleanup in the material preview path.
- Resource previews: new
GPUMeshPreview(Vulkan-backed), updatedGPUMaterialPreview, async transfer context (AsyncTransferContext), descriptor bind tracing, and a unifiedquery_or_schedule_texture_previewflow used by Project + Inspector + asset details. - Bootstrap and engine:
_bootstrap_wiringsplit,texture_task_bridge, preferences store (preferences_store,ide_preference), and a refreshed asset-details renderer module replacing the old monolithic asset inspector. - Editor icons: a complete redraw of every component icon under
python/Infernux/resources/icons/components/to a transparent NASA-Punk style 64×64 PNG (Audio / Collider / SkeletalAnimator / SkinnedMeshRenderer / SpiritAnimator / SpriteRenderer / UI Canvas / UI Button / UI Image / UI Text), plus 64×64 NASA-Punk file-type icons (animclip2d,animclip3d,animfsm,shader_hlsl, etc.) and chevron icons (model_expand_open,model_expand_closed).
Renderer and core
- Rendering core:
InxRenderer,InxVkCoreModular,VkCoreGlobals,VkPipelineManager,MaterialDescriptor,MaterialPipelineManager,OutlineRenderer,RenderPassOutput,ScriptableRenderContext,VkCoreDraw, andVkCoreMaterialall received targeted updates for skinning, descriptor reuse, and async transfer. - Vulkan device layer:
VkDeviceContextandVkResourceManagerextended with new sampler / image helpers, plus a brand-newVkHandletranslation layer. - Asset / resource layer: new
InxSkinnedMeshandSkinnedModelCache,MeshLoaderextended for skinning data,ConcreteImportersupdated to surface model material slots and animation take metadata.
Python layer
- Components:
skeletal_animator.py,builtin/skinned_mesh_renderer.py, the renameanimator2d.py→spirit_animator.py, and broaderref_wrappers/serialized_field/_component_nativerefinements. - Core:
core/animation_clip3d.py,core/anim_state_machine.py, expandedcore/assets.py,core/asset_ref.py,core/asset_types.py,core/material.py. - Engine / UI: preferences store, IDE preferences, async texture bridge, refreshed
inspector_material,inspector_ui_components,node_graph_view,animfsm_editor_panel,animclip2d_editor_panel,project_utils,window_manager, plus an undo system split (_animfsm_commands,_helpers,_property_commands,_renderstack,_snapshots,_trackers,_component_commands).
Documentation, branding, and site
- Engine name: the project now formally adopts the Chinese name 熔炉. Repository, package, and CLI strings remain
Infernux.README.mdandREADME-zh.mdcarry the bilingual title (Infernux · 熔炉/熔炉 · Infernux); the Python package metadata (pyproject.toml) reflects the same. - Docs site rebuild:
docs/index.html,docs/roadmap.html,docs/wiki.html,docs/js/i18n.js,docs/css/style.css,docs/css/mission.css,docs/css/roadmap.css,docs/css/wiki.cssare completely rewritten in a NASA-Punk / Starfield-inspired style:- persistent top mission ribbon with the bilingual engine name (
INFERNUX · 熔炉), driven entirely by i18n; - keeps the existing
data-i18n/data-href-en/data-href-zhmechanism, so the API docs (wiki/site/en|zh/api/index.html) and the wiki manifest (assets/wiki-docs.json) continue to render throughjs/wiki.js; - primary brand colour stays at
#eb5757; light theme uses an off-white NASA-style cream surface; - the runtime capture section now embeds the existing
docs/assets/demo.png(height-shaded voxel scene at 173 FPS).
- persistent top mission ribbon with the bilingual engine name (
- Wiki API index:
Version 0.1.5/版本 0.1.5rolled throughdocs/wiki/generate_api_docs.py,docs/wiki/docs/{en,zh}/api/index.md, and the corresponding generated HTML. - Python wheel:
infernux-0.1.5-cp312-cp312-win_amd64.whl(CPython 3.12, Windows amd64) and matchinginfernux-0.1.5.tar.gzare produced by the normal CMakereleasepreset (package_and_install_python); the Hub portable bundle (dist/Infernux Hub/) anddist/installer/InfernuxHubInstaller.execontinue to ship as in prior releases.
Upgrade notes
- Python 3.12 remains the supported baseline for the packaged wheel (no Python version change in this release).
- Animation formats (
animclip2d/animclip3d/animfsm) are still evolving; treat the 3D path as preview the same way 2D was treated in 0.1.4. - Module rename:
animator2d→spirit_animatorfor the runtime Python module. TheAnimator3Dalias is fully gone in 0.1.5; switch toSkeletalAnimator/SpiritAnimator. - Inspector renderer rename:
engine/ui/asset_inspector.py→engine/ui/asset_details_renderer.py. External call sites importingasset_inspectorshould switch to the new module name. - Resource paths: the bundled icon set under
python/Infernux/resources/icons/has been refreshed (file-type icons, component icons). Custom projects that overrode any of these icons should re-validate their copies against the new 64×64 transparent-background versions. - Docs site:
docs/css/mission.css,docs/css/roadmap.css, anddocs/css/wiki.csshave new class hooks. Forks that customised the site should diff against this release before redeploying.
Thank you
Thanks to everyone who tested the 3D animation path, surfaced editor icon / preview issues, and gave feedback on the docs site reskin — the 0.1.5 release is shaped directly by that loop.
Infernux 0.1.4
Infernux v0.1.4
This release advances the 2D rendering and animation authoring stack, tightens several editor and asset workflows, and lands a substantial node-graph / animation FSM editor refresh on top of the work already tagged as 0.1.4. Baseline for comparison: v0.1.3 (52d87ce0bfdfd922acc29071d0307ecf837d0273).
Rendering and 2D
- Sprite pipeline: Shader-based 2D sprite rendering with aspect handling, integrated with the asset system and editor inspectors.
- Textures: Filter, wrap, and anisotropic sampling are wired through the full material / render path;
SPRITEis added as a first-class texture usage for 2D content. - Scene / lighting: Improvements around double-sided shadows and more predictable shadow behaviour in common setups.
Animation (authoring and runtime)
- Clips and state machines:
.animclip2dauthoring in the editor,.animfsmstate-machine assets, runtime playback viaSpiritAnimator, and dedicated editor panels for clips and FSM graphs. - 2D animation preview: Stack-style preview in the clip workflow and related inspector integration.
- Node graph (FSM editor):
- Camera model uses a single graph-space view centre plus zoom; pan is derived from the real ImGui canvas item rectangle so pan/zoom and saved view state stay aligned across docking and window resizes.
- Per-state header colour is stored on the asset (
AnimState.header_color), edited from a header swatch on the node (not the side inspector), with undo integration. - Narrower state nodes, larger title and pin (In/Out) labels, optional brighter pin label colour for readability, and transition link midpoint text removed for a cleaner graph.
- Side panel widths in the FSM editor are tightened to give more space to the graph.
- Core graph model:
NodeGraphgains clearer schema/versioning and helpers; unit tests cover round-trip serialization.
Editor, UI, and tooling
- UI Editor: Workspace and canvas chrome use the same dark palette as the node graph (
NODE_GRAPH_*alignment); workspace is explicitly filled so the void colour matches the graph editor. - Inspector / theme: Shared
InspectorThemeBasestyling (inspector_theme.py) andpanel_spacingutilities reduce duplicated colour math and keep inspector stacks and materials consistent. - Materials: Inspector material path and bootstrap inspector materials wiring are adjusted for the new texture and sprite options.
- Input / ImGui: Small key and binding surface updates for editor shortcuts.
- Player mode: Less editor UI overhead when running in player mode.
- Misc editor fixes: Console behaviour around play/clear, script lifecycle in edit mode, scene rename vs build settings, and related hotfixes from the 0.1.3 → 0.1.4 window.
Documentation and distribution
- README / site / wiki: Brought up to date with 0.1.4, including demo callouts and API index refresh where applicable.
- JIT documentation: Architecture write-up expanded with a deeper dive and roadmap notes.
- Python wheel:
infernux-0.1.4-cp312-cp312-win_amd64.whl(CPython 3.12, Windows amd64) is produced by the normal CMakereleasepreset (package_and_install_python); the Hub and installers continue to live underdist/as in prior releases.
Upgrade notes
- Python 3.12 remains the supported baseline for the packaged wheel.
- 2D animation formats (clips / FSM) are still evolving; treat advanced authoring features as preview where noted in docs.
Thank you
Thanks to everyone reporting issues and trying early builds—feedback on the 2D and animation path directly shaped this release.
Infernux 0.1.3
Release date: April 2026
Highlights
- Rendering CPU overhead slashed — A comprehensive optimization pass across the entire C++ render pipeline eliminates ~5 ms/frame of CPU overhead for 14,400-object scenes, bringing frame times down to the ~4 ms range. Optimizations include DrawCall caching, zero-copy shadow passes, shared_ptr elimination, and EndFrameCache fast-path.
- O(N²) startup stall fixed —
ProcessPendingStartswas quadratic; 10,000 objects caused a ~15 s stall. Now O(N) with integer ID + bulk pre-allocation. - Physics batch optimization — Deferred body creation, batch broadphase insertion, and
snprintf-based GUID generation cut physics setup costs significantly. - Player build 67 MB lighter —
av/ffmpegare now excluded from standalone player builds when unused. - Large-scale code quality pass — Silent
except Exception: passblocks removed across the Python layer; bootstrap/undo/inspector modules split into focused packages; C++ quick-win quality improvements applied.
Performance
C++ Renderer Pipeline
- Eliminate
shared_ptrcopy storm in DrawCall pipeline — all hot-path signatures now takeconst&or raw pointers. - Renderable/draw-call caching with dirty flags — skip full rebuild when scene is stable.
- EndFrameCache fast-path — avoid redundant end-of-frame copies;
const&matrices in loop bodies. - Merged single-pass rendering where separate passes were unnecessary.
- Zero-copy game shadow — shadow draw lists reference existing data instead of copying.
- Skip stale draw-call writes for objects whose transforms haven't changed.
- Eliminate redundant per-frame copies; static-object memcmp fast-path.
- Skip editor culling when only game prepare is needed.
- Reduce render submission and cleanup overhead.
- Cache shadow filter + sort results;
is_sortedearly-out; skipEnsureObjectBuffersfor stable scenes.
C++ Scene & Physics
ProcessPendingStartsO(N²) → O(N) — eliminates ~15 s stall on 10,000 objects.- Integer ID + bulk pre-allocation for creation hot path.
- Physics batch optimization + deferred body creation.
snprintf-based GUID generation replacing string stream.TransformBatchHandle,m_anyWorldMatrixDirtyflag,ComputeWorldBoundscache.- Batch creation with shared mesh deduplication.
Python Editor
i18n,build_settings_panel,inspector_componentsoptimized (complexity scores < 500).- Editor performance and Python stability improvements.
Improvements
Build & Packaging
- Exclude
av/ffmpegfrom player builds (~67 MB saved). - No-JIT mode fixes —
csvstdlib import, numba requirement stripping, JIT default off. - BuildSettings JIT toggle UI.
Editor
- Texture picker Assets-only filter with popup height limits.
- ProjectPanel keyboard shortcuts.
- Minor editor UI theme/icon/ImGui updates.
Code Quality
- Silent exception removal — Batch removal of
except Exception: passpatterns across the Python codebase, replaced with proper error handling or explicit logging. - Module split —
bootstrap_inspector,bootstrap_hierarchy, andundoextracted into focused packages. - C++ Phase 1 quick-wins — magic number extraction, const-correctness, naming consistency.
- Phase 2 shared helpers — extracted shared scene and inspector helpers to reduce duplication and coupling.
- Deduplicated undo py-component commands, inspector UI helpers, and tooltip boilerplate.
- Extracted bootstrap wiring modules and table-driven undo snapshots.
- Engine renderer duplicate helper definitions consolidated.
Bug Fixes
- Fix editor panel bugs, UI prefab canvas tracking, and drag-drop improvements.
- Fix
begin_childborder argument and BuildSettings JIT toggle. - Fix transform undo, enum iteration,
Engine.instancesingleton access, and texture search scope. - Fix no-JIT mode build —
csvstdlib, numba requirement stripping, default JIT off. - Fix test file hotfix.
Upgrade Notes
- No breaking API changes. This release is fully backward-compatible with 0.1.2.
- JIT default changed: JIT is now off by default in build settings. Toggle it on explicitly in BuildSettings if your project uses
@njit. - Player builds smaller: If your deployment pipeline relies on
av/ffmpegbeing bundled, add them back explicitly in your build configuration.