关于Draw Something的一些分析

来源:互联网 发布:mblock编程语言 编辑:程序博客网 时间:2024/05/19 09:48

转自: http://all-ipad.net/tag/小小帝国/


Draw Something无疑是当前手机游戏领域最热门的话题,不论是关于其如何能获得成功的各类分析,还是它濒临破产之后又一飞冲天的神话,都足以吸引到大量的眼球。我也不例外。在沉迷于其中一个晚上之后,我决定再从技术的角度看看它,就像之前的小小帝国一样。

因为Android上已经配置好了抓包分析环境,所以在我的Nexus One上安装了Draw Free之后进行分析,从后来的分析结果看,iOS上应该类似。

 

首先是服务器。有两台服务器,一台是amazon的S3,用于保存静态文件,比如wordlist、道具列表等等。另外一台是omgpop.com,同小小帝国一样采用nginx实现的RESTful服务,用于实现游戏逻辑。

wordlist也就是游戏中所能够绘画的单词列表,在程序启动时会加载http://static.iminlikewithyou.com/drawsomething/wordlist.csv,里面的内容是类似于

这样的字符串,其中第一部分是单词,第2个数字表示金币数,只能是1,2,3,第3个数字表示是否为高级版才有的单词,只能是0或者1,0表示只能在Free版中出现。

之前在玩游戏的时候借助的是有道词典的DrawSomething辅助工具,里面会搜索所有的单词。有了这个词典,工具可以做的更完善,只从这1998个单词中搜索,结果会准确得多。而事实上也确实已经有人提供了这样的工具,在Google搜索“http://static.iminlikewithyou.com/drawsomething/wordlist.csv”,会发现Github上有两个gist,一个是用python写的,一个是用ruby写的。

道具列表则是游戏内商城里的物品信息,里面包括了android和ios上的product id,所以iOS和Android客户端取的应该都是这同一份数据。

 

游戏的功能则在omgpop.com服务器上实现,从返回信息里看到采用的是nginx server,传递的数据使用json格式,未加密。比如登录成功后返回的玩家信息:

进入游戏后返回的当前状态信息:

客户端向服务器发送的状态更新数据:

另外也会经常向omgpop.comPOST一些状态数据,比如玩家属性、游戏状态等。在完成绘画之后也会向服务器发送alert信息。

但是绘画信息及猜词信息使用的是二进制数据,或者是经过编码的二进制数据,不能直接看到内容。

 

在iOS平台上Quartz 2D API提供了很强大的绘图功能,比如Path API,可以很轻松的实现类似这样的效果:

在Github上一样也可以找到一些painting相关的代码。简单来说,把绘制的点信息记录下来,同时每次使用的画笔信息也记录下来,使用相同的绘制算法即可以重现绘画。如果数据量过大的话可以做一些优化,比如多个点如果在一条偏差不大的直线上的话,中间的点都可以省略掉,等等。

 

而服务器方面也没有做太多的工作,从发送的数据上可以看出,Draw Something与小小帝国类似,也是采用的客户端为主的模式,玩家的状态数据都是客户端自己维护,服务器只起到一个数据持久化与中转的功能。

但就是这样简单的技术与功能,也造就了Draw Something的神话。只能说,移动APP拼的确实不是技术,而是创意。

原创文章,转载请注明: 转载自All-iPad.net

本文链接地址: 关于Draw Something的一些分析

Tags: drawsomething, nginx, omgpop, RESTful, S3, 小小帝国 [...]

小小帝国之技术分析

因为顽石吴刚的推荐而最近大火的Android手游“小小帝国”,我也下载下来玩了几个小时,并且瞬间就在里面消费了50元人民币。游戏整体感觉还是不错的,当然作为技术人员,对于一个新东西除了欣赏它的表面之外,更感兴趣的还是它背后的实现。

需要说明的是,这里只有对这个游戏实现方法的分析,作为自己开发的借鉴,不涉及破解内容。同样是一名游戏开发者,深知游戏开发的艰辛,也不希望看到游戏破解的存在,更希望这个市场能够更美好。

首先想看看这款手机网游的网络部分,在Android上抓包分析也还是挺方便的,使用的工具是Shark,如果想在手机上浏览数据包还可以再装上Shark Reader,不过因为手机屏幕与操作的问题,最终还是在Windows平台上使用的Analyzer,一款开源的抓包及分析工具。注意在使用Analyzer的时候需要先安装WinPcap,这个软件就不用多介绍了,Windows平台下做数据包分析的必备。

通过几次简单的进入退出与操作的sniffer,对这个游戏与服务器交互的大致流程有了个了解。

1. 服务器部署在amzon aws上,本地先请求解析dns 179.87.32.176.in-addr.arpa,返回ec2-176-32-87-179.ap-northeast-1.computer.amazonaws.com,之后再解析这个地址,这台服务器提供玩家数据服务,监听在80端口. 另外一台游戏服务器为ec2-46-51-239-9.ap-northeast-1.computer.amazonaws.com,提供游戏逻辑处理服务,监听在8200端口。

2. 服务器使用ngix 0.8.54,http server,使用JSON数据格式,部分客户端发往服务器的数据经过了加密,服务器下发的数据全部都是明文,且未压缩。

原创文章,转载请注明: 转载自All-iPad.net

本文链接地址: 小小帝国之技术分析

Tags: Android, little empire, 小小帝国, 手机网游 [...]


0 0
原创粉丝点击