魔头
原帖由 @MacPhisto 于 2024-2-10 22:49 发表 Unreal 的痛点并不是基于c++,而是它在c++的基础上 自己实现了一套垃圾回收。这种自动内存管理系统只适合做规模不大 角色不多的游戏。一旦做开放世界 npc 数量多的 就露馅了
查看详细资料
TOP
原帖由 @MacPhisto 于 2024-2-14 03:38 发表 做小项目无所谓。做3a 用gc,从技术角度来说就是给自己找别扭。。从商业角度,说是自寻死路一点都不夸张
原帖由 @MacPhisto 于 2024-2-15 15:00 发表 gc是为了提升开发效率,降低开发门槛,代价是牺牲运行时性能 3a是追求极限运行时性能的,需要给每个子系统量身定制最优的内存分配方案,对每个程序员的素质要求很高,所以不会依赖gc
原帖由 @MacPhisto 于 2024-2-15 16:02 发表 UE 到现在连个基本的jobification 都很难做到,根本原因就是它的内存模型和线程模型都是严重拖后腿的。大部分ue 开发者使用的多线程都是system on thread,这种属于二十年前的开发范式了,严重落后于时代 这也是为什么大部分3a都是自研引擎 顶级的3a游戏甚至可以做到每个子系统都job 化,在n个worker thread 并行执行,甚至连主线程都没有了。这就暗示了内存对象的ownership 不可能交给一个外部的系统
原帖由 @MacPhisto 于 2024-2-16 00:49 发表 task graph的粒度太粗糙了,和当代3a引擎的jobification不是一个概念 这也是为什么ue5搞了一个实验性质的MassEntity出来。可惜unreal自身的线程模型 内存模型都严重拖后腿,MassEntity只不过是屎上雕花
原帖由 @MacPhisto 于 2024-2-17 03:47 发表 ecs和job化本来就是深度绑定的。job化暗含了ecs。没有ecs,连基本的内存读写访问都很难控制,就别提job化了 unreal的mass和unity的dots是一回事,都是在老化且过时的基础上强行搭一个新的框架,坑实在太多。这就是为什么大多数3a都是自研