Rust开发游戏三年后吐槽:上下文不灵活
内容提要
这篇文章详细阐述了一位游戏开发者使用Rust进行游戏开发的经历和决定停止使用Rust。作者提到了Rust学习曲线、借用检查器、重构和迭代速度、间接性、ECS、泛型系统、全局状态、GUI开发、编译时间、生态系统和炒作等问题。作者认为Rust在游戏开发中上下文不灵活,对全局状态厌恶,生态系统建立在炒作上。作者还提到了一些积极的方面和未来计划。
延伸解读
上下文对象:Rust游戏开发中的核心痛点
文章指出,Rust的借用检查器使得传递上下文对象变得困难。开发者无法轻松存储引用,因为生命周期会泛型化并污染类型。共享所有权(Rc/Arc)虽是一种替代,但并非总是可行,且不受社区欢迎。创建上下文结构体虽能缓解,但部分借用规则限制了灵活性,导致开发者不得不重构代码,而这并非出于业务逻辑变化,而是为了满足编译器。
ECS与泛型:是解决方案还是新问题?
作者认为,ECS在Rust中的流行部分是因为它解决了借用检查器的问题,而非其性能优势。同时,过度的泛型系统导致游戏玩法缺乏特定体验,变得无聊。这反映了Rust在游戏开发中倾向于通过增加间接层来解决问题,但牺牲了开发者的舒适性和游戏设计的直接性。
生态系统与社区文化:炒作与现实
文章批评Rust游戏开发生态系统建立在炒作而非实际项目上,缺乏优秀的GUI解决方案。社区对全局状态的厌恶也影响了游戏开发的便利性。尽管Rust有性能、特质系统等优点,但作者认为其静态检查特性与游戏开发的快速迭代需求相冲突,最终决定停止使用Rust。
Q&A
为什么作者决定停止使用Rust进行游戏开发?
作者认为Rust不适合他们的需求,主要是因为上下文不灵活和借用检查器的限制影响了开发效率。
Rust的学习曲线对游戏开发有什么影响?
Rust的学习曲线陡峭,尽管经验丰富,但许多问题依然存在,影响了开发者的生产力。
Rust的借用检查器如何影响代码编写流程?
借用检查器在不方便时强制重构,干扰了自然的代码编写流程,影响了快速迭代。
Rust在游戏开发中有哪些生态系统的缺陷?
Rust生态系统缺乏优秀的游戏GUI解决方案,并且建立在炒作而非实际项目上。
作者对Rust的泛型系统有什么看法?
作者认为过度的泛型系统导致游戏玩法缺乏特定体验,使得游戏开发变得无聊。
作者未来的游戏开发计划是什么?
作者计划将Comfy游戏引擎的渲染器移植到Macroquad,并开发新游戏《Unrelaxing Quacks》。