很多人以为WEB游戏的样子就类似开心网,很简单,主要是大家互动.但其实不是这样的.
开心网的WEB游戏比如种菜,大家觉得画面很精美,其实主要是前段采用了FLASH作为页面的展示,而FLASH有优势也有劣势.画面精良,与服务端数据通讯少(只需要提供必要的数据就可以了)是他的强项.当然他也有很大的缺陷,那就是第一次加载SWF文件很慢.不过因为开心网的这个SWF游戏本身比较小,所以并不能体现出他的劣势,这可能只有开心网这个平台才可以这么做,而很多网页游戏(FALSH版本)光下载SWF(第一次)就需要几M的容量,加上后续还需要下载地图…这不得不感叹有客户端游戏的极大优势啊…
我们的游戏没有采用FALSH方式,当然也有团队对FLASH的SOCKET通讯方式不熟悉,也有FALSH下载量太大导致服务器流量与并发量吃紧有关.我们采用的是javascript.用了很多扩展包,比如propotype,dwr(ajax),以及JS的特效包.页面采用的是WEB2.0(CSS+DIV)方式.其实效果也是很好的.这里不得不说一下DWR了.速度快,只刷新局部页面是他的最大优势.普通的WEB请求需要请求图片,js,html等等,花费的请求时间与数据下载量巨大.一个JS小的到50毫秒,大的到500毫秒不等.而不起眼的小图片,竟然也会吞噬你20毫秒的时间,而这些请求一累计,请求时间花费无数…这个时候DWR就发挥出他的威力了,他只有一个请求(只有一个!)在这个游戏里最大的数据库消耗功能(排名统计)也仅仅用了800毫秒,而这个功能竟然包括了数据库的一张表(几万数据量)的 1select,2count,3where 等3次查询,性能之高可想而知.
这里大家可以看出来,WEB游戏除了画面之外,重要的是什么?性能.基本上我们游戏5万个会员,在线人数保持在500人左右(并发量).这可不同于普通网站的在线人数哦.因为普通网站一般访问一下要过好久然后再次请求,没有狂刷页面的.而游戏是实时互动的.一个用户可能一秒就要来一个请求,服务器的压力之大可想而知…有人说,加大服务器配置嘛,这句有点偏颇.其实是,要先从软件的角度优化性能.比如不必要的数据库查询(大约占性能的30%),比需要的网络请求下载(30%),数据的缓存(20%)以及其他的一些优化.需要综合…这样的结果就是,我们用3台服务器(1个MYSQL,2台应用)撑起了整个游戏环境(应用服务器还是TOMCAT集群的哦!)
开服只1个月,数据库量大到什么程度?一张表竟然有100万条记录了…这时候怎么办呢?目前比较好的想法是用年月的方式作为表的名称,但这个就与hibernate的动态映射有关了,网上搜了一下有这个技术,但目前还没用.只能用定时删除历史的方式来实现了..呵呵
做游戏,重要的是你要时刻考虑:性能,游戏的效率,游戏的可玩性.如果你觉得这个功能好玩,就要吧他做到最好,既好玩,又速度快,又要让玩家有刺激感…很复杂啊..
第一部分先写到这里吧,能写的太多了,这里只是一小部分.呵呵