Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5402548
  • 博文数量: 763
  • 博客积分: 12108
  • 博客等级: 上将
  • 技术积分: 15717
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-28 21:21
个人简介

业精于勤,荒于嬉

文章分类

全部博文(763)

文章存档

2018年(6)

2017年(15)

2016年(2)

2015年(31)

2014年(14)

2013年(87)

2012年(75)

2011年(94)

2010年(190)

2009年(38)

2008年(183)

2007年(28)

分类:

2010-08-24 14:06:26

原文地址:


openfeint注册过程,部分应用及体会[06-15更新注册部分内容]

首先声明:我使用openfeint才一周的时间,而且其中还忙乎了其他的事情。所以只是粗略看了下各个功能的说明文档,没有仔细看,而且这里教程的部分内容也是在别人的帮助下才完成的。所以,有什么错误的地方请指出来,我会改,不要拍我的砖。

首先,感谢我同事的帮助,才能搭建起openfeint的开发环境。

其次,本文涉及到的内容只是openfeint的初级应用,更详细的可以参见deadseafu的那篇教程。连接: ,这篇教程同样让我收益不少。感谢。

我使用的openfeint的版本是2.4.8。

本文阅读指导:本文共分三个小节,第一小节写的是我使用openfeint的一点小心得,因为有许多人已经成功的注册和搭建好的开发的环境,所以他们可以仅仅关注这一部分即可。第二小节写的是opfeint环境的搭建,我是在别人的帮助下才完成的,所以,自己也不是特别明白,我把我能想起的过程尽量完成的呈现给大家,有错误,欢迎提出讨论。第三小节写的是openfeint的注册过程,给予想使用而还没有开始没有使用openfeint的人提供部分帮助。


一、openfeint中的LeaderBoards和Achievement的一点体会
    1.数据提交的格式
    最近想向自己的游戏中添加点openfeint功能,使用的时候发现,openfeint的功能虽然比较多,也比较强大,但是,有些地方还是不太如人意。我游戏中的分数有一项是float型的数据,可是当我提交的时候,发现openfeint的在线排名只支持整数形式的数据,改变了官方的api提交之后,服务器那边仍自动转换成了整型的数据。我在论坛上求证了一下,虽然没有结论,但我认为openfeint高分排行榜仅支持整型的数据。

    2.数据提交的方法
    [OFHighScoreService setHighScore:你提交的分数 forLeaderboard:@"分数项的ID" onSuccess:OFDelegate() onFailure:OFDelegate()]; //提交高分,如果函数无效,请引入#import "OFHighScoreService.h"
    通过上面那个函数,就可以向服务器提交数据,其中你要提交的分数,无论是什么类型,最后都会转换成整型的数据,可以参见上一条信息。而分数项ID,则是你在申请LaderBoards的时候openfeint分配给你的一个数字。后面两个参数,应该不需要改变,我没有尝试过做其他的动作,有兴趣和想法的朋友,可以尝试象@selector那样使用它。

    [OFAchievementService unlockAchievement: @"成就ID" onSuccess: OFDelegate() onFailure: OFDelegate()];//解锁成就,如果函数无效,请引入#import "OFAchievementService.h"
   这个函数的功能是解锁成就,当你在游戏过程中达到某一个要求时,就可以解锁你在openfeint上预设的成就。
   例如:
   生存游戏中:if (生存时间 > 100s )  { 调用上面的函数解锁你自己预设的成就; }
   jump游戏中:if ( 高度 > 10000m )  { 调用上面的函数解锁你自己预设的成就; }

    3.网络对分数提交的影响
    网络畅通的情况下,调用上述函数提交分数(最高分数被刷新时)可以成功,并且解锁成就并不会反复出现解锁提示。好吧,既然这个可以完成我们的要求,那么这里就不是重点。

    网络不通的情况下,就会出现一点问题:
    在阐明问题之前,我想先说一下我对openfeint的数据存储的理解或者说感觉。使用penfeint的时候,在documents目录下会生成两个文件,一个FakeKeyChain.plist,据我观察,这里面存放的就是我们在openfeint里为这个游戏申请的Product Key和Product Secret,而且Secret经过了加密处理。另一个文件则是feint-offline,这个文件是无法打开的,在windows用记事本打开也是一堆乱码,也许有其他的办法,不过我没有找到。我对于这个文件的用途猜测是,这个文件用来存档玩家的一些信息,比如玩家名和分数等,这个文件我暂时叫它为“本地隐藏信息表”吧。
    
    问题来鸟,在没有网络的情况下,取得了一个分数,然后第一次调用分数提交函数,会提示你得到了一个高分,存储在本地(我感觉就在本地隐藏信息表中),问题出现了!当你这时连接网络,分数并不会自动提交,而你自己手动提交(比如点击一个按钮,按钮的功能是提交最高分数)也没有任何的效果。
    而在官方文档中有这样一Q&A:
    Q:what happens to a high score when a player is offline?
    A:as os openfeint 2.1 high scoreare queued for submission when the player is offline and submitted when next he's online again.

    Q:if a user says no to using openfeint the first time,is there a way that user can change his or her mind to allow openfeint in the future?
    A:when you deny openfeint it will prompt you to approve/deny again when you open the dashboard([OpenFeint launchDashboard]).it will not prompt you on the next app bootup,or submitting any requests.only when you open the dashboard.

    也就是说,提交失败,于是我做了个试验,在有网络的情况下,提交一个分数100,只显示一次,第二次提交100时,没有提示。然后提交101,有提示,第二次提交101,没有提示。说明了本地隐藏信息表中还存储了一个最高分数的提交次数和提交许可,使用一次提交分数的函数,这些内容就会改变,只有新提交的分数比原来存储的分数大时,本地隐藏信息表才会允许你向openfeint正式提交,否则,无效,感觉上和retain与release有点像。也就时说,最高的分数在提交的时候,没有网络,就等于失败,这里应该算是openfeint的一个小bug吧。也是我遇到问题的所在,没找到什么解决办法,大伙有经验的可以提出来。

    用个简单的图来形容下吧。
    无网络->得到新高分->存储在本地->联网后->不自动上传最高分。
    
    顺便说下成就的提交,没有网络,不可解锁成就,也没有存在本地的提示,联网后,同样也不自动解锁,只有再一次达到条件(方才例子中的if成立)时,才会再次解锁。

    以上,是我的部分openfeint基础使用的经验,也许是我的方法不正确,也许有别的解决办法,我能提供给大家的帮助,先这么多了。


二、openfeint的设置(2.4.8版)
    以下步骤是假设你从没安装过openfeint,如果有,请将以前老版本的openfeint从机器中删除,并从project中删除所有与openfeint有关的东西,然后,你可以按下面的步骤来做了。
    1.从官网下载一个最新版本的没有解压的openfeint SDK。
    2.将openfeint文件夹拖入你的project中。
    3.设置info    
         a.打开project的info,选中build栏,将configuration设置成All configuration
         b.将Other Linker Flags一项的值设置成 -Objc  区分大小写
         c.将Call C++ Default Ctors/Dtors in Objective-c项的选成yes(这一步我没有设置,不知道是什么意思,英文原文如下:Ensure 'Call C++ Default Ctors/Dtors in Objective-c' is checked under the 'GCC 4.2 - Code Generation' section)
         d.设置一个默认的值GCC_OBJC_CALL_CXX_CDTORS 为 YES(这一步我也没有设置)
    4.引入frameworks
         需要引入的frameworks有,Foundation,UIKit,CoreGraphics,QuartCore,Security,SystemConfiguration,libsql3.0 dylie,libz.1.2.3.dylib这些是官方给出需要引入的frameworks,根据帮我搭建工程的前辈说,必须要引入CoreLocation.framework    CFNetwork.framework   MapKit.framework  
     5.必须在你的   .pch   文件中引入#import “OpenFeintPrefix.pch”
     6.将你所有使用openfeint功能的函数改为  .mm  文件

     我能想到的就这些了,还有什么问题,大家可以互相讨论。

三、openfeint的注册
    openfeint的注册并不难,能看懂文档的水平基本就可以了,也可以配合翻译软件来弄。
    1.打开官网  
    2.选右上角的Developers一项,如附图一,跳转到的新界面。
         
 
    3.点击本页面的右上角的login会进入登陆界面,选择右上角的sign up进行一个简单注册,如附图二。本页右下角有一个教学的视频,告诉你如何使用openfeint的基础功能。
        
 
    4.简单注册界面如附图三,填写完成后跳转到一个新的界面(附图四),点击Dive in 进入你自己的openfeint里。
         

         
  
    5.进入自己的openfeint了,这时是你的主用户界面,在这里可以看到最新的openfeint版本,你的这个程序的openfeint的审核情况,以及
自己的client Id,这个是提问时你的ID,还有最重要的Product Key和Product Secret,这两项是用来识别你的程序独有的openfeint应用,如图五。
          
 
  6.接下来你需要填写一个iPurchase,这里需要填写一些关于你程序的详细信息,有 * 的地方必须要有内容。如下图
    7.接下来需要进行一个prepare for submission的申请,这个可以让你的openfeint有效,感觉上像实名认证吧。如果不认证一下,你只能使用test user 进行测试。如图6,有很多东西要填,截图只是示意。
        
 
    8.完成上面这些,你就可以设置自己的LeaderBoards和Achievement了。
    LeaderBoards设置如下图,
        
 
    active选项表示这个分数表是否有效,visible表示这个表是否可见,Descending Sort Order选中表示降序排列,Allow worse scores表示允许同一个用户上传非最好成绩。start version与end version是这个LeaderBoards的有效版本范围(相对于你的程序)。最下面有个High Scores -Top 25这里就是你的程序分数排行榜了。你可以对数据进行操作。
    Achievement设置如下图,
          
 
        name就是你这个成就的名称,feint score表示这个成就的分数(1-200),然后你还可以为这个成就制作一个自己喜欢的图标。secret选项选中表示在揭开这个成就前,玩家不会得到任何与这个成就有关的信息。Description是你对这个成就的说明。start version与end version是这个成就的有效版本范围(相对于你的程序)。

以上,就是一些openfeint 的基础应用,如果想使用更多功能,请参见本文开始时给出的链接。在那里,你会发现更多的惊喜。

阅读(2162) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~