Download Latest Version axmol-2.9.0.zip (223.7 MB)
Email in envelope

Get an email when there's a new version of Axmol Engine

Home / v2.9.0
Name Modified Size InfoDownloads / Week
Parent folder
axmol-2.9.0.zip 2025-10-05 223.7 MB
axmol-bs-2.9.0.zip 2025-10-05 56.5 kB
README.md 2025-10-05 6.0 kB
v2.9.0 source code.tar.gz 2025-10-05 29.8 MB
v2.9.0 source code.zip 2025-10-05 34.9 MB
Totals: 5 Items   288.5 MB 1

The 2.9.0 release is a minor LTS release for bugfixes and improvements

🙏Thanks to all contributers of axmol include financial sponsors: @scorewarrior,@peterkharitonov,@duong,@thienphuoc, @bingsoo, @asnagni and Past sponsors

🙏We are deeply grateful to @scorewarrior for their incredible support — increasing their GitHub Sponsors contribution by $2,000/month, on top of their ongoing $3,000/month sponsorship via the Open Source Collective. Your generosity helps keep the Axmol project thriving and growing.

Significant changes relative to 2.8.x:

3D Audio & Basic Effects

  • Add support for audio panning by @rh101 in #2719
  • Add support for playing audio at any position in 3D space by @rh101 in #2740
  • Initial implementation adding support for audio effects and filters using OpenAL by @rh101 in #2772
  • Fix reverb properties values by @rh101 in #2779

Other Changes

  • Add screen orientation control for mobile devices by @halx99 in #2784
  • Add new API EventKeyboard::isRepeat by @halx99 in #2735
  • Add new API ZipFile::createWithData and mark ZipFile::createWithBuffer as deprecated by @halx99
  • Enhance Base64 decoder to skip whitespace/newlines and prevent premature termination by @halx99
  • Add Device::resolveOrientation and compact resolution logic by @halx99 in #2792

Bug fixes

  • Fix ui::MediaPlayer may crash on Apple platforms by @halx99 in #2704
  • Fix occasional missing Android assets in AAB build by @paulocoutinhox in #2713
  • Fix format specifiers in logging calls by @rh101 in #2749
  • Fix for crash when director is reset during scene transition by @halx99 #2802

Improvements

  • Add Http setDataCallback for streaming data support by @halx99 in #2805
  • Improve ios EditBox orientation handling with keyboard by @halx99 in #2791 and #2795
  • Add support for extracting the previous scene from the scene stack by @rh101 in #2793
  • Destroy ScriptEngine instance before _scheduler to respect dependency by @halx99
  • Fix SpineTest aim y-axis by @halx99
  • Replace deprecated calls with new API in engine by @halx99
  • Update controller.cpp: rename "Audio - NewAudioEngine" to "AudioEngine" by @aismann in #2731
  • Fix addressed several non-critical issues for lua-tests by @halx99
  • Remove non-existent yaml-cpp from template cmake modules by @halx99
  • Remove CI pull-request trigger event: ready_for_review by @halx99
  • Update kcp to resolve cmake error by @halx99
  • Dispatch applicationScreenSizeChanged when layoutSubviews on ios by @halx99
  • Rename internal ios class: EARenderView => RenderHostView by @halx99
  • Make Director::getRunningScene() return the expected result for any type of scene switch when called from Node::onEnter() by @rh101 in #2799

SDK & Tools updates

  • webview2: 1.0.3405.78 => 1.0.3485.44

3rdparty updates

  • curl: 8.15.0 => 8.16.0
  • freetype: 2.13.3 => 2.14.1
  • jpeg-turbo: 3.1.1 => 3.1.2
  • luajit: 2.1-f9140a6 => 2.1-871db2c

Notes

Add new API: ZipFile::createWithData

Rationale
The existing API ZipFile::createWithBuffer has a design flaw. It accepts a const char* buffer without clarifying ownership, which makes the API dependent on the external buffer’s lifetime. This can lead to undefined behavior and hard-to-trace bugs.

Improvement
The new API ZipFile::createWithData takes a Data object as its parameter. Since Data supports move semantics, ownership and lifetime are explicit. This ensures safer usage, reduces the risk of misuse, and provides more predictable behavior for developers.


Add screen orientation control for mobile devices

Rationale
Previously, screen orientation could only be configured statically through platform settings
(e.g., info.plist on iOS or AndroidManifest.xml on Android). This limited flexibility,
as the rendering orientation could not be changed at runtime once the app was launched.

Improvement
A new core API Device::setPreferredOrientation has been introduced.
- When orientation support is already declared in info.plist (iOS) or AndroidManifest.xml (Android),
this API allows dynamic modification of the rendering orientation at runtime.
- Developers can now switch between portrait and landscape modes programmatically,
adapting to gameplay, UI flow, or user preferences.

Benefit
- Consistent cross-platform orientation handling.
- Eliminates the need for platform-specific code to adjust orientation dynamically.
- Improves user experience by adapting rendering orientation seamlessly during runtime.

Developer Note
The engine only performs basic adaptation internally.
It is still recommended that developers handle their own resolution and layout adjustment strategies
inside AppDelegate::applicationScreenSizeChanged to ensure proper scaling and UI behavior
across different devices and orientations.

MD5 Hash of the release artifacts

  • axmol-2.9.0.zip: 4dbbb9057edc1ecdbd67990ff4ed4fed
  • axmol-bs-2.9.0.zip: 750562c7fd090705b6595956e1923fc7
Source: README.md, updated 2025-10-05