14个版本 (破坏性更新)
0.11.0 | 2020年11月3日 |
---|---|
0.9.0 | 2020年8月14日 |
0.8.0 | 2020年7月6日 |
0.7.0 | 2020年3月30日 |
#774 in 游戏开发
每月 33 次下载
405KB
9K SLoC
Weasel回合制战斗系统
weasel是一个为回合制游戏提供的可定制战斗系统。
- 通过利用Rust强大的类型系统,以简单的方式定义战斗规则。
- 将战斗事件收集到时间线中,以支持保存和恢复、重放等功能。
- 客户端/服务器架构;所有战斗事件都由服务器验证。
- 最小化性能开销。
示例
use weasel::{
battle_rules, rules::empty::*, Battle, BattleController,
BattleRules, CreateTeam, EventTrigger, Server,
};
battle_rules! {}
let battle = Battle::builder(CustomRules::new()).build();
let mut server = Server::builder(battle).build();
CreateTeam::trigger(&mut server, 1).fire().unwrap();
assert_eq!(server.battle().entities().teams().count(), 1);
您可以在示例中找到使用weasel制作的战斗系统的实际例子。
它是如何工作的?
要使用此库,您需要创建其主对象(服务器和客户端)的实例。您会注意到它们都使用BattleRules
泛型类型。
服务器是管理游戏所必需的。服务器也可以是客户端。例如,一个典型的单人游戏只需要一个服务器。
客户端是游戏的参与者。它代表玩家向服务器发送命令。多人游戏将有一个服务器和多个客户端。
一旦您实例化了服务器以及可能的一个或多个客户端,您就可以开始新游戏了。
通过创建events
来推进游戏。有许多种类型的事件,请参阅文档以了解详细信息。
通过服务器或客户端,您将能够访问战斗的完整状态,包括整个事件时间线。
功能
weasel提供了许多功能,以简化回合制游戏开发
- 生物和静止物体。
- 角色的统计数据和能力。
- 持久的状态效果。
- 玩家管理的团队。
- 团队目标和外交。
- 将战斗分为回合和回合。
- 以正交特性划分的游戏规则。
- 完全可序列化的战斗历史。
- 事件之间的因果关系。
- 服务器端验证客户端事件。
- 玩家权限和授权。
- 战斗规则的版本控制。
- 用户自定义事件。
- 系统定义和用户定义指标。
- 将事件转发到任意目的地的汇入点。
- 预定义规则的小集合。
贡献
感谢您对贡献项目的兴趣!有多种方式可以为此项目做出贡献。请参阅 CONTRIBUTING.md。
许可证
weasel 在 MIT 许可证下提供。请参阅 LICENSE。
依赖项
~1–1.5MB
~26K SLoC