Open-source project
axmolengine/axmol avatar
axmolengine/axmol

Axmol Engine: A Cocos2d-x 4.0 Fork That Keeps 2D Games Alive on Modern Platforms

Axmol Engine, A Multi-platform Engine for Desktop, XBOX (UWP), WebAssembly and Mobile games. (a fork of Cocos2d-x-4.0).

1,453 stars296 forksC++MIT

At a glance

What is it?
Axmol is a C++ 2D game engine forked from Cocos2d-x 4.0, adding Vulkan, D3D12, WebAssembly, and Xbox UWP support. This review covers its build system, renderer backends, extension modularity, and the v2 LTS vs v3 dev branch split.
Who is it for?
Adopt Axmol if you maintain a Cocos2d-x 2D game and need to target modern desktop renderers (Vulkan, D3D12), WebAssembly, or Xbox UWP without rewriting your codebase. Avoid it if you want a stable v3 release soon, since the dev branch is experimental and v2.11.x is the final v2 LTS.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Axmol Solves for Cocos2d-x Users

Axmol is a fork of Cocos2d-x v4.0, launched in November 2019, and it addresses a specific pain point: Cocos2d-x's original renderer stack was aging. The README states that Axmol has 'iterated and improved over the Cocos2d-x v4.0 base' and is 'now faster and more capable, while staying lightweight.' The engine targets mobile (iOS, Android), desktop (Windows, Linux, macOS, tvOS), Xbox via UWP, and WebAssembly. For a team with an existing Cocos2d-x project, the migration guide promises an easy path, which is a strong draw if you need to move to newer graphics APIs or ship to the web. The primary language is C++, with Lua support, so it fits developers who prefer native code over scripting-heavy engines.

Render Backends: Vulkan, D3D12, Metal, and More

The most significant technical shift in Axmol is its renderer abstraction. As of axmol-v3, the engine supports Vulkan for Windows, Linux, and Android; D3D12 and D3D11 for Windows and UWP; Metal for Apple platforms; OpenGL 3.3+ for Linux, macOS, and Windows; OpenGL ES 2.0+ for Android; OpenGL ES 3.0+ for iOS and tvOS; ANGLE GLES 3.0+ for Windows and UWP; and WebGL 2.0 for WebAssembly. This breadth means you can write a 2D game once and target a desktop PC with Vulkan, an Xbox with D3D12, and a browser with WebGL. The README notes that Vulkan and D3D12 support are 'since axmol-v3', so they are not in the v2 LTS branch. That is a key distinction: if you need those modern backends, you must use the experimental dev branch, which carries 'unstable or experimental features' per the branch notice.

Building Axmol: CMake and Platform-Specific Flags

The build process is CMake-based, and the README points to a 'Setup & Building Guide' in docs/DevSetup.md. A concrete example of a configuration flag is for audio: you can force OpenAL Soft with `-DAX_USE_ALSOFT=ON`. If you do not set that option, the CMake script chooses OpenAL.framework on macOS, iOS, and tvOS, even though Apple deprecated it. This shows that Axmol gives you control over third-party dependencies, but also that you must be aware of platform defaults. The build system is described as 'powerful cross-platform build system', and there is a Windows workflow guide for linking with prebuilt engine libs, which can speed up iteration. For a team new to the engine, the first step is to read the DevSetup guide, not to assume a single command works everywhere.

The v2 LTS vs v3 Dev Branch Split

Axmol's repository structure is unusual: the default branch is `dev`, which serves as the v3 development branch and is 'under active development and may contain unstable or experimental features.' The `release/2.x` branch is in 'stable maintenance phase', and 2.11.x is the final v2 LTS release. This means if you use the default branch for a production project, you are signing up for instability. The README is explicit: 'For production deployment, continue to use the release/2.x branch for stability and compatibility.' The trade-off is that v2 lacks the newer render backends like Vulkan and D3D12, which are v3 features. You cannot get both stability and the latest graphics support in the same branch. This is a critical decision point for any team evaluating Axmol.

Modular Extensions and Third-Party Dependencies

Axmol has moved optional extensions out of the engine core and into an extensions folder. The README lists included extensions: FairyGUI, ImGUI, Spine, Live2D, Effekseer, and more. This modularization is a maintenance win because you can omit features you do not need, reducing build size and attack surface. For audio, Axmol refactored the AudioEngine to use OpenAL Soft or the Apple OpenAL framework, and it supports all .wav formats that OpenAL Soft supports, including MS-ADPCM and ADPCM. The engine also reimplemented HttpClient based on yasio for concurrent HTTP requests. For licensing, the README points to third-party and extensions license overviews, which is useful for commercial publishing, but you must verify each dependency's license yourself.

Limitations and When Axmol Is the Wrong Tool

Axmol is a 2D engine, so if you need full 3D, it is not the right choice. The README mentions JoltPhysics for 3D physics, but the engine's focus is 'well-suited for 2D game development.' Another limitation is the WebAssembly support is marked as 'Preview', with links to test pages, so do not assume it is production-ready. The v2 LTS branch does not include the newer render backends, so if you target Windows with Vulkan, you must use the unstable dev branch. Also, the README warns against submitting large-scale reformatting PRs to release/2.x, which suggests the maintainers prioritize stability over code churn. If you need a mature 3D engine or a stable web build today, look elsewhere.

Alternatives: Cocos2d-x and Godot

The obvious alternative is staying with Cocos2d-x itself. The README includes a wiki page comparing Axmol to Cocos2d-x, but the key difference is that Axmol is a fork that adds modern render backends and platform support, while Cocos2d-x's official releases have slowed. Another alternative is Godot, which is a full game engine with a scene editor and a scripting language (GDScript), whereas Axmol is a code-first C++ library. Godot also supports 2D and 3D, and it has a stable web export, but it is a different workflow: you build scenes in an editor rather than writing everything in C++. If you want to keep your Cocos2d-x codebase, Axmol is a path forward; if you are starting fresh and want an editor, Godot is more accessible.

Maintenance and Upgrade Costs

The maintenance cost of Axmol depends on which branch you choose. The v2 LTS branch receives only critical bug fixes and security patches, so you will not get new features. The dev branch is where new development happens, but it is unstable. Upgrading from v2 to v3 will require re-testing your renderer code, especially if you rely on OpenGL, since v3 adds Vulkan and D3D12 as new paths. The README mentions a migration guide for Cocos2d-x projects, but not a v2-to-v3 migration guide, so that upgrade path is unclear. The license is MIT, which is permissive, but you must check the licenses of included third-party libraries like OpenAL Soft, yasio, and pugixml. The README provides a third-party license overview, which is a good starting point for compliance.

Editorial conclusion

Adopt Axmol if you maintain a Cocos2d-x 2D game and need to target modern desktop renderers (Vulkan, D3D12), WebAssembly, or Xbox UWP without rewriting your codebase. Avoid it if you want a stable v3 release soon, since the dev branch is experimental and v2.11.x is the final v2 LTS. Before adopting, verify your target platform's renderer support and the exact migration steps in the official Migration Guide, and confirm that your required extensions (Spine, Live2D, etc.) are still maintained in the modularized extensions folder.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes