魔头
原帖由 @MacPhisto 于 2025-1-4 11:50 发表 如果目标平台是steam pc,那么优化不是最大的问题,毕竟用户可以掏钱升级硬件。但如果目标是console ,那用unreal 就是作茧自缚了。这也是为什么顶级3a都是自研引擎,说白了,首当其冲,内存对象的所有权,必须在游戏开发者手中,而不是被引擎隐藏起来
查看详细资料
TOP
原帖由 @MacPhisto 于 2025-1-5 02:10 发表 UE的uobject,aactor这些基础设施都是单线程思维。AActor::GetComponentByClass, GetComponents这些基础api更是多线程的灾难 现代多线程引擎的设计思路是ecs,强调的是数据流和代码流的并行化。不存在什么强actor,最多只有弱的entity handle。对内存的读写是在system这个级别发生,以component为单位的。system和components的依赖关系是可以在编译期确定和验证的 当然我说的这些是大体思路,不同公司的自研引擎实现方法有自己的区别。gdc上最近十年都陆续有大公司分享自己的设计,也有很多公司的设计思路并没有公开。比较典型的例子可以参考remedy在GDC 2024的ECS in Practice: The Case Board of Alan Wake 2 本帖最后由 MacPhisto 于 202515 02:12 通过手机版编辑
原帖由 @MacPhisto 于 2025-1-5 15:22 发表 我给你的这个例子是讲remedy 如何在编译期确定system 和component 的依赖性的,这个才是重点。因为很多ecs引擎对依赖性的检查是放在运行期,局限性和风险都很大。正好我们公司目前使用的自研ecs引擎就是在编译期静态检查依赖性,而我们的研发是从2020年开始的,可以说和remedy 是不谋而合