#stats #gamedev #modifier #change #increase #attack #epic

game_stat

一个用于处理可随修饰符变化的统计数据的库,常用于游戏

5个版本

0.2.2 2023年5月29日
0.2.1 2023年5月29日
0.2.0 2023年5月29日
0.1.1 2022年3月15日
0.1.0 2022年3月13日

#373游戏开发

Download history 12/week @ 2024-03-10 33/week @ 2024-03-31

每月 65次下载

MIT/Apache

33KB
239

Crates.io docs.rs MIT/Apache 2.0 Crates.io

game_stat

game_stat 是一个用于处理可随修饰符变化的统计数据的Rust小型库。装备了史诗之剑?那么你的攻击统计数据可能 增加40%。受到减益效果?你的移动速度可能会 减少50%

示例代码

let mut armor_stat: Stat<2> = Stat::new(10f32);
{
    let _modifier_handle = armor_stat.add_modifier(StatModifier::Flat(5f32));
    println!("armor_stat is: {} it should be 15!", armor_stat.value());
}
println!("armor_stat is: {}, It should be 10!", armor_stat.value());
  • Stat<2> 该库内部使用TinyVec来存储修饰符(用于优化)。2的值意味着我们可以在栈上存储2个修饰符,如果超过这个数量,我们将它们内部移动到堆上。
  • armor_stat.value() 返回基于活动修饰符的统计数据值。
  • 我们添加了一个固定修饰符,只要 _modifier_handle 存在,它就是有效的,这就是为什么当它从栈上移除时,值会回到10。

特性

  • 再见 stat.remove_modifier()。这个库没有这样的功能,相反,一个修饰符只要有一个对其的引用就有效。这是一个不错的主意,但我还不知道这种设计选择是否实用。
  • 可定制修饰符顺序(可选),某些游戏可能需要更可定制的修饰符应用,可以使用 stat.add_modifier_with_order() 而不是 stat.add_modifier()

是否已准备好用于战斗?

还没有使用它完成任何主要项目。我不确定它的稳定性/性能,因为我内部使用了启用 sync 功能的互斥锁和内部可变性。我现在正在测试这个库用于一座防御塔游戏。时间会证明一切 :)。

许可协议

gamestat是免费和开源的!此仓库中的所有代码都可在以下许可协议下使用:

任选其一。

除非您明确声明,否则您根据Apache-2.0许可证定义提交的任何有意包含在作品中的贡献,应按上述方式双授权,不附加任何其他条款或条件。

依赖项

~190–435KB
~14K SLoC