找回密码
 立即注册
楼主: Mecanim

使用Rust进行游戏开发的正确姿势

[复制链接]
发表于 2021-11-10 18:24 | 显示全部楼层
完整地看了一遍

演讲者说borrow checker强迫/引导正确的、简单的设计,但在A跟随B这个问题上,更像是引导出了绕过borrow checker的设计。这样的设计未必好,它确实不crash了,但crash在很多情况下是更好的结果,避免潜伏的问题。borrow checker并没有引导解决最根本的同步问题(即被指向的对象是否存在),generational indexes并非来自borrow checker的帮助。C++程序员同样会(在crash之后)设计出同样的架构。borrow checker(进一步说,Rust)在这个问题上并没有表现出太大的优势,不像演讲者鼓吹的那样

我个人完全同意,borrow checker很厉害,但也不应该神化,目前阶段更不是无缺陷的
发表于 2021-11-10 18:29 | 显示全部楼层
你对ecs是不是有什么误解,ue4和ecs差了十万八千里,而且cpp实现ecs一点也不格格不入,反而能做到更小的语法噪音
发表于 2021-11-10 18:33 | 显示全部楼层
Unity:
https://unity3d.com/cn/learn/tutorials/topics/scripting/introduction-ecs

UE4:
https://github.com/skypjack/entt

http://victor.madtriangles.com/code%20experiment/2018/03/25/post-ue4-ecs-battle.html
发表于 2021-11-10 18:35 | 显示全部楼层
游戏引擎两大架构分别是OOP和ECS。oop提倡继承,ecs提倡组合。c++更擅长继承而rust提倡组合,ecs在rust上的表现的确比c++漂亮。
发表于 2021-11-10 18:37 | 显示全部楼层
据我所知游戏开发早就意识到组合优于继承了,我看的游戏开发相关的书都提到菱形继承之类的问题,推荐使用接口或者什么模式代替继承。
发表于 2021-11-10 18:46 | 显示全部楼层
你举的例子显然不恰当,上面那个是接口像屎一样的unity(C#) ecs,下面是强行嵌入ue4的第三方cpp ecs,根本没有什么优雅可言,确实specs的实现很先进,但这个实现方式和语言并没有很大关系,我照猫画虎实现一个接口甚至能更简单友好
发表于 2021-11-10 18:53 | 显示全部楼层
specs的优势是安全并发,和语言没关系?你照猫画虎实现一个?
发表于 2021-11-10 18:56 | 显示全部楼层
讲道理specs自动并发的部分完全是利用ecs构架的特性运行时手动计算的,我早就尝试过了https://github.com/BenzzzX/NESL
发表于 2021-11-10 19:02 | 显示全部楼层
我的意思并非是指你不能尝试,问题是你用cpp写的这并发安全性是否能保证?你如何让别人信服使用你这个库?我说的重点在于安全并发,Rust语言本身可以保证这个,cpp呢?不是说cpp写不了并发,而是你还得必须让别人信任你写出来的是并发安全的,而且在生产环境还不太好验证。但是你用Rust语言写,至少可以得到一种安全保证。
发表于 2021-11-10 19:07 | 显示全部楼层
这里的并行是构成一个flow graph,而整个构建过程是包括了简化的运行时borrow checker的,我能保证正常使用不会有data race,具体原理可以看我专栏。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 22:27 , Processed in 0.224486 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表