#rogue-like #libtcod #gamedev

doryen-extra

多丽恩-扩展旨在作为流行的Roguelike库libtcod的实用功能的松散重实现

3个不稳定版本

0.2.1 2021年3月14日
0.2.0 2021年3月14日
0.1.0 2020年5月23日

#683 in 游戏开发

BSD-3-Clause

295KB
5K SLoC

Crates.io Docs.rs CI MacOS License Code coverage

多丽恩-扩展

多丽恩-扩展旨在作为流行的Roguelike库libtcod(也称为多丽恩库)的实用功能的松散重实现。该doryen-rscrate实现了库的游戏引擎部分的重新实现,但在撰写本文时,缺少了许多libtcod中存在的功能。

当我发现自己在用Rust封装C库时遇到了各种限制和麻烦,而这正是tcod crate所做的事情,我决定全力以赴,将库用Rust重新编写。

虽然我可以照搬代码,并将其转换为Rust,但我想使其成为一个真正的Rust库,因此它是根据保留功能来编写的,而不是形式。这意味着,您应该从libtcod中熟悉的全部功能都应该存在,但如何访问或使用这些功能可能与原始版本有很大差异。

功能

doryen

虽然这个库名为多丽恩-扩展,但我并不想强制将其与doryen-rs库绑定,因此与它相关的功能位于doryen功能之后。如果您想在没有将doryen-rs作为依赖项的情况下使用此库,只需在您的Cargo.toml文件中放入以下内容:

[dependencies]
doryen-extra = { version = "...", default-features = false }

,这将移除默认的doryen功能。

libtcod-compat

此功能(基于最佳努力)恢复了原始libtcod库的功能,其中已进行修改。在撰写本文时,唯一会发生的变化是RNG算法的浮点数生成。

rng_support

启用此功能后,Random 结构体实现了 rand_core::RngCorerand_core::SeedableRng,使其可以在接受 rand crate RNGs 的任何地方使用。

序列化

启用此功能后,所有适合序列化的类型都将实现 serde::ser::Serializeserde::de::Deserialize。注意:将来可能还有更多类型实现此功能。

缺少的功能/工具包

以下来自 libtcod 的工具包尚未转换,可能的原因在括号中给出

  • bsp 工具包:2D 二进制空间划分
  • fov 工具包:轻松计算从玩家位置可能可见的地图单元格集合
  • image 工具包:一些图像处理实用工具(尚未决定是否转换此工具包;其他 crate 可能已经提供此类功能)
  • list 工具包:一个快速、轻量级且通用的容器,提供数组、列表和堆栈范式(请使用 Vec 代替)
  • namegen 工具包:允许用户从自定义音节集合中生成随机名称(部分需要 parse 工具包)
  • parse 工具包:一种解析复杂文本配置文件的方法

依赖关系

~2–17MB
~178K SLoC