v0.7.0
Audio System
A complete cross-platform audio module with ECS components, bus-based mixing, and spatial audio support.
AudioSourcecomponent — attach to any entity to play sound effects or music, with properties for volume, pitch, loop, bus routing (sfx,music,ui,voice), andplayOnAwakeAudioListenercomponent — add to the camera or player entity to enable spatial audio with configurable attenuation models (Linear, Inverse, Exponential)- Static
AudioAPI —Audio.playSFX(),Audio.playBGM(),Audio.stopBGM()for quick one-shot playback; per-bus volume control viaAudio.setMasterVolume(),Audio.setMusicVolume(), etc. - Editor integration — audio file inspector with inline preview player, drag-to-scene support, and a mute toggle button in Game View
- Cross-platform — uses Web Audio API with automatic
AudioContextresume handling;playOnAwakedefers until the context is running
Sprite Animation
A frame-based sprite animation system with a visual clip editor in the editor.
SpriteAnimatorcomponent — plays registered animation clips with configurable speed, loop, and play state.esanimasset format — define animation clips with a list of texture frames and FPS- Clip registry —
registerAnimClip()/getAnimClip()API for managing animation clips at runtime - Editor visual editor — create and edit
.esanimclips directly in the editor with frame preview
Profiler & Stats Panel
Real-time performance monitoring with an overlay panel and frame inspection.
StatsPlugin— add to your app to enable performance collection with an optional on-screen overlay- Metrics — FPS, frame time, draw calls, triangle count, sprite/text/spine/mesh counts, culled entities, total entity count
- System timings — shows the top 5 slowest systems per frame with execution time in milliseconds
- Frame history — 300-frame rolling buffer for trend analysis; supports pause/resume and per-frame inspection
- Editor integration — profiler panel accessible from the editor toolbar
Value Tween
JS-side value tweening for animating custom properties beyond the built-in targets.
Tween.value()API — tween any numeric value with a callback, using the same easing, delay, loop, and sequencing features asTween.to()- 16 easing functions — all easing functions ported 1:1 from C++ to JS, including
CubicBezierandEaseOutBounce - Cross-type chaining — chain
Tween.to()andTween.value()via.then()in any order applyEasing()utility — public function to evaluate any easing curve for custom use
Refactoring
- Asset build transforms —
registerAssetBuildTransform()API onAssetTypeEntryreplaces per-type branching in emitters. Both platform emitters now use genericentry.buildTransform()calls. Users can register custom transforms for their own asset types. - Tree-shaking — enable tree-shaking and consolidate runtime initialization logic for smaller bundles
- AssetTypeRegistry — centralized asset type metadata, replacing scattered per-module registration
- Audio platform abstraction — audio backend creation moved into the platform adapter layer
- WASM optimizations — enable
bulk-memoryandnontrapping-float-to-intin wasm-opt for better performance
Bug Fixes
Editor
- Fix gizmo drag Transform value fighting — use direct Transform sync instead of deferred updates
- Fix circular dependencies between
AssetTypeRegistryandFileInspector/InspectorHelpers - Preload audio assets in editor scene manager
- Skip
AudioPluginsystem registration in editor Scene View (audio only runs in Game View) - Stop all audio when exiting editor play mode
SDK / Runtime
- Fix
RenderTexture.resize()losing depth buffer and filter settings - Fix browser preview not loading audio clips and animation clip assets
- Fix
WebAudioBackendusing directfetchinstead of platformreadFile - Harden stats module against edge cases and XSS
Audio
- Defer
playOnAwakeuntilAudioContextis running to avoid silent playback on first load - Add audio MIME type detection and auto-repair for unknown asset meta files
- Fix WeChat audio not playing — set properties before
src, use explicitplay()instead ofautoplay, addonErrorcallback
WeChat Build
- Fix anim-clip textures missing in build — add build transform to rewrite atlas-packed frame paths with
atlasFramemetadata
Testing
- Add TDD tests for core SDK modules (world, input, resource, query) with 100% coverage
- Add TDD tests for rendering pipeline (renderTexture, sceneManager)
- Add TDD tests for UI modules (uiMath, uiLayout)
- Add asset type tests and expand logger test coverage to 100%
Other
- Add proxy support for auto-updater via environment variables