摘要:从未有一门语言像 Rust 这样,自推出之后在使用者的口碑中如此两极分化。有人说 Rust 就是一场“骗局”,难学又难用,早晚会在吃尽苦头后放弃;另外一边的人则认为 Rust 是“神器”,秒杀其他系统编程语言,用不好的人只能怪自己学艺不精。
从未有一门语言像 Rust 这样,自推出之后在使用者的口碑中如此两极分化。有人说 Rust 就是一场“骗局”,难学又难用,早晚会在吃尽苦头后放弃;另外一边的人则认为 Rust 是“神器”,秒杀其他系统编程语言,用不好的人只能怪自己学艺不精。
不管两种言论怎么说,似乎大家都认同一点,Rust 确实不是一门很容易就能学会的编程语言。那么,Rust 语言到底难在哪儿?
首先,是所有权和借用检查,所有权系统是 Rust 的核心特性之一,它通过编译时的借用检查来保证内存安全。
这一机制避免了数据竞争和野指针等问题,但同时也要求开发者在编写代码时必须考虑变量的生命周期和作用域,这在 Java/Python/Go 中通常由垃圾收集器处理,在 C/C++ 中则手动内存管理处理。
其次,是生命周期标注,Rust 要求开发者在函数和方法中明确标注引用的生命周期,这要求开发者对变量的使用场景有清晰的了解。
最后,是编译时重构,Rust 的编译器会强制进行代码重构以满足安全要求,这令一些开发者不满,可能他们只想写“用完即丢”的代码,并不想为此花费大量时间,所以觉得它难用。
可以看到,Rust 语言本身的一些特性是其学习门槛所在,有办法能轻松学会 Rust 吗?《Rust 游戏开发实战》这本书就能帮你一边玩着一边就将 Rust 学会了。
我们在接下来的学习会了解到,Rust并不是一个骗局,而是一件强大的工具。现在来探究一下,学会 Rust 要经历哪两个阶段。
Rust 的定位是系统编程语言,它既具备 C/C++ 这样的语言深入系统底层的能力,又拥有出色的性能,最重要的是它的内存安全性。所以 学习 Rust 第一阶段是掌握它的内存管理,第二阶段是在实践中应用好内存管理机制。
第一阶段,熟悉 Rust 内存管理模式
首先,要理解所有权机制,知道它为什么能在编译时确保内存安全。
对于绝大多数熟悉 Python、Go、Java 等具备自动内存管理功能语言的开发者而言,可能缺少对底层内存结构、访问方式的深入理解。
这样在编写一行代码的时候很少去思考,这一行代码导致了多少内存分配;内存是分配在栈上还是堆上;这块内存是否会被多个线程共享;内存何时释放等问题。
因此对于这个阶段而言,往往 C/C++ 的开发者转换到 Rust 语言的难度会更小。而其他语言的开发者就需要花时间去补足一下这方面的功课。
第二阶段,在实践中体会并应用好 Rust 内存管理机制
由于所有权、生命周期等机制的存在,确实会从一定程度上限制开发者随心所欲编写代码的能力。
目前市面上绝大多数的 Rust 学习资料都是就一个个独立的知识点进行讲解,给出的示例代码也是与某个知识点相关的 demo 片段,这就导致了很多 Rust 初学者在开始学习时,感觉每一个知识点都可以理解。
但当自己开始写一个实际的项目,随着项目规模变大,各模块之间所有权、声明周期的相互制约往往会导致开发者陷入“编译器教你做人”的窘境。
因此,在这一阶段,无论是 C/C++ 开发者,还是其他语言的开发者,都需要阅读一些优秀项目的代码,学习如何在实际问题当中使用 Rust 的内存安全模型。
《Rust 游戏开发实战》就实现了两阶段的学习过程,帮读者深刻理解所有权机制,并且在一个完整的游戏开发中强化并用好 Rust 内存管理机制。本书还引导读者掌握游戏开发知识,介绍了适用于 Unity、Unreal 等游戏引擎的技巧。
本书作者赫伯特·沃尔弗森(Herbert Wolverson)是一名非常有经验的程序员,主要从事游戏开发工作,是 RLTK 和 Nox Futura 开源项目的开发者。他在游戏开发社区非常活跃,为多个开源项目做过贡献。
赫伯特·沃尔弗森
跟着技术大拿不仅轻松学会 Rust,还能从 0 到 1 做出自己的第一个游戏,赶紧尝试一下吧。
本书以《地下城爬行者》这款游戏的开发过程,为我们讲述 Rust 的语言特性与游戏开发技巧。
书中先是说明了 Rust 开发环境的搭建和基础语法的学习,使读者能够快速理解并运用 Rust 的核心概念,如所有权、借用和模式匹配。接着介绍 Cargo 作为包管理工具和构建工具的使用,以及 Clippy 等代码分析工具,帮助读者提高编码效率和代码质量。
书中还深入介绍了实体组件系统(ECS),说明如何使用 ECS 来管理游戏逻辑,实现代码复用,并简化复杂系统的开发。探索 Rust 的高级特性,如 trait 和泛型,展示如何通过它们实现代码的模块化和可重用性。
在游戏设计环节,通过创建游戏设计文档,将游戏概念具体化,引导读者如何规划和设计游戏,包括游戏机制和最简可行产品(MVP)的确定。
编码实践是从最简单的“Hello, World”程序开始,以层层推进的方式构建具有图形界面的完整游戏。
书中详细讲解如何实现游戏的关键机制,包括玩家控制、回合制移动、战斗系统、生命值管理,以及游戏的胜利和失败条件。介绍如何设计和实现不同主题的地图,以及如何通过地图生成算法创造出具有挑战性的地下城环境。
说明如何为游戏添加背包系统、道具管理和升级奖励机制,增加游戏的深度和可玩性。在游戏开发接近尾声时,讨论如何打包和发布游戏,同时提供进阶开发技巧和建议。
怎么样,学完这本书是不是体会到 Rust 的强大?现在你不仅轻松掌握 Rust,第一个游戏也开发成功!
话说兴趣才是最好的老师,本书作者沃尔弗森就是从小接触电脑游戏,然后在父亲的引导下从 BASIC 语言开始学习,历经 Pascal、C/C++ 等语言,一直从事游戏开发工作。
直到他遇见 Rust,相见恨晚,在深入使用之后,将自己的实践经验和盘托出,写出了这本寓教于乐的好书。
本书一大特点是,不同于其他教材类书籍死板的说教,作者以一个游戏独立开发者的身份,介绍一个自由开发者如何发现生活中的灵感,如何享受游戏开发带来的乐趣。
另一大特点,则是全面侧重于实战,强调务实的“做中学”方法,理论部分篇幅很短,随后便是可供尝试的具体例子。所以读者在学习时,遇到抽象的概念不要钻牛角尖,而是在动手编码调试中去理解吸收。
精彩代码示例
读者可以时刻感受到,作者对于游戏开发的喜爱和热情。通过阅读,读者或许可以在繁忙的工作中,重新找回最初编写程序时的喜悦和兴奋。
谁还没有一个游戏开发的梦想呢?现在翻开《Rust 游戏开发实战》,玩转 Rust,实现自己的游戏梦吧!
来源:潜水侠科技