cocos-engine icon indicating copy to clipboard operation
cocos-engine copied to clipboard

v3.6.0 feature note

Open minggo opened this issue 2 years ago • 26 comments

minggo avatar Apr 21 '22 09:04 minggo

native related:

  • implements more classes in C++, improve performance
  • unify stl container usage, all containers are added in ccstd namespace
  • use ccnew/delete instead of CC_NEW/CC_DELETE https://github.com/cocos/cocos-engine/issues/10634
  • add high level JS binding codes https://github.com/cocos/cocos-engine/pull/11125 need documentation @PatriceJiang
  • [Android] integrate Android game activity https://github.com/cocos/cocos-engine/pull/10794
  • [windows] remove win32 support, only support win64
  • [iOS] the lowest supported iOS version changed from iOS 10 to iOS 11 to use C++17

minggo avatar Apr 21 '22 09:04 minggo

all platforms:

  • add dynamic mesh
  • add spline utility class

native related:

  • add freetype & bitmap font
  • add debug renderer
  • add profiler

stanleyljl avatar Apr 21 '22 09:04 stanleyljl

terrain brush support rotation meshrenderer auto set lightmap for render lightmap baker support tga texture

MSoft1115 avatar Apr 21 '22 09:04 MSoft1115

instanced particle support particle noise module added

zxx43 avatar Jul 12 '22 06:07 zxx43

bindings: [FEATURE] Support TextEncoder & TextDecoder for converting Uint8Array to String with better performance. https://github.com/cocos/cocos-engine/pull/10665

bug fixes: [FIX] Use 32 bits hash in native code to avoid precision loss when returning 64 hash value to JS. https://github.com/cocos/cocos-engine/pull/11179

dumganhar avatar Jul 12 '22 06:07 dumganhar

feature:

  • support audio PCMData and sampleRate getter https://github.com/cocos/cocos-engine/pull/11470
  • support native module, and deprecate global variable jsb https://github.com/cocos/cocos-engine/issues/11135

bug fix:

  • ban UI hitTest on renderTexture https://github.com/cocos/cocos-engine/pull/11299
  • fix invalid mouse button in move move event https://github.com/cocos/cocos-engine/pull/11661
  • fix webp support detect on Safari 14+ https://github.com/cocos/cocos-engine/pull/11552
  • fix game.end() on minigame platform https://github.com/cocos/cocos-engine/pull/11473
  • dispatch cancel event when node is destroyed while it's being touching https://github.com/cocos/cocos-engine/pull/11684

enhancement:

  • print deprecate info for exported binding name from cc module https://github.com/cocos/cocos-engine/issues/10821

behavior change:

  • remove audioTimer for minigame platform (now we get audio currentTime from the platform interface, audioTimer is not a good implementation) https://github.com/cocos/cocos-engine/pull/11351

breaking change:

Since the ES6 to ES5 function of ByteDance DevTools cannot work well, we have turned this function off by default on 3.6.0. For this reason, we have manually transformed the module specification of the Open Data Context project template to CommonJS. Otherwise, we'll encounter this issue: the Open Data Context project will not work well with ES Module. If your project in PROJECT_PATH/build/bytedance-mini-game/openDataContext also encounter this issue, please refer to this PR to fix it: https://github.com/cocos/cocos-engine/pull/12334/files

PPpro avatar Jul 12 '22 06:07 PPpro

Features:

  • New surface shader framework for effects
  • Rendering debug view modes with surface shader image
  • Support baking GGX convolution IBL reflection map image

Bug fix:

  • Ambient lighting type issues
  • fix display errors and crashes with old phones

jk20012001 avatar Jul 12 '22 06:07 jk20012001

Feature:

  1. support preview in editor(gameview)
  2. support surface snapping and vertex snapping for gameobject position
  3. support mesh asset thumbnail preview
  4. support option to turn on scene update in 60FPS (lab)

Bug:

  1. fix some prefab editing bugs like failed to save changed property、saving error data and so on
  2. fix the prompt of modified after opening the scene/prefab without performing any operation
  3. fix hireachy's and scene's shortcut keys can't interact with each other
  4. fix some preview panel bugs

dogeFu avatar Jul 12 '22 07:07 dogeFu

Features:

  • iOS/ Android Downloader support breakpoint download https://github.com/cocos/cocos-engine/pull/10968 https://github.com/cocos/cocos-engine/pull/11408 https://github.com/cocos/cocos-engine/pull/11097 https://github.com/cocos/cocos-engine/pull/11638
  • provides the ability to customize native Downloader by exporting DownloaderHints interface https://github.com/cocos/cocos-engine/pull/11673
  • refactor downloaderTask related API to TS style & provide more detailed example documents. https://github.com/cocos/cocos-engine/pull/11697

Bug fix:

  • refine Downloader.setOnTaskProgress paramaters from BigInt to Number to avoid error when use in TS script. https://github.com/cocos/cocos-engine/pull/11580

mmyduckx avatar Jul 12 '22 07:07 mmyduckx

Feature

  • We introduce new modele named settings, You can access settings data during the game. For example.
import { settings } from 'cc';

const customSettings = settings.querySettings('customSettings', 'game mode');
  • Introduce more event during the game luanching, you can inject some custom logic in application.js. For example
  init (engine) {
        cc = engine;
        cc.game.onPostBaseInitDelegate.add(this.onPostInitBase.bind(this));
        cc.game.onPostSubsystemInitDelegate.add(this.onPostSystemInit.bind(this));
  }

  onPostInitBase () {
      // cc.settings.overrideSettings('assets', 'server', '');
      // do custom logic
  }

  onPostSystemInit () {
      // do custom logic
  }

BREAKING CHANGE

  • We have unified the naming rules for built-in effects and user effects, When using the EffectAsset.get interface to get a built-in effect or use IMaterialInfo.effectName to create material , the parameter passed in needs to be the standard name of the asset in the editor image
  • We have changed application.js template to make customization less difficult,You will need to migrate your custom logic from application.js to the new application.js template
  • We have split data in settings.json into multiple modules. If you had customized settings.json, you need to migrate to new settings template

holycanvas avatar Jul 12 '22 07:07 holycanvas

Feature: add an editable material, allow users set any material. image

xubing0906 avatar Jul 12 '22 07:07 xubing0906

Improvement

  • 2D module rendering reimplemented in C++ for native platforms, optimizing 2D rendering performance for native platforms

Known Issue

  • Tilemap module is not yet fully integrated into the new 2d rendering process, so it will not render on the native platform for now, we will fix this issue in the official release

holycanvas avatar Jul 12 '22 07:07 holycanvas

Features:

  • Add sebind APIs, allow bind C++ classes to JS in a easier way. Similar to embind
  • Add native plugins support.
  • Record and validate native/ directory's version, output error log in case of version incompatibility.

PatriceJiang avatar Jul 12 '22 07:07 PatriceJiang

  • Add CSM feature
  • Instanced and batched multi light shadow support

troublemaker52025 avatar Jul 12 '22 07:07 troublemaker52025

  • 全局
    • 全局配色更换
    • 顶部菜单左侧的 Gizmo 菜单移动到了场景内 image
    • 编辑器顶部区域交互优化 image
    • 支持 mesh 缩略图 image
    • 支持在资源输入框内搜索资源,鼠标悬停时在场景内预览 image
  • 场景
    • 新增 Game View 功能
    • 新增 Debug view 功能
    • 调整了场景内工具栏交互
    • 支持 Gizmo 移动吸附
  • inspector
    • 调整了属性显示方式
  • 开发工具
    • 内置L10n 本地化工具
  • 动画图
    • 支持动画预览
    • 变量重命名
    • layer 重命名
    • 过度线的排序
    • 动画图现在可以将某个过渡配置为可中断的,以允许指定的过渡被其它的过渡中断。该功能可在实验室功能中打开
    • 动画图的增加了”终点起始时间“属性,以让过渡的终点动画在指定的位置上开始播放

VisualSJ avatar Jul 12 '22 07:07 VisualSJ

native related

  • A better experience when using Editbox on iOS platform and Windows platform image
  • Refactor game.end to close the window more naturally

Fix bug

  • Add v8's dynamic library on the Windows platform to avoid bugs
  • Simulator in cocos creator now is in the release version, to run faster

timlyeee avatar Jul 12 '22 07:07 timlyeee

Feature

  • A basic version of SpreiteRender is provided. (experimental) Spriteframe can now be rendered in 3d space.
  • Provides base ordering capabilities for rendering components. (experimental)
  • Fill z position in all ui

Bug fix

  • fix some ui render bug

LinYunMo avatar Jul 12 '22 07:07 LinYunMo

【构建相关】

功能优化相关

  • 优化构建构建生成的交互逻辑,后续可以在界面上自由组合相关任务一起执行; 2591cd8842b7e74890425acad988e616

  • 资源服务地址已作为全平台共用参数,支持一键使用构建内置服务器,方便本地开发测试; image

  • 优化了构建内编译引擎与编译脚本的任务调度,独立进程执行,降低构建进程对内存的占用;

  • 优化了预览的 settings 加载速度;

  • 支持直接在命令行调用编译、运行方法;

  • 允许在偏好设置内添加自定义 cmake 工具供原生构建使用;

  • 支持直接在 assets 面板筛选 Bundle 文件夹,快速找到 Bundle; image

  • 构建钩子函数支持 onError 钩子函数用于捕获构建失败的情况;

  • 允许在偏好设置里关闭构建纹理压缩、引擎、自动图集对缓存的使用; image

[BUG] 相关

  • 修复未关闭浏览器的预览窗口打开其他项目会出现报错;
  • 修复小米点击运行后可能出现端口被占用;

【动画编辑器相关】

  • 动画剪辑可以添加 嵌入播放器 。每个播放器都指定了一段播放时间,当动画剪辑进入这段时间时,播放该播放器内容;当动画剪辑离开这段时间时,该播放器停止播放。 目前支持附加两种播放器:粒子播放器、动画播放器。 image

  • 动画编辑器直接双击节点列表、属性列表名称位置直接折叠对应区块;

原始 issue:https://github.com/yanOO1497/3d-tasks-new/issues/1

VisualSJ avatar Jul 12 '22 07:07 VisualSJ

Feature:

  • Use texture instead of uniform vectors when skeleton joints more than hardware supported.( https://github.com/cocos/cocos-engine/pull/11378)

zhakesi avatar Jul 12 '22 08:07 zhakesi

Localization Editor

Localization Editor 是 3.6 推出的官方新版 i18n 方案,提供了更紧密的编辑器集成和更强大的本地化能力。目前作为实验性功能推出,更多介绍可移步 https://forum.cocos.org/t/topic/136913 。 (公测期间先不放图)

编辑器预览

不少游戏引擎都支持在编辑器中直接运行、调试游戏,只不过定位上略有差异。这样的功能之前被不少开发者称为 GameView,在 3.6 中我们正式命名为【编辑器预览】。目前作为实验性功能推出,更多介绍可移步 https://forum.cocos.org/t/topic/137529 。 (公测期间先不放图)

jareguo avatar Jul 13 '22 02:07 jareguo

场景编辑器优化

框选支持

方便的场景框选功能使场景编辑更加灵活方便,用户无需在层级管理器中寻找需要被多选的物体名称,全部覆盖在选择框中的物体会被选中,未全部覆盖的物体不会被选中。

image

场景表面吸附以及顶点吸附

在用户制作场景时,物体的排布经常需要对齐等功能,单纯的把物体拖入场景中容易导致物体漂浮在一个很远的坐标,从而浪费用户大量的时间调整。现在除了最基础的网格吸附之外,我们新添加了两种吸附模式,并且在这两种吸附模式中都支持用户自由选择物体上的吸附点:

表面吸附 (快捷键:Ctrl/Command + Shift):

对于有碰撞体组件的物体,表面吸附会吸附在碰撞体表面,而对于没有碰撞体的物体,表面吸附会吸附在物体表面。 image (1)

流程:

  1. 选中需要挪动的目标物体
  2. 按下快捷键Ctrl/Command + Shift,gizmo出现拖动ICON
  3. 移动鼠标时,可以切换锚点到待移动的顶点
  4. 鼠标左键点击拖动ICON,移动
  5. 移动时工具会自动检测里光标附近的带有碰撞体积的物体,如果没有,则吸附在表面
  6. 移动完成后松开鼠标左键确认位置

顶点吸附:(快捷键:v)

与表面吸附主要用来在一定范围内的物体表面移动不同,顶点吸附的主要作用是更精准的通过一个物体上的顶点,对齐到另一物体的某顶点。 image (2)

操作流程:

  1. 选中需要挪动的目标物体
  2. 按住v键,gizmo出现拖动ICON
  3. 移动鼠标时,可以切换锚点到待移动的顶点
  4. 左键点击锚点,移动鼠标
  5. 工具会根据根据光标位置,计算出当前待吸附的目标,并在目标各顶点间移动注意:只能吸附在有顶点的位置
  6. 移动完成后松开鼠标左键确认位置

材质Normal Strength可调范围变大:

之前的材质在引擎中法线效果并不明显,材质表现不够立体,为了解决这一问题,增大了Normal Strength的调整范围,以获得更好的效果。 image (4)

地形高度刷:

在现有地形工具的基础上,增加了一款可以根据用户设定高度刷地形平面的工具,大大增强了地形编辑的灵活性,提升了编辑体验和效率:

image (5)

粒子系统增强

mesh选择预览:

现在选择mesh时,可以非常直观的通过预览图选择mesh,而不再需要通过记住mesh的名字选择,大大简化了筛选的流程。

image

粒子预览时自动播放子粒子节点:

有时在制作比较复杂的粒子系统时,常常会用到不同粒子系统的组合,按照从前的逻辑只播放选中的粒子系统就使得配合预览变得很不方便。现在调整预览逻辑为自动播放所选节点下所有的粒子系统,方便预览调试。

image (6)

修复粒子编辑面板不支持 Undo 的问题

在粒子系统编辑的过程中往往需要大量的调试,之前这部分面板的undo功能缺失也给用户造成了很多不便,现在粒子属性编辑器已经支持undo编辑,方便调试。 image (7)

粒子noise模组:

许多时候我们为了实现更灵活多变更真实的效果,需要粒子有更多可调整可控制的随机运动效果。为了实现这种无序中的有序,看似随机实际可控的特效,灵活的生成可用于随机采样的噪点图就十分重要了。

例如以下案例,对比有无noise的效果: No noise: image (8) image (9) image (10) With Noise: image (11) image (12) image (13)

粒子系统Noise面板:

image (1)

Noise Preview 粒子预览:预览目前采样所使用的噪点图 Stength X: 粒子在X方向运动的noise强度 Stength Y: 粒子在Y方向运动的noise强度 Stength Z: 粒子Z方向运动的noise强度 Noise Speed X: 噪点图在X方向的移动变化速度 Noise Speed Y: 噪点图在Y方向的移动变化速度 Noise Speed Z: 噪点图在Z方向的移动变化速度 Noise Frequency:生成噪点图所使用的噪点频率,数值越大,噪点越密集变。 Octaves:生成噪点图所使用的的算法层数,数值越大变化越多,计算量也越大 Octave Multiplier: 对新层数的强度乘数 Octave Scale: 对新层数的频率乘数

粒子GPU Instancing:

通过粒子的实例化,大大提高了引擎可以支持的最大粒子数量、渲染速度、以及复杂程度,同时,解除了对粒子mesh模式的面数限制,用户可以使用更多更复杂的mesh制作特效。

取消fbx骨骼导入自动拆分材质:

从前当用户导入fbx时,会…… @pandamicro

动画嵌套系统:

image (14)

在编辑复杂的角色动画时,经常需要配合动画出现一些粒子特效、材质变化、或者其他物体属性的改变。例如,攻击魔法、火焰光影、打击特效、行动轨迹灰尘等。为了实现以上效果,现在支持用户在编辑动画时,同步配合播放其他粒子和动画,灵活调整时长和播放位置,并支持实时预览。动画编辑器中现在可以添加粒子和动画播放器,并且可以用类似视频剪辑软件轨道的方式进行编辑,方便直观。目前作为实验性功能推出,更多介绍可移步 https://forum.cocos.org/t/topic/137740

jareguo avatar Jul 13 '22 03:07 jareguo

  1. 新增GLTF specualr-Glossiness支持。
  2. 更新默认fbx surface phong材质支持
  3. 扩展Blender principled bsdf材质Specular通道支持。
  4. 添加mixamo.com模型材质导入支持。
  5. 修复maya法线贴图bug。
  6. 更新导入器mesh属性读写权限设置。

AFeiYA avatar Jul 13 '22 03:07 AFeiYA

  • Android gradle: migrate jcenter to mavenCenter https://github.com/cocos/cocos-engine/pull/11824

PatriceJiang avatar Jul 14 '22 07:07 PatriceJiang

BreakChange:

  • mask 下现在存在一个渲染 mask 内容的子节点,这会造成 mask 下的用户子节点的索引与用户可见的节点树不一致,建议不直接使用硬编码来获取索引位置的子节点以免与预期不一致。

LinYunMo avatar Jul 25 '22 07:07 LinYunMo

Known Issue

  • 在编辑器预览模式下无法撤消 Cannot be undone in editor preview mode
  • 构建面板里链接构建和生成按钮再切换其他平台可能残留链接数据,需要重新链接再解开链接 Link Build and build buttons in the build panel and then switch to other platforms may leave link data that needs to be re-linked and then unlinked

VisualSJ avatar Aug 10 '22 08:08 VisualSJ

Known Issues:

  • The project is not the first build of huawei-agc platform, the check template file will report an error, but it does not affect the run of the build image

nianba23 avatar Aug 10 '22 11:08 nianba23

已知问题

  1. L10n 图片翻译暂时不支持合图功能
  2. L10n 如果使用压缩纹理功能需要确保原始资源需要与翻译后的资源都使用一致的压缩选项
  3. L10n 使用了原始资源的配置去加载翻译后的资源,需要确保原图与目标资源的大小一致
  4. L10n 字体文件暂时无法翻译
  5. L10n 需要将原始资源存放在高优先级的 bundle 否则资源的翻译可能失败

VisualSJ avatar Aug 14 '22 08:08 VisualSJ

@jareguo @AFeiYA @changhua0118 @LinYunMo @VisualSJ Please use English in the public repo

pandamicro avatar Aug 15 '22 01:08 pandamicro