Parse.com阻止玩家等级倍增

时间:2013-09-08 14:32:25

标签: java cloud parse-platform

我正在使用parse.com云存储,为我的游戏实现内置级别编辑器的级别共享/下载和评级,因此玩家可以构建和测试自己创建的级别,后者可以与不同的人共享玩家,这就是我如何将其上传到parse.com云存储:

        ParseObject testObject = new ParseObject("Levels");
        testObject.put("file", new ParseFile(name + ".lvl", levelString.getBytes()));
        testObject.put("author", authorName);
        testObject.put("email", authorEmail);
        testObject.saveInBackground();

它工作正常,但我想让玩家也可以通过创建新的两个字段(称为评级和评级数)来评估下载的级别(比如说1-5颗星)它可能很简单,所以每次有人投票时,我都会将其添加到评级计数中,并且将评级为++。

问题是,如何防止玩家多次评级特定级别?感谢。

1 个答案:

答案 0 :(得分:1)

我为我的一个项目考虑过这个问题。最后,您将需要两个数据点。

  1. 您需要跟踪对象上每个等级的计数(在您的情况下为等级)
  2. 您需要跟踪UserLevelRating,至少是对用户的引用,对目标的引用(级别)以及给出的评级(如果您允许人们更改评级)
  3. 根据您希望如何实现它,防止对某些内容进行评级,或者允许人们更改他们给出的评级,您可以查询当前用户和级别。如果记录被退回,他们已经投票,所以阻止他们再次投票。

    您可以使用安全前或保存后逻辑添加一些云代码来处理其他事情,例如更改投票和更新目标上的计数(级别)。

    以下是我将用于简单的单一投票系统而不改变投票的逻辑示例:

    • 测试UserLevelRating记录是否存在,如果存在则阻止投票
    • 保存投票,包括用户=当前用户,等级=选定等级,等级=给定的明星
    • 在UserLevelRating后保存的云代码,查看Level属性,加载级别,调用属性上的增量进行评级(例如,如果Rating = 3,则调用增量(“Stars3”))

    无论何时加载一个Level对象,您都会有每个评级的计数,并且可以产生平均值。