不久前,我推出了Catalyst,一个简化复杂可修改统计数据的库。自那以后,我一直在开发这个库的一个更具雄心的版本,现在它终于来了。Catalyst 2 正式发布!
Catalyst最初处理的是统计数据和修饰符,让你能轻松地为统计数据添加或移除任意数量的修饰符,就像这样:
damage = new CatalystStatistic(10);
var _damage = damage.GetValue(); // 此时damage返回10
var _mod = new CatalystModifier(5, eCatMathOps.ADD);
damage.AddModifier(_mod);
var _damage = damage.GetValue(); // 此时damage返回15
显然,这是一个非常简单的例子,Catalyst在这个简单起点下隐藏着大量的选项。
然而,Catalyst 2 更加灵活、可靠且实用。
它具备诸如 资源(生命值、法力值、弹药、城市人口等)、资源流(生命恢复、人口增长、冲刺时的耐力消耗速率)以及 效果(例如,一种每秒造成2点伤害、降低移动速度、持续5秒、每 tick 有50%概率触发的毒药DOT)等功能。还有更多其他功能。
但当你看到这些功能如何组合时,一切才真正变得有趣起来。资源的上限和下限本身就是统计数据,资源流动速率是统计数据,效果每 tick 的触发概率也是统计数据,诸如此类。所有这些都可以像修改Catalyst中的任何统计数据一样,轻松且广泛地进行修改。当你把这些元素叠加在一起时,就能获得极其灵活的行为,并用少得惊人的代码量设计出复杂的游戏规则。
让我们看一个实际案例。假设我们有一个城市,它拥有发电能力和应急电力储备。每当暴风雨来袭时,发电能力应下降30%,应急电力储备应以每个模拟步15单位的速度消耗。
首先设置统计数据、资源、效果管理器以及(如果你想要的话)一个自定义时钟:
power_generation = new CatalystStatistic(120);
emergency_power = new CatalystResource(500);
city_effects = new CatalystEffectManager(self);
city_clock = new CatalystCountdownTracker();
然后创建一个暴风雨效果,并为其添加修饰符和资源流:
storm_effect = new CatalystEffect("severe_storm", 12)
.AddTag("weather")
.AddTag("storm")
.SetCountdownTracker(city_clock)
.SetTickInterval(1);
storm_effect.AddModifier(
power_generation,
new CatalystModifier(-0.30, eCatMathOps.MULTIPLY)
.SetSourceLabel("Storm damage")
);
storm_effect.AddFlow(
emergency_power,
new CatalystResourceFlow(-15, "Storm reserve usage")
);
// 然后,稍后当你想触发暴风雨效果时,只需将效果添加到效果管理器
city_effects.AddEffect(storm_effect);
然后按照你想要的间隔驱动城市时钟前进(你可以让它每帧自动运行,或者基于增量时间运行,如果你愿意的话):
city_clock.Countdown(1);
这就是全部了。你可以随时添加或移除效果(你甚至可以添加特殊的技能,比如“清除所有天气”)。你可以精确查找是什么原因导致发电能力下降,并将其显示给玩家。你可以轻松地向效果添加新内容、移除现有部分,或者添加其他与相同系统交互的效果。并且它会始终准确反映当前状态。
你不必担心任何烦人的细节(等等?如何从我的主属性中移除一个-30%的减益效果?)。只需以不同的方式组合统计数据、修饰符、资源和资源流,你就能像这样用几行代码模拟任何游戏规则。
RPG和roguelike游戏显然是合适的使用场景,但Catalyst实际上不关心你制作的是什么类型。自从多年前我开始构建Catalyst以来,我之后参与的每个项目都使用了它,哈哈。
链接
- Itch: Catalyst 2 on itch
- 综合文档+示例(如果你想了解更多关于Catalyst 2的工作原理,请阅读此内容):https://refreshertowel.github.io/docs/catalyst/
(如果你想了解更多,还有Ignition Kit,可以以优惠价格将Catalyst与Statement、Pulse和Echo一起获取,或者以单一价格购买Full Pass Suite,获得我当前和未来的所有工具。)
评论 (0)