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 次下载

MIT许可证

405KB
9K SLoC

Weasel回合制战斗系统

Build Status Code Coverage Released API docs License: MIT

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