Skip to content

v0.7.0

Audio System

A complete cross-platform audio module with ECS components, bus-based mixing, and spatial audio support.

  • AudioSource component — attach to any entity to play sound effects or music, with properties for volume, pitch, loop, bus routing (sfx, music, ui, voice), and playOnAwake
  • AudioListener component — add to the camera or player entity to enable spatial audio with configurable attenuation models (Linear, Inverse, Exponential)
  • Static Audio APIAudio.playSFX(), Audio.playBGM(), Audio.stopBGM() for quick one-shot playback; per-bus volume control via Audio.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 AudioContext resume handling; playOnAwake defers until the context is running

Sprite Animation

A frame-based sprite animation system with a visual clip editor in the editor.

  • SpriteAnimator component — plays registered animation clips with configurable speed, loop, and play state
  • .esanim asset format — define animation clips with a list of texture frames and FPS
  • Clip registryregisterAnimClip() / getAnimClip() API for managing animation clips at runtime
  • Editor visual editor — create and edit .esanim clips 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 as Tween.to()
  • 16 easing functions — all easing functions ported 1:1 from C++ to JS, including CubicBezier and EaseOutBounce
  • Cross-type chaining — chain Tween.to() and Tween.value() via .then() in any order
  • applyEasing() utility — public function to evaluate any easing curve for custom use

Refactoring

  • Asset build transformsregisterAssetBuildTransform() API on AssetTypeEntry replaces per-type branching in emitters. Both platform emitters now use generic entry.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-memory and nontrapping-float-to-int in 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 AssetTypeRegistry and FileInspector / InspectorHelpers
  • Preload audio assets in editor scene manager
  • Skip AudioPlugin system 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 WebAudioBackend using direct fetch instead of platform readFile
  • Harden stats module against edge cases and XSS

Audio

  • Defer playOnAwake until AudioContext is 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 explicit play() instead of autoplay, add onError callback

WeChat Build

  • Fix anim-clip textures missing in build — add build transform to rewrite atlas-packed frame paths with atlasFrame metadata

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