3个不稳定版本
0.2.1 | 2021年3月14日 |
---|---|
0.2.0 | 2021年3月14日 |
0.1.0 | 2020年5月23日 |
#683 in 游戏开发
295KB
5K SLoC
多丽恩-扩展
多丽恩-扩展旨在作为流行的Roguelike库libtcod
(也称为多丽恩库)的实用功能的松散重实现。该doryen-rs
crate实现了库的游戏引擎部分的重新实现,但在撰写本文时,缺少了许多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::RngCore
和 rand_core::SeedableRng
,使其可以在接受 rand
crate RNGs 的任何地方使用。
序列化
启用此功能后,所有适合序列化的类型都将实现 serde::ser::Serialize
和 serde::de::Deserialize
。注意:将来可能还有更多类型实现此功能。
缺少的功能/工具包
以下来自 libtcod
的工具包尚未转换,可能的原因在括号中给出
bsp
工具包:2D 二进制空间划分fov
工具包:轻松计算从玩家位置可能可见的地图单元格集合image
工具包:一些图像处理实用工具(尚未决定是否转换此工具包;其他 crate 可能已经提供此类功能)list
工具包:一个快速、轻量级且通用的容器,提供数组、列表和堆栈范式(请使用Vec
代替)namegen
工具包:允许用户从自定义音节集合中生成随机名称(部分需要parse
工具包)parse
工具包:一种解析复杂文本配置文件的方法
依赖关系
~2–17MB
~178K SLoC