Cocos Creator 3.8 Is Here! Learn More About It In Our Release Notes

Release Notes for Cocos Creator 3.8


Custom Render Pipeline with Post-Processing

Creator 3.x relies on post-processing as the most demanding requirement for 3D games. Before, developers were recommended to use RenderTexture for production but did not provide built-in capabilities. The main reason is that the custom rendering pipeline supporting post-processing still needs to be completed. After the 3.7 Cyberpunk Demo verified the custom rendering pipeline, With Cocos Creator 3.8, we can finally deliver developers anti-aliasing, super-resolution, ambient light occlusion, glare, and other post-processing effects. These post-processing processes are currently integrated into CustomPipeline, on the one hand as an example of RenderGraph. On the other hand, it can also be used as a testing ground for our standard “Forward” pipeline.

  1. Anti-aliasing: Provides FXAA with very low power consumption and time based TAA with better quality.

  1. Super-resolution FSR: This helps to either achieve higher image quality with lower cost, or reduce the performance pressure while keeping the same resolution.

  1. Bloom: Greatly improve the visual quality of your game by enhancing the lighting range of the highlight areas.

  1. HBAO: High quality real time ambient occlusion, it can visually improve the sense of space and the rendering quality.

  2. Custom Color Grading: This is a very simple but effective post-processing method, which can be used to enhance contrast, saturation, adjust color, white balance, and other image properties. Support any Nx1 bar graph and 8x8 block size. The system automatically adapts to different input format.

Starting from 3.8, we recommend all projects that need post-processing to switch to the Custom Rendering Pipelines, and you can refer to the Full-Screen Post Process documentation to activate it for your project. You can also refer to the example project using post-processing pipeline to learn how to use it.

2D & UI

● High-definition Label: This optimization will upgrade all the Label components in your project to higher resolution automatically. The implementation is to recalculate the actual rendered font size of the Label according to the pixel scaling ratio of the view to obtain a higher resolution text texture. The difference of resolution varies, but it will be much bigger especially on mobile platforms. Besides, 2D renderer refactor have landed in this version, the main goal is to make the 2D renderer adapt to different operating systems and have a relatively unified framework for implementing various components. The implementation of high-definition Label also benefits from this, and it will be easier to expand 3D UI in the future and 2D rendering capabilities in 3D spaces.


● Use Spine WebAssembly runtime library to replace web library, unify Web & Native runtime and APIs.

● Reduce the initial memory allocation of WebAssembly and allow dynamic expansion of memory.

● Spine now uses WebAssembly to run on Web and WeChat games, significantly optimized performance.



Rendering algorithm and advanced material updates

  1. Skin effects: add simple skin effect and advanced skin effect, example can be found in Character scene of Cocos Example Materials repository.

  2. Eyeball effect: add advanced eye effect, example can be found in the same scene as skin effects.

  1. Leaf effect: add advanced leaf effect.

  1. Supports pre-baked simulation animations exported by Houdini and Zeno: This feature allows developers to integrate high-quality physical simulation animations calculated offline into their projects, including explosion, fluids, cloth, etc. This could be very helpful in making the game narrative scenes or some fixed scenes with great expressiveness, especially for in-app 3D simulations such as car HMI.

a. Zenustech Zeno

b. SideFX Houdini


  1. Blending support in Reflection Probes: In previous versions, the movement of dynamic objects between different probe areas will cause jumps. In 3.8, not only the effect mixing between Probes is supported, but also the mixing between Probes and skyboxes is supported. You can get a very natural transition effect in different baking areas and indoor to outdoor scenes.

Procedural animation in Marionette animation system

Pose graph and IK support

We have introduced a new feature to the Marionette animation system: pose graphs. This new feature will provide support for procedural animation as well as dual bone IK animation. Using the pose graph, developers can conveniently define various procedural animations, and action poses through the node system to build more complex and delicate scene interactions. This will also significantly reduce the number of animations users need to create character animations. For example, you can define the IK of a character’s feet on different planes, let the character climb terrain at different heights, or look in a particular direction while walking. In addition, the pose graph can also be used as a supplement to the animation state machine, which can be nested in the state machine. For details, see: “Cocos Creator 3.8 Manual - Procedural Animation.”


Auxiliary curves support for skeletal animation

When making complex procedurally generated animations, you may need to add variable curves to the animation for logical judgment or as variables. We’ve added auxiliary curves to the animation editor to meet these needs. You can now add additional curves to any skeletal animation, and once added, these curves can be read and blended in the pose graph and state machine. This new feature will allow greater freedom and help you better control and customize animations.


In addition, the Marionette animation system has the following upgrades:

● The animation state machine removes the experimental transition interruption function and supports multiple transitions instead.

● Numerical conditions of the animation state machine support several different types of conditional bindings: weight binding, animation time binding, and auxiliary curve value binding.

● The hierarchy panel supports dragging to adjust the sorting order.

Physics system updates

  1. New CharacterController component: for role-playing and action games, it can significantly reduce the cost of character development and has built-in character control capabilities which can naturally interact with the environment.

  1. Constraints: Added ConfigurableConstraint component, which can be used to customize the connection methods of various physical components to achieve complex uni-objects, such as car axles and various joints.

  2. Constraints: Hinge constraints add new shaft drive and rotation range restrictions.

  1. New sweep collision detection


Lightmap baker updates

● The filter option “Apply Filter” is added to the light map panel, which is used to set the blur effect of the light map, enabled by default.|604.7333333333333x520.3821522309711px

● LightFX supports alpha threshold in builtin standard material.


● Shadow saturation also works in LightFX baker


RenderGraph: infrastructure for custom render pipeline

The customization capability of render pipeline is officially opened to developers in 3.8. It also supports our bultin post-processing capabilities. For the specific usage of the custom render pipeline, please refer to the Custom Render Pipeline, or refer to the custom pipeline examples repository. Some detailed upgrades of RenderGraph in 3.8 are as follows:

● Use RenderGraph to implement the Custom Forward Pipeline with support for all builtin Post-Processing effects.

● Use RenderGraph to implement Custom Deferred Pipeline to optimize the architecture, maintainability, and scalability.

● Add Compute Shader capability.

● Pipeline type is divided into BasicPipeline and Pipeline.

● Pipeline adds the capabilities APIs, which can obtain the graphics capabilities of the current hardware platform.

● Refactored the interfaces of MovePass and CopyPass.

Asset Bundle workflow optimization

Asset Bundle now supports building specified Bundles separately, which allows users to update resources independently, and the function entry is located in the selected Bundle folder settings.


Support for adding filtering options in the Bundle folder settings, allowing users to more flexibly filter the resources in the Bundle that will participate in the actual build.


Optimize the platform setting method of Bundle configuration, support preset format, and facilitate users to manage export options for different platforms accurately.


Note: After upgrading the project to 3.8, Cocos Creator will automatically migrate the Bundle configuration to the project settings. Please submit changes to the project’s settings folder and the metafile corresponding to the bundle folder to the project source code library (such as Git) after the upgrade to avoid configuration conflicts.

Build options support only building Bundles.|604.7333333333333x206.29700787401575px

The Bundle that participates in the construction is supported to be filtered during construction, and all are exported by default.


Workflow optimization for model LOD

In addition to the support for importing LOD models in the previous version, we added support for displaying LOD information in the model and the new LOD automatic generation function so that users can use LOD more efficiently.

Users can directly import any model that does not contain LOD in 3.8 and set different LOD levels in the model import options. Cocos Creator will automatically generate lower LOD levels by reducing the surfaces and automatically add the LOD Group component when creating a model instance in the scene.


Unified workflow for integrating WebAssembly library and more WebAssembly libraries

Starting from 3.8.0, some engine modules have been implemented using wasm, including spine, rendering webGPU backend, physics engine bullet, and PhysX backend. Pay attention to the following when using it:

● Package sizes

WASM (release) asm.js (release)
WebGPU 1.27 MB N/A
spine 402 KB 728 KB
bullet 468 KB 917 KB
PhysX 2.55 MB 5.12 MB

● Platform differences

Native Web Mini games
WebGPU It does not support WebGPU, built without the entire module. After the build, the wasm and asm.js modules will be brought over only if webGPU is checked, and asm.js can be forcibly removed in the build panel. It does not support WebGPU, built without the entire module.
spine Use native implementation, built without wasm and asm.js modules. Use wasm module. Automatically fall back to asm.js module on unsupported browsers.

Include wasm and asm.js in built package, asm.js can be forcibly removed in the build panel.|WeChat uses wasm module, and asm.js module is used on other platforms.

In built package, WeChat only includes wasm, and other platforms only include asm.js.|
|bullet|Use wasm module on all native platforms except iOS.

Wasm is not supported on the iOS side, and only asm.js is included in the built package.|Use wasm module. Automatically fall back to asm.js module on unsupported browsers.

Include wasm and asm.js in built package, asm.js can be forcibly removed in the build panel.|WeChat uses wasm module, and asm.js module is used on other platforms.

In built package, WeChat only includes wasm, and other platforms only include asm.js.|
|PhysX|Use native implementation, built without wasm and asm.js modules.|Use wasm module. Automatically fall back to asm.js module on unsupported browsers.

Include wasm and asm.js in built package, asm.js can be forcibly removed in the build panel.|WeChat uses wasm module, and asm.js module is used on other platforms.|

Future plans for WebAssembly include:

● Optimization of wasm package size by using sub-packages on the mini-game platforms: support auto subpackage of engine wasm module on minigame platform · Issue #15493 · cocos/cocos-engine · GitHub

● Experimental support for wasm module loading on the project side: support wasm module on project scripts · Issue #14980 · cocos/cocos-engine · GitHub

● Integrate third-party WebAssembly support on the iOS platform, relying on the performance result support WebAssembly on native iOS platform · Issue #15170 · cocos/cocos-engine · GitHub


If you enable wasm subcontracting on the WeChat platform, please enable the physics wasm option at the same time. Otherwise, it will cause the engine to fail to start. We will provide a fault-tolerant process in 3.8.1

● In addition to the WeChat platform, if the engine asm.js subpackage is enabled on other small game platforms, the spine module needs to be checked. We will deal with this problem in 3.8.1, and the fix PR is merged to 3.8.1

● Due to the large size of the physX physical backend, wasm subcontracting is currently not supported

New platform supports

Google Play Games on PC Support

At this year’s Google IO conference, Google Play Games on PC and large-screen experience are the Android platform updates that have received great attention. Cocos has also been officially recommended by Google as an engine for Google Play Games on the PC platform and a recommended game engine for a large-screen experience.

Several well known Cocos games has already published on the platform. Starting from v3.8, you only need to check the x86 architecture and the InputSDK option when building Android to meet the platform requirements of Google Play Games on PC. This platform is an important opportunity for Google Play to expand to the desktop platform. Like the continuous emergence of folding screens and tablets, it marks that large-screen adaptation is becoming more and more critical for mobile games, and it can also help developers acquire more users.

OpenHarmony Support

The Cocos engine and the OpenHarmony team have been working closely together for more than two years and have jointly pushed forward the continuous improvement of the OpenHarmony system’s support in the gaming industry. Now we are thrilled to announce the official support of the latest OpenHarmony 4.0 version.

Other platform updates

● Support gamepads as an input device on Android.

● Support for customizing the CLEANUP_IMAGE_CACHE macro for a single platform.

● Add Executable Name field for Window/Mac platforms.


● Android build adds Input SDK integration option|442x119px

● Add CMake Generator / Visual Studio version option for Windows build|397x224px

● Support to execute Make separately through the stage parameter when building on the command line. See “Publish in the Command Line” for details.

● Support Alipay mini game platform, please refer to detailed publish instruction.

● Support XHR on Taobao mini game platform.


● We have added the “Fill Vertex Color” option in the model import function. This prevents models that lack vertex color attributes from being blacked out on import. If your material uses vertex color, but the imported model does not have vertex color, or the model is abnormally black when imported, it is recommended that you enable this option.


● Automatic atlases can be previewed in the property inspector without clicking save.

● The minimum display time of the interstitial screen will be ignored when the browser previews and the interstitial screen will be closed immediately after the loading is completed.

● Browser preview resolution supports being set to full screen.|600x73.39223097112861px

● The preview server port is adjusted from the global configuration to the local configuration.

● Browser preview and build platform preview support HTTPS protocol to adapt to the security restrictions of some particular environments. This function needs to be enabled in the preview tab of preference settings.

● Support import and export the complete configurations of preferences and project settings.|675.2537532808399x361.1724934383202px

● The program manager of the preference setting supports configuring the default image editor.

● The default design resolution of newly created projects has been adjusted from the 960x640 to 1280x720

● Hierarchy manager supports using the shortcut keys [ or ] to move nodes up and down. If you press Ctrl / Command at the same time, it will be the top/bottom node.

● When you open the preferences, project settings, animation graph, and other panels, they will be displayed at the location of the scene editor by default

● The @menu decorator of the component supports the use of menu paths, for example:

import { menu } from 'cc'@ccclass('TestMenu')@menu('TestGroup/TestMenu')export class TestMenu extends Component {}

The corresponding component menu is displayed as follows:|349x448.7143307086614px

● Add EDITOR_NOT_IN_PREVIEW macro, which is used to simplify the judgment of various plug-ins and debugging codes on the editor’s operating environment. If it is true, it means that the code is executed in the editor and the scene is not in the preview state. Example:

import { EDITOR_NOT_IN_PREVIEW } from 'cc/env';if (EDITOR_NOT_IN_PREVIEW) {    this._updateEnum();}

● Optimize the gradient color editor, support input of hexadecimal color value (Hex Color).

● By default, standalone graphics cards are used first on computers with both standalone graphics card and builtin graphics card in CPU (like Intel IRIS).

● Optimized the user experience of various editor items.



See Full engine commits history


● Fix some problems with undo and redo, improve the stability of Undo system

● Fix the problem that two interstitial screens will be displayed at the same time on the WeChat mini-game and the iOS platform

● Fix the problem that the build may be stuck when resources are circularly dependent

● Fix the problem that the build will fail when the game name on the Android platform contains Chinese

● Fix the problem that the game name on the native platform is not verified

● Fix the problem that the script may be lost when starting the editor

● Fix the problem that the layer will become the layer of the parent node when cloning a node

● Fix the problem that there is no prompt to save when switching scenes when setting the active state of the node

● Fix the related problems of nested prefabs

● Fix the problem that the data is not cleared after the prefab rewrite attribute information becomes invalid

● Fix object reference related issues of prefabs

● Fixed the problem that the pasted 2D components were not displayed correctly in prefab editing

● Fix the problem that other bounding boxes are affected when the physical bounding box is modified

● Fix resetInEditor not being called in the editor

● Fix the problem that the environment reflection is dark after using the reflection probe

● Fix the problem that the effect of plane reflection is not correct when it is not horizontal

● Fix radiosity error for baked GI materials

● Fix the problem that the model may not be visible when using the surface reduction algorithm to reduce the surface of the imported model

● Fix the problem that keyboard and mouse event support is incomplete when the editor is previewing

● Fix the problem that an error may be reported when deleting resources in batches

● Fix other editor-related issues

Breaking Changes

● Required Gradle is upgraded to 8.0.2, and AGP is upgraded to 8.0.2. JDK needs to be upgraded to JDK 17. At the same time, required Android Studio is upgraded to 2022.2.1.

● Adjustment of underlying logic of text, users who want to deeply customize label component capabilities to the assembler layer need to migrate customization capabilities to TextProcessing, which doesn’t affect the visual effect.

● High-definition text: Since the text textures generated by each platform are not exactly the same, there may be a rendering difference of 1-2 pixels from the previous version.

Known Issues

● Android Instant App running on the Android Studio Flamingo | 2022.2.1 Patch 2 version may have unresponsive problems, it is recommended to consider carefully before upgrading.

● RichText with a length greater than 2048 may have irregular line breaks on some platforms, the behavior will be adjusted and optimized in subsequent versions.


Hello. I decided to try the version 3.8. I added Skeleton animation.
When the application was launched, the animation always started working by itself. In this version it doesn’t work anymore.
If you run it from the code, it works


Why did the animation stop running itself when the application was launched?

Thanks for the feedback, I tested it according to your steps. It is normal on my side, can you send me your test project?

Hello sir. I would like to learn how skeleton work in cocos creator. Will you show me kindness and help me to learn this?

Thank you. This is my test project.

Thanks. I’ll take a look now.

I found the reason, the spine’s animation name is a number initialized to be parsed as an integer passed in. This prevented the animation from playing. Temporarily you can not use numbers as animation names. We will optimize this issue later. We handle the case where numbers are passed in but the initialization is ignored. Thanks for your valuable feedback.

thanks for your help!

Not sure what you mean, if you want to learn how to use

If you want to learn the implementation, you need to take a look at our engine repo

i’m looking for admob extensions :slight_smile:

good news!
it will be released soon these days.