想用开发LBS手机游戏,不知道有没有撞到人现成支持的游戏引擎?

LBS游戏MapAttack是如何开发出来的_百度知道
LBS游戏MapAttack是如何开发出来的
提问者采纳
在过去的几个月中,我们将大部分的空闲时间都用在了开发一款实时游戏上,由于它是基于地图环境的,所以我们称之为“MapAttack!”,并把它作为我们LBS平台Geoloqi的一个测试程序。游戏中,两组队员互相竞争,尽可能多的攻占游戏界面上的小圆圈。而在这里,游戏界面其实就是城市中玩家周围的街道。图1 MapAttack的游戏界面Geofence在这里指地图上带有数字的小圆圈,玩家进入这些小圆圈后,就会得到与圆圈中所标记数字相同的分数,它所在小组的总分数也会相应增加,同时圆圈的颜色会变成该玩家小组的颜色。我们来看一段这个游戏的视频:为什么要开发这么一款实时Geofencing游戏呢?我们想要创造一款游戏,它能够让人们与真实世界物理交互,而不是像第一人称射击游戏或者即时战略游戏那样通过电脑控制台来交互。同时,我们也是受到了真人版吃豆人(PacManhattan)的启发。技术挑战处理用户进入区域的检测,同时留出200+的小圆圈。处理一局游戏中所有手机位置信息的更新量(一局游戏有20或者更多用户)。允许每台手机或者观看游戏的Web浏览器都能实时地看到玩家们的移动和圆圈颜色的改变。每台手机都会将它的位置发送给服务器,服务器会广播这些位置数据给其他手机以及观看游戏的浏览器。处理GPS技术在不同智能手机模型间的错误和差异以保证游戏的公平体验。GPS硬件的差异众所周知,GPS信号反映了城市中高层建筑的情况。这就导致了在位置数据方面的不准确和不一致。这点在新手机上并不显著,但是在较老的手机上却十分明显。图2 MapAttack系统架构Socket.ioSocket.io是一个跨浏览器的Web套接字实现,它允许在浏览器上做实时数据更新,并且也支持老的浏览器。多亏了Socket.io我们可以利用最新的技术,同时不用要求所有我们的用户升级到最新的浏览器。这让我们实现了游戏中浏览器和手机间的即时更新。Node.jsNode.js是谷歌浏览器的V8 Javascript引擎事件驱动的I/O实现,它由一个反应器实现,而这个反应器使得大量异步数据的传输得以实现。当手机要发送数据时,我们用一个Node.js服务器将位置数据流从手机传输到Redis的发布频道或者订阅频道上。数据发布到Redis上,另一个Node服务器订阅该频道。我们的Node.js服务器接收手机通过一个类似Google’s Protocol Buffers的顾客协议发来的更新,实际上就是压缩的二进制的JSON。当一个浏览器想要开始发送数据流时,它连接Socket.io服务器然后这个服务器订阅Redis的发布频道或订阅频道。这个Socket.io服务器通过Websockets向浏览器发送数据,如果Websockets不可用,闪回或者长轮询作为后备方式。本质上讲,Socket.io允许我们使用Websockets规范,这是全新的,但同时也能工作在较老的浏览器上。RedisRedis是一个开源的、高级key-value存旦禒测溉爻防诧狮超饯储系统,它支持消息队列使用发布/订阅模式。从较高层次来说,Redis让我们所能做的事,是控制把数据实时发送到所有游戏中的手机和浏览器。游戏中的每一台手机把它的位置发送给服务器,服务器广播这些数据给其它手机和正在观看游戏的浏览器。关于发布/订阅系统的一件吸引人的事:使用一个传统的系统你不得不维持许多连接,并且为了通过连接发送数据,你不得不重复发送,与发布/订阅系统不同,如果你有10,000个用户,你将不得不重复通过10,000个连接,发送回非常缓慢,并且容易出现死锁在套接字上的问题。使用Redis的发布/订阅模式,就像启动一个广播电台。一旦把它打开了,人们(在这里指的是浏览器)就可以收听。这让我们能够把实时数据大规模地更新给客户端(浏览器和手机)。Sinatra SynchronySinatra::Synchrony是Sinatra的一个小扩展,它动态提升了Sinatra网络应用的并发性。由于EventMachine和EM-Synchrony的支持,当你有很多传输和低速IO请求时(如向外部APIs发送的HTTP请求),它增加了你的应用每个过程可服务的客户的数量。由于它内部使用Fibers处理堵塞的IO,所以没有回调的需要。这意味着我们可以像写一个正常的Sinatra网络应用那样进行开发。Sinatra::Synchrony允许我们做异步程序,除了那些在Fibers中封装了回调操作的。这让我们能够实现同步程序的同时利用异步代码的优势。
其他类似问题
为您推荐:
lbs的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁常见的android游戏开发软件——AndEngine
[问题点数:40分]
常见的android游戏开发软件——AndEngine
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年10月 总版技术专家分月排行榜第三
2014年3月 Java大版内专家分月排行榜第一2014年1月 Java大版内专家分月排行榜第一2013年12月 Java大版内专家分月排行榜第一2013年11月 Java大版内专家分月排行榜第一2013年10月 Java大版内专家分月排行榜第一
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 不知道有没有撞到人 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信