当前位置: 欣欣网 > 码农

DIY经典游戏,轻松学Rust编程——重温儿时游戏梦,用Rust写出属于自己的小游戏!

2024-07-12码农

文末赠书

【译者序】「重温儿时游戏梦」,我感觉这本书的作者是挺讲情怀的,这也是我看完这本书以后感觉它与众不同的一点。这本书不是死板的教程,更像是作者在给你讲故事,讲怎么做好一个游戏,怎么在此过程中学习Rust编程,有点「边玩边学」的感觉。

从未有一门语言像 Rust 这样,自推出之后在使用者的口碑中如此两极分化。有人说 Rust 就是一场「骗局」,难学又难用,早晚会在吃尽苦头后放弃;有人却说 Rust 是「神器」,足以秒杀其他系统编程语言,但凡用不好,就只能怪自己学艺不精。

不管怎么说,大家似乎都认同一点,Rust 确实不是一门很容易就能学会的编程语言。那么,Rust 语言到底难在哪儿?下面罗列的几条应该算是主要原因了。

· 所有权和借用检查 ,所有权系统是 Rust 的核心特性之一,它通过编译时的借用检查来保证内存安全。这一机制避免了数据竞争和野指针等问题,但也要求开发者在编写代码时必须考虑变量的生命周期和作用域,这在 Java/Python/Go 中通常由垃圾收集器处理,在 C/C++ 中则由手动内存管理处理。

· 生命周期标注 ,Rust 要求开发者在函数和方法中明确标注引用的生命周期,这就要求开发者对变量的使用场景有清晰的了解。

· 编译时重构 ,Rust 的编译器会强制进行代码重构以满足安全要求,这令一些开发者不满,他们有时只想写「用完即丢」的代码,并不想为此花费大量时间,所以觉得Rust语言不好用。

也就是说,Rust 语言本身的一些特性是其学习门槛所在。那么,有办法能轻松学会 Rust 吗?

这本书或许能给你带来一些启发—— 一边玩,一边学 Rust 编程。我们在接下来的学习中会了解到,Rust并不是一个带你入坑的「骗局」,而的确是一门强大的新兴语言。现在我们来探究一下,学会 Rust 要经历哪两个阶段。

Part.1

学好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 做出自己的第一个游戏,赶紧尝试一下吧。

Part.2

玩着游戏轻松学会Rust

本书以【地下城爬行者】这款游戏的开发过程,为我们讲述 Rust 的语言特性与游戏开发技巧

书中先是说明了 Rust 开发环境的搭建和基础语法的学习,使读者能够快速理解并运用 Rust 的核心概念,如所有权、借用和模式匹配。接着介绍 Cargo 作为包管理工具和构建工具的使用,以及 Clippy 等代码分析工具,帮助读者提高编码效率和代码质量。

书中还深入介绍了实体组件系统 (ECS) ,说明如何使用 ECS 来管理游戏逻辑,实现代码复用,并简化复杂系统的开发。探索 Rust 的高级特性,如 trait 和泛型,展示如何通过它们实现代码的模块化和可重用性。

在游戏设计环节,通过创建游戏设计文档,将游戏概念具体化,引导读者规划和设计游戏,包括游戏机制和最简可行产品 (MVP) 的确定。

编码实践从最简单的「Hello, World」程序开始,以层层推进的方式构建具有图形界面的完整游戏。

书中详细讲解如何实现游戏的关键机制,包括玩家控制、回合制移动、战斗系统、生命值管理,以及游戏的胜利和失败条件。介绍如何设计和实现不同主题的地图,以及如何通过地图生成算法创造出具有挑战性的地下城环境。

说明如何为游戏添加背包系统、道具管理和升级奖励机制,增加游戏的深度和可玩性。在游戏开发接近尾声时,讨论如何打包和发布游戏,同时提供进阶开发技巧和建议。

怎么样,学完这本书,你是不是体会到了 Rust 的强大之处?现在你不仅轻松掌握了 Rust,第一个游戏也开发成功!

Part.3

结语

话说兴趣才是最好的老师,本书作者沃尔弗森就是从小接触电脑游戏,然后在父亲的引导下从 BASIC 语言开始学习,历经 Pascal、C/C++ 等语言,一直从事游戏开发工作。

直到他遇见 Rust,相见恨晚,在深入使用之后,将自己的实践经验和盘托出,写出了这本寓教于乐的好书。

本书一大特点是,不同于其他教材类图书死板的说教,作者以一个 游戏独立开发者 的身份,介绍一个自由开发者如何发现生活中的灵感,如何享受游戏开发带来的乐趣。

另一大特点,则是 全面侧重于实战 ,强调务实的「做中学」方法,理论部分篇幅很短,随后便是可供尝试的具体例子。所以读者在学习时,遇到抽象的概念不要钻牛角尖,而应在动手编码调试中去理解吸收。

精彩代码示例

读者可以时刻感受到作者对游戏开发的喜爱和热情。通过阅读,读者或许可以在繁忙的工作中重新找回最初编写程序时的喜悦和兴奋。

谁还没有一个游戏开发的梦想呢?现在翻开 【Rust 游戏开发实战】 ,玩转 Rust,实现自己的游戏梦吧!

点击下方,即可购书

—END—

分享你心中的游戏创意

在留言区参与互动,并点击在看和转发活动到朋友圈,我们将选4名读者获得纸质书1本,截止时间7月15日。