我需要在zend框架中做一个类似的徽章系统。

我不知道如何实现,尽管我是关于一个事件/观察者和一些触发检查 Action 的 Action ,或者是例如每10分钟运行一次的cron等。

有任何想法吗?

最佳答案

作为为客户编写游戏化插件的Django开发人员,我以Stack Overflow和BigDoor为灵感。事实证明,游戏化非常容易,并且很难同时完成。

假设您的数据库中已经有一个User表,那么游戏化应用程序的核心就是使用两个表:“Currency”和“UserCurrency”。货币表有一个必填字段,即“名称”,但我也建议您使用“描述”。如果您为游戏化层编写管理界面,则说明会很有帮助。

CurrencyUser表具有三样东西:用户的ID,货币的ID和用户已赚取的该货币的数量。

“货币”是游戏化的流行词;它不是指金钱,而是指您所追踪的是什么。例如,SO跟踪您提出了多少赏金,多少票,对某答案(除了自己的答案)进行了投票的次数以及您的答案中的一项投票通过10次的次数(请注意,最后一项:其他人这样做,而不是您!)。对于这些事件中的每一个,SO都会运行一系列标准,获取关联的货币,并为已满足的条件增加或创建新的UserCurrency。

当增量发生时,这也是一个事件,并且触发第二层功能,并且如果超过阈值,将授予徽章。

在SO中也有“ secret ”徽章。你知道吗?您没有这些徽章,但是在另一个表中设置了标志-编辑权限,评论权限,Wiki管理权限等等。

我提到了 secret 徽章,以明确说明这一点:跟踪授予奖励货币的用户事件的代码是一个松散耦合到您的应用程序的独立插件,用于跟踪导致徽章的货币事件的代码是第二个独立的,松散的-耦合的代码段,以及用于跟踪导致权限的货币事件的代码,是第三个独立的,松散耦合的代码段。只要每个内部组件之间的API清晰可见,每个内部组件都可以在不改变其他内部组件的情况下进行某种程度的更改。

因此,游戏化很容易编写。

这也很难。 SO之所以如此,是因为他们确实认真思考过他们希望用户做的事情。渐进式权限系统可防止令人讨厌的拖钓,徽章系统从一开始就向用户介绍徽章系统(“第一篇徽章!”),但同时也向用户教育用户可以做些什么。徽章的名称和描述令人愉悦,有见地,并引导用户了解更多信息。 “游戏化”不仅与参与有关,而且是一种文档,告诉用户:“现在,您已经弄清楚了X,就可以争取Y!”如果您无法达到目标,就不要打赌。

关于php - 您将如何实现类似于SO的徽章系统?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5794455/

10-15 07:53