Skip to content

Releases: ChenlizheMe/Infernux

Infernux v0.3.6

Choose a tag to compare

@ChenlizheMe ChenlizheMe released this 24 Aug 02:46

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

Choose a tag to compare

@ChenlizheMe ChenlizheMe released this 23 Aug 11:50

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

Choose a tag to compare

@ChenlizheMe ChenlizheMe released this 21 Aug 11:13

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 instantiate workflow.
  • 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 DontDestroyOnLoad scene 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.inxpkg content 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

Infernux v0.2.9

Choose a tag to compare

@ChenlizheMe ChenlizheMe released this 17 Jul 00:27

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.79s to 0.43s / 0.59s for 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 FPS to 265 FPS in 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.inxpkg instead 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.0 preview, not the final stable release. Scene/component documents, runtime packs, VFX, and MCP contracts are substantially newer than v0.2.1 and 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

Choose a tag to compare

@github-actions github-actions released this 10 Jul 15:33

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 .mat file on disk.
  • Updated the Python preview callsite to match the unified C++ material-preview bridge, removing a stale resource_key argument 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.md as 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.md changes 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.1 in pyproject.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.1 cache 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.1 package.
  • If you maintain release automation for a fork, keep UpdateLog.md present and non-empty; the workflow now treats it as the canonical GitHub Release body.

Infernux v0.2.0

Choose a tag to compare

@github-actions github-actions released this 25 Jun 09:51

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

Full Changelog: v0.1.6...v0.2.0

Infernux 0.1.6 · 熔炉

Choose a tag to compare

@ChenlizheMe ChenlizheMe released this 01 May 15:10

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.py centralize 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, and mcp.catalog.recommend let 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, or api.get(...). This forces the model to read subsystem guidance before performing risky writes.
  • Python API discovery from stubs: api.subsystems, api.get, and api.search index .pyi files first and fall back to .py source 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 FileExistsError loops during scaffold generation.
  • Structured empty / failure responses: scene queries and RenderStack inspection now return reasons, stop_repeating, and explicit next_suggested_tools payloads when nothing is found, reducing the chance that an LLM retries the same dead-end call forever.
  • GET /mcp discovery endpoint: HTTP probes against /mcp now return a 200 JSON 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 .venv correctly, 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: .pyi files 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, and AudioListener documentation 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 · 熔炉

Choose a tag to compare

@ChenlizheMe ChenlizheMe released this 27 Apr 04:58

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

  • AnimClip3D assets: new core asset type with importer, schema versioning, and editor inspector. Embedded FBX takes are surfaced under each model as virtual .animclip3d sub-assets and can be dragged directly into the FSM canvas.
  • Skeletal animation runtime: SkeletalAnimator Python component plays back AnimClip3D data through the existing SpiritAnimator / AnimFSM graphs; states accept ANIMCLIP3D payloads alongside the existing 2D path.
  • Skinned mesh rendering: new SkinnedMeshRenderer component, InxSkinnedMesh resource, GPU skinning path, and a dedicated SkinnedModelCache. 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 animclip3d icons and a real expand/collapse glyph next to the model thumbnail. Take names that come back as Armature | Action are normalised to just Action in 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 through GUID::subanim virtual 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_inspectorasset_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), updated GPUMaterialPreview, async transfer context (AsyncTransferContext), descriptor bind tracing, and a unified query_or_schedule_texture_preview flow used by Project + Inspector + asset details.
  • Bootstrap and engine: _bootstrap_wiring split, 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, and VkCoreMaterial all received targeted updates for skinning, descriptor reuse, and async transfer.
  • Vulkan device layer: VkDeviceContext and VkResourceManager extended with new sampler / image helpers, plus a brand-new VkHandle translation layer.
  • Asset / resource layer: new InxSkinnedMesh and SkinnedModelCache, MeshLoader extended for skinning data, ConcreteImporters updated to surface model material slots and animation take metadata.

Python layer

  • Components: skeletal_animator.py, builtin/skinned_mesh_renderer.py, the rename animator2d.pyspirit_animator.py, and broader ref_wrappers / serialized_field / _component_native refinements.
  • Core: core/animation_clip3d.py, core/anim_state_machine.py, expanded core/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.md and README-zh.md carry 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.css are 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-zh mechanism, so the API docs (wiki/site/en|zh/api/index.html) and the wiki manifest (assets/wiki-docs.json) continue to render through js/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).
  • Wiki API index: Version 0.1.5 / 版本 0.1.5 rolled through docs/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 matching infernux-0.1.5.tar.gz are produced by the normal CMake release preset (package_and_install_python); the Hub portable bundle (dist/Infernux Hub/) and dist/installer/InfernuxHubInstaller.exe continue 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: animator2dspirit_animator for the runtime Python module. The Animator3D alias is fully gone in 0.1.5; switch to SkeletalAnimator / SpiritAnimator.
  • Inspector renderer rename: engine/ui/asset_inspector.pyengine/ui/asset_details_renderer.py. External call sites importing asset_inspector should 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, and docs/css/wiki.css have 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

Choose a tag to compare

@ChenlizheMe ChenlizheMe released this 18 Apr 06:51
6087533

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; SPRITE is 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: .animclip2d authoring in the editor, .animfsm state-machine assets, runtime playback via SpiritAnimator, 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: NodeGraph gains 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 InspectorThemeBase styling (inspector_theme.py) and panel_spacing utilities 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 CMake release preset (package_and_install_python); the Hub and installers continue to live under dist/ 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

Choose a tag to compare

@ChenlizheMe ChenlizheMe released this 10 Apr 12:49

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 fixedProcessPendingStarts was 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 lighterav/ffmpeg are now excluded from standalone player builds when unused.
  • Large-scale code quality pass — Silent except Exception: pass blocks 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_ptr copy storm in DrawCall pipeline — all hot-path signatures now take const& 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_sorted early-out; skip EnsureObjectBuffers for stable scenes.

C++ Scene & Physics

  • ProcessPendingStarts O(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_anyWorldMatrixDirty flag, ComputeWorldBounds cache.
  • Batch creation with shared mesh deduplication.

Python Editor

  • i18n, build_settings_panel, inspector_components optimized (complexity scores < 500).
  • Editor performance and Python stability improvements.

Improvements

Build & Packaging

  • Exclude av/ffmpeg from player builds (~67 MB saved).
  • No-JIT mode fixes — csv stdlib 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: pass patterns across the Python codebase, replaced with proper error handling or explicit logging.
  • Module splitbootstrap_inspector, bootstrap_hierarchy, and undo extracted 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_child border argument and BuildSettings JIT toggle.
  • Fix transform undo, enum iteration, Engine.instance singleton access, and texture search scope.
  • Fix no-JIT mode build — csv stdlib, 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/ffmpeg being bundled, add them back explicitly in your build configuration.

Contributors