vlambda博客
学习文章列表

继承c语言的rust适合游戏开发吗


我们已经从掌上游戏时代度过了很多年。俄罗斯方块和马里奥游戏虽然外观简单,但易于使用,图形少,编程困难。尽管很难追溯到所有这些游戏的编写语言,但许多游戏都是用C语言编写的,这给编写它们的程序带来了困难。

Rust被吹捧为C的继任者之一。这反过来又使问题再次出现–如果C难以编码,那么Rust到底有什么不同?

这个问题的答案在于Rust的方法。Rust主要是由Mozilla Foundation设计为系统编程语言的。在过去的20年中,主要的游戏开发语言主要是C / C ++。Rust带来了方法的全新变化-从面向对象到面向数据。

来自[Chucklefish]的[Catherine West很好地总结了面向对象编程的问题。根据她的说法,将对象(例如NPC),游戏世界等游戏元素视为在小范围内可能效果很好。但是,当您尝试创建自己的游戏引擎时,将游戏元素视为“对象”将意味着创建许多具有复杂依赖层的超大型对象。




另一方面,Rust方法是面向数据的。这意味着将每个元素都视为数据。这大大简化了创建中型游戏引擎的过程。Cuckcklefish是2D游戏开发中的重要名称,Catherine West的这一声明对希望使用Rust进行2D游戏开发的开发人员大有助益。尽管她对使用Rust进行3D游戏开发表示怀疑。

最近支持Rust的另一个重要人物是Ready at Dawn的首席技术官Andrea Pessino。Ready at Dawn是一家知名的游戏工作室,以诸如《命令:1886》,Daxter和各种《战神》等游戏而闻名。他的推文是这样的。


这是Rust在游戏开发方面的又一羽毛。

Rust的游戏开发现状令人鼓舞。有很多类似GFX的底层图形库。GFX是平台特定图形界面(OpenGL,Metal,Vulkan)上的低层抽象层。它提供了窗口后端一些方便的包装。GFX仍处于开发的早期阶段,当前版本为0.17。

尽管像Unity和Unreal 这样的主要游戏引擎尚未支持Rust进行游戏开发,但仍有一些完整的游戏引擎可让您使用Rust的框架来创建完整的游戏。

第一个是活塞。它是Rust最早的游戏引擎。它也是最稳定的,并且文档丰富。但是,许多人发现Piston令人困惑且难以使用,因为它在设计上是超模块化的。有时甚至很难理解为实现某个目标或构建游戏的某个组件而加载哪个模块。

Amethyst是受商业整体游戏引擎启发的最新游戏引擎/框架。它在其程序包中附带了所有必需的依赖项。但是,它发展迅速,因此本文档已过时。但是,有一个充满活力的社区正在寻求吸引越来越多的开发人员参与。因此,这为新开发人员提供了使用Rust进行游戏开发并参与游戏引擎的机会。

GGEZ是受LÖVE引擎启发的简单2D游戏引擎。该库更适合为爱好者创建简单的2D游戏。GGEZ也很新,并且变化很快。简单的设计激励着独立开发者和业余爱好者开始用它创作游戏。

其他一些流行的库包括:

  • noise-rs /噪声发生器

  • rlua / Rust和Lua之间的高级绑定

  • sfxr /将DrPetter的“ sfxr”声音效果生成器重新实现为Rust库

我们可以从这里得出的结论是,Rust在游戏开发方面有很多前途。借助面向数据的方法,轻松的内存管理以及对低级性能增强技术的访问,Rust可以在不久的将来成为成熟的游戏开发语言。