// the find
cocos/cocos-engine
Cocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to create high-performance, engaging 2D/3D games and instant web entertainment.
Cocos Engine is the runtime backing the Cocos Creator editor — a mature cross-platform game engine targeting mobile (iOS, Android, HarmonyOS), desktop, web, and mini-game platforms like WeChat and TikTok. It's split C++/TypeScript: the low-level renderer, physics, and platform adapters are C++, while the user-facing scripting API is TypeScript. If you're building games primarily for the Chinese mobile market or WeChat mini-games, this is the serious open-source alternative to Unity.
The GFX abstraction layer is well-thought-out — same shader code compiles to Vulkan, Metal, WebGL2, and WebGPU targets automatically via their effect format, which removes a lot of per-platform pain. The render pipeline is genuinely customizable at the graph level, not just parameter tweaks — you can replace the entire forward/deferred pipeline if you need to. Mini-game platform support (WeChat, TikTok, Facebook Instant Games) is first-class and maintained by people who actually ship there; this is not an afterthought. The Marionette animation system is a proper state machine with pose graphs and blend trees, comparable to what Unity ships — not a toy.
The engine is tightly coupled to the Cocos Creator editor and explicitly says it's not designed to be used standalone — you can't just drop this into your own build pipeline without the editor as the integration point, which limits how you can use it in non-standard workflows. Documentation quality drops sharply outside the happy path; the API references exist but deeper architectural explanations are sparse, and most community knowledge is in Chinese forums. WebGPU support is listed but the .d.ts file is in @types and the actual implementation maturity is unclear from the repo alone — don't assume parity with the WebGL path. The mixed C++/TypeScript architecture means debugging across the boundary is painful; stack traces from native crashes don't map back to TypeScript cleanly.