编程语言
首页 > 编程语言> > PHP-有什么想法可以改善我的徽章系统?

PHP-有什么想法可以改善我的徽章系统?

作者:互联网

我正在使用徽章系统,到目前为止,我已经有了这个主意:

创建一个UserMeta表来存储将在条件中使用的数据.

UserMeta
===========================
user_id | posted_comment_count | flagged_comment_count | reputation | etc.

我想知道这是否是个好主意,就好像我需要添加一些元数据用作标准一样,我需要添加一列,因此我认为在json中使用了序列化对象,例如.

另一个表称为Badge:

badge_id | badge_name | badge_criteria

徽章标准是json或任何其他序列化格式,其存储对象如:

{
  'posted_comment_count': '>= 20',
  'flagged_comment_count': '=10',
}

另一个用于将用户与徽章相关联的表(一个简单的关联表)

我正在使用Doctrine2,尽管我要使用Event更新UserMeta.

有任何意见,建议吗?

解决方法:

我的游戏化数据库非常简单.我有一个“货币”表,其中只有一个字段,即名称.我有一个“ UserCurrency”表,其中包含用户ID,他们所获得的货币ID以及他们所获得的整数.当然,我有一个用户表.

就是这样.

我使用的是Django,所以其中有些可能没有意义,但是基本上我有一个事件侦听器,用于侦听数据库中的事件.当用户执行任何操作都会导致数据库命中时,事件侦听器将滚动浏览一系列功能,每个功能均包含目标语言中用于授予徽章的简单标准.如果用户符合该条件,则将授予徽章. (“货币”可以是“帖子数”,“回复数”,甚至是“戳数”.请不要将其误认为是货币价值;这只是您要跟踪的内容的总和.

这是一种简单,完全可扩展的记账机制,用于保持得分,而不会因跟踪的特定事物的细节而使数据库的架构混乱.它完全独立于其他任何用户跟踪详细信息,例如个人资料.如果您想添加新的货币(要跟踪的新事物,并对其进行关联和奖励徽章),则将其名称添加到“货币”表中,并设置一组奖励方法,并在以下位置设置阈值规则用户会收到哪些确认,然后由您决定如何向用户显示该信息以及奖励的后果.

而且,规则可以相互关联.堆栈溢出非常好(非常!).例如,当您访问该网站时,“ Enthusiast”徽章的触发规则甚至不计算货币,而是计算访问天数.每次获得声誉时,如果得分超过200,则代码只会将货币计数器“传奇”更新1,并且当该货币达到150时,另一个触发器将授予您“传奇”徽章,依此类推.去耦和独立性是游戏化设计中的强大工具.

标签:doctrine-orm,badge,database-design,php
来源: https://codeday.me/bug/20191208/2091741.html