规则引擎介绍3-案例分析

规则引擎介绍3


前文提到,规则引擎可以适配大多数任务。这里,我们以一个具体的案例,来介绍规则引擎的优点。

假设你是一名游戏策划,你需要为一款抽卡游戏设计一个卡池:

背景分析

抽卡系统具有以下几个特点:

  1. 高访问量。一款常见的游戏很可能有数十万的在线玩家,每秒钟可能会有上万次抽卡。抽卡系统需要能承载大量的请求,否则一旦崩溃,会造成用户数据的丢失,为公司带来损失。
  2. 需要复用。为了保证用户粘性,卡池是需要定期更新的,但又可能需要调整具体的机制。抽卡系统需要在被复用的同时,又能修改内部逻辑。
  3. 保密性。作为游戏的核心氪金项目,卡池的具体数据关系到游戏的收入。因此,卡池的机制需要一定程度的保密。最好能够仅由作为策划的你来维护。

规则引擎就很适合这样的场景。

规则引擎可以承载较大的数据吞吐量,同时又能快速更新。也能够让作为非技术人员的策划亲手管理这个系统,减少抽卡机制泄露。

有些游戏的卡池会使用复杂的随机数算法,以减少“欧皇”、“非酋”的产生。
也有游戏会检测玩家的数据,对老玩家反向使用这个机制,以更好的收割用户
这些机制都涉及复杂的逻辑,很适合规则引擎的发挥

具体实现

1

假设这个卡池有10%的概率抽到稀有卡,否则为普通卡
实现逻辑是,传入抽卡次数,生成一个随机数,如果小于等于概率则返回抽出稀有卡的结果,并减去一次抽卡次数

if 随机数 <= 0.1 and 抽卡次数 > 0:
	抽卡次数 -= 1
	return 稀有卡
else
	抽卡次数 -=1
	return 普通卡

经过比较,我选择了一款有可视化界面的规则引擎来呈现:
在这里插入图片描述

2

这样的抽卡机制很容易导致“非酋”和“欧皇”出现。为了玩家体验,我们可以修改具体机制为,一开始设定一个较低的概率,每次没有抽出增加一定概率。具体来说:

  • 抽卡计数从1开始,每次加1
  • 抽出稀有概率为:当前计数*1.5%
  • 计数达到40时必定抽出稀有卡
  • 抽出稀有卡时计数变回1

这样的综合概率仍然是10%。具体的证明,我邀请读者作为一个小练习(笑)

在这里插入图片描述

3

作为一个“良心”策划,你显然不满足于此。你决定再次修改系统,加入针对玩家的检测:

  • 对新玩家,使用第1种机制,增加他们的刺激感。
  • 当玩家的稀有卡数量大于100时,判定玩家为“老玩家”,采用第二种规则,以稳定榨干他们的钱包。

在这里插入图片描述

这种机制俗称“杀熟”,属于非常不道德的行为,如果真的有游戏策划在阅读这篇文章,请勿学习

final

完成规则逻辑的编写,我们就可以保存并测试这些规则。
在这里插入图片描述

测试通过后,即可发布规则,作为一个web服务。
也可以导出为jar包,直接嵌入应用

结论

通过分析以上案例,我们可以看到规则引擎的几个优势:

  • 操作直观,无需学会复杂的底层代码即可维护规则,修改快捷方便。
  • 灵活性高,将复杂的逻辑抽象成一个个规则包,便于增删改查。
  • 安全性高,不用担心非技术人员乱动底层代码导致bug,也无需让技术人员了解规则具体内容。
  • 功能丰富,集成了测试、版本管理等功能,大大减少开发成本。

另外,有些规则引擎还有我没有展示的其他功能。例如对规则进行热更新,管理规则修改审核的权限等,对于大型团队开发非常方便。

规则引擎通过提供灵活、高效的方式来处理业务逻辑,已经成为许多企业数字化转型的重要工具之一。选择合适的规则引擎对于提高业务效率、降低开发和维护成本具有重要意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值