如今创建的许多游戏都有自己的成就系统,奖励玩家/用户完成某些任务.stackoverflow上的徽章系统完全相同.
虽然有一些问题我无法找到好的解决方案.
成就系统必须始终关注某些事件,想想一个提供20到30个成就的游戏,例如:战斗.服务器会检查这些事件(如:玩家避免X在这场战斗中对手还是玩家的攻击走到X英里)的所有时间.
成就系统通常需要仅在游戏的核心引擎中使用的数据,如果没有那些令人讨厌的成就,就不需要那些数据(想想例如:每次战斗中玩家跳跃的频率,你不要我不想将所有这些信息存储在数据库中.)我的意思是,在某些情况下,添加成就的唯一方法是将检查其当前状态的代码添加到游戏核心,这通常是一个非常糟糕的主意.
成就系统如何与拥有后来不必要信息的游戏核心相互作用?(见上面的例子)
他们如何与游戏的核心分离?
我的例子可能看起来"无害",但想想目前在"魔兽世界"和同时在线的众多玩家中可获得的1000 多项成就.
我有兴趣为我的Ruby on Rails应用程序构建一个强大的成就系统.
成就可以以无数种方式发生.通常情况下,我们会有一些标准可能发生在几个模型上,一些是必需的,一些是可选的(混合和匹配)触发成就.
我会说这类似于这里的成就系统或Foursquare徽章.理想情况下,如果有一个现代工具可以帮助抽象出一些DSL中的大量工作,那将是非常棒的.
我很想知道其他人如何使用Ruby或Ruby on Rails解决这个问题.从头开始构建这听起来不合理,因为我确信它已经反复多次解决.
有人知道在iTunes Connect中将所有成就上传到Game Center的方法吗?
我用10种语言大约有30项成就.这是一大堆点击,剪切和粘贴,以便将源文件中的数据导入iTunesConnect.我注意到有一个新功能上传应用程序购买.成就有类似的东西吗?理想情况下,有一个很好的XML上传.我在做梦吗?
谢谢,
院长.
我正在使用谷歌的新游戏服务测试我的游戏,我想重置我的帐户的成就以进行测试.
我发现你可以使用谷歌的API(https://developers.google.com/games/services/management/api/#Achievements)重置成就,我正在使用OAuth 2.0游乐场发送POST请求,但是它不工作:(
具体来说,我是发送POST请求" https://www.googleapis.com/games/v1management/achievements/reset ",详见该链接.
并且,当我转到code.google com并检查我的服务时,所有Play服务都是"开启".
这是输出.如何重置我的成就以进行测试?我甚至关闭了吗?显然我的"访问没有配置"我该怎么做?如果不授予我的访问权限,OAuth2.0游乐场的前两个步骤的重点是什么?
HTTP/1.1 403 Forbidden
Content-length: 205
X-xss-protection: 1; mode=block
X-content-type-options: nosniff
X-google-cache-control: remote-fetch
-content-encoding: gzip
Server: GSE
Reason: Forbidden
Via: HTTP/1.1 GWA
Cache-control: private, max-age=0
Date: Sun, 19 May 2013 04:11:38 GMT
X-frame-options: SAMEORIGIN
Content-type: application/json; charset=UTF-8
Expires: Sun, 19 May 2013 04:11:38 GMT
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured"
}
],
"code": 403,
"message": "Access Not Configured"
}
}
Run Code Online (Sandbox Code Playgroud) achievements oauth2-playground google-play-services google-play-games
我已将我的排行榜集成到我的Android应用程序中,但不打算添加成就.我已经在Google Play的开发者控制台中完成了游戏服务设置,除了成就之外.当我进入发布部分时,它说我的成就不见了.是否可以在没有成就的情况下发布它?
我一直在寻找SO的开源克隆,
http://github.com/cnprog/CNPROG
我不知道Python/Django但我仍然可以阅读最新消息,
开发人员似乎只是通过cron工作授予徽章,奖项是通过方法给出的,是获得奖项必须满足的标准的"规则".
在这个文件中,这是Criteria,
然而,在回答最好的商店徽章标准时,它的说法不是像
"select count(*) from posts where user = :user"// for every post.
Run Code Online (Sandbox Code Playgroud)
这有点像CNPROG方法,而是相反
有一个简单的规则,监视每个帖子来,并"计算它们",将规则状态存储在用户配置文件中.
因此,通过"计算它们"这个词,这是否意味着将所有内容记录在一个表中会更好,比如
class UserStats
int voteUpCount
int voteDownCount
int score
int commentCount
int viewCount
int offensiveFlagCount
int imageCount
int feedbackCount
int commentEditCount
int commentDeleteCount
int questionCount
int questionEditCount
int questionDeleteCount
Run Code Online (Sandbox Code Playgroud)
然后使用此数据从中制定规则,只需if(commentCount > 10)...对用户发布的每条注释进行简单处理,然后执行SQL查询
问:如果有人可以从问题的最佳方式到商店徽章标准进一步解释答案,但举一个"规则","标准"和数据库设计的例子
这些将与一些"每用户操作"和cron作业一起使用以提供徽章
在离线模式下(例如,打开飞行模式),尝试找出在Game Center中使用成就的最佳方式.
据我所知,iOS 5+中的Game Center负责离线提交的成就和分数.它就像一个代理缓存,并在用户上线时将它们提交到在线游戏中心.考虑到这一点,我在做什么:
在用户身份验证成功时,我加载成就并将它们存储在字典中.
[GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *gcAchievments, NSError *error)
{
if (error) { ..skipped ..}
//This dictionary will store current achievments, so that we didn't submit them
//once more and didn't show notification.
achievments = [[NSMutableDictionary alloc] initWithCapacity:gcAchievments.count];
//Storing achievments in dictionary
for(GKAchievement *a in gcAchievments)
[achievments setObject:a forKey:a.identifier];
}];
Run Code Online (Sandbox Code Playgroud)
稍后当我提交新成就时,我会在字典中检查成就,如果成就已经完成,则不提交.如果我提交成就,我也会将其添加到achievments字典(内存中),以立即重新表明已经提交了此成就.
GKAchievement *cachedAchievment = [achievments objectForKey:identifier];
if (cachedAchievment && cachedAchievment.percentComplete >= 100)
{
//Already unlocked this achievment.
return;
}
GKAchievement *achievement = …Run Code Online (Sandbox Code Playgroud) 我想在Django项目中实现徽章应用程序,以提供与Stackoverflow相同的功能来奖励用户徽章.
我查看了各种应用程序(应用程序列表),各种博客都提到了Brabeion.这是Badges最好的Django应用程序吗?
该项目似乎没有维持一段时间,github上的问题仍未得到答复.文档很简单,但是没有解释细节,award_points例如下面示例中的方法.
def my_view(request):
if request.method == "POST":
# do some things
request.user.profile.award_points(15)
badges.possibly_award_badge("points_awarded", user=request.user)
# more view
Run Code Online (Sandbox Code Playgroud)
另一方面,djangopackages.com列出了Django成就.文档似乎很好而且详细,但是,每个成就都需要它自己的类(可以是一个长类定义文件).
你在为项目使用什么?如果您使用其中一个描述的软件包,您是否有可能在点注册之间共享一些代码?
我喜欢我正在设计的网站的徽章和成就的概念.它们已经被证明可以提高消费/使用率,我认为这可能是我想要开发的应用程序的一大动力.
从高层次来看,我可以想到3种方法.
检查满足cron工作要求的成员:这对我来说似乎不是一个好主意,因为成员数量增加,cron工作需要更长时间才能完成.
每次动作完成后,可能满足徽章的要求,检查是否任何徽章应该颁给:这似乎是一个好办法做到这一点,但似乎我可能砸向服务器上的徽章连续检查已被授予或用户可能甚至不接近.
每次用户完成可以获得徽章的操作时,请检查他们是否已经拥有徽章,然后检查它们是否符合要求:这似乎也没问题,但如果我将用户存储为对象,则看起来像它可能会变得非常大,或者我可能最终会非常难以检查数据库以检查成就.
我有什么选择吗?我对一种或多种方法的担忧是否被夸大了?
编辑: 这是一个比我想象的要少得多的问题,还是在一个糟糕的时刻问我?我有什么不清楚的地方吗?
我有两场免费游戏(带广告)和付费游戏。
在 iOS 上,他们共享一组中的排行榜和成就。
是否可以为 Google Play 游戏服务中的这两个应用程序共享一个排行榜。我应该链接到signle GPG配置文件这两个应用程序吗?他们都在同一个平台上(并且有两个不同的名字 xxx 和 xxx free)?
android leaderboard achievements google-play google-play-games
achievements ×10
android ×2
badge ×2
game-center ×2
ios ×2
leaderboard ×2
cron ×1
django ×1
google-play ×1
objective-c ×1
optimization ×1
ruby ×1