SNS游戏开发的感想

Posted by Gamelook on 2009.11.11 

文/白军辉

前SNS相当热门,因此也有想做SNS游戏的想法,毕竟从校内网和及开心网的运营来看,第三方的SNS游戏制作公司盈利还是相当大的。可以说 2009年是SNS游戏是兴起的一年,而10年则会是百花齐放的一年,这是一块大蛋糕,虽然有人劝我说这类游戏已经泛滥,但我觉得蛋糕大也说明市场大。下 面说说做一个SNS游戏所需要做的一些事情。

1、Flash素材库的建立

这个需要美工来做,首先做成一个包括许多游戏中要用的的元件的库文件,元件的建立可以用别人的素材,也可以自己手绘,这个要看美工的能力,最后编译成SWF文件来供AS程序员来调用。

2、游戏主程序的建立。最好用FLEX来完成,因为flex builder不管是对项目的控制还是面向对象的管理都比用Flash 来做好很多。项目要建成ActionScript,因为你既然是做游戏就不会用到FLEX的控件,因为所有的游戏里面的控件都不是普通程序里面的控钮或是 标签控件。

3、后台WEB语言的选择。其实一开始想使用Ruby On Railsr,但是最终还是放弃了。后来又考察过JSP,因为JAVA是一门支持多线程的语言,不像ROR或是PHP之类的单线程语言,而且JSP又可以 用线程池,在WEB服务器和数据库的并发性能上肯定会好些。但是JAVA的线程同步也会随着应用的复杂出现一些陌名其妙的事情,这也是我最终决定放弃 JSP的原因,再后来我看了一篇JSP和PHP关于数据库性能评测的文章后我就完全抛弃了JSP,因为JSP和PHP分别用普通方式和连接池(jsp)和 长连接(php)的的方式评测结果来看,几乎是一样,虽然连接池或是长连接的效率相比普通方式的数据库评测提高了将进三倍,但却未必适合像SNS游戏这样 有些巨大同时上线用户的程序。传统方式的数据库操作是当需要从数据库取数据的时候连接数据库,取到数据后,则关闭数据库连接,这样的方式虽然在频繁的连接 与断开中损失了一些效率,但是从数据库的负载来看却比较好的。试想一下,一同数据库服务器同时有1万人连接,并且进行着select、update、 insert等操作的时候,会是什么样的场景。因为JSP看起来是真的适合做B/s的软件,而不应该是网站,虽然性能优异,但是决不那么容易驾驭,或许牛 人可以写出多线程支持完美,且高负载的WEB后台程序,但是对于SNS游戏这种短平快的项目,显然是不适合的。这样看起来PHP是最合适不过的选择了,简 洁的语言、灵活的编程方式,以及丰富的类库,以及全球300万PHP程序员的资源共享,决定了这门语言的生命力。我这里不推荐用PHP的框架,因为毕竟不 是用PHP做网站,我们要做的只是一个能与as程序交互的WEB后台程序,用框架必定也会损失一些性能,而且最主要的还是下面要说到的通讯协议库 AMFPHP的存在。

4、说到通讯协议最开始的想法是采用JSON,通过PHP的JSON库将数据库中的数据通过JSON的方式返回给AS程序,然后解析处理,因为比 XML格式来说JSON的包会小一点,但是从本质上来说XML和JSON都是文本类型的数据包,效率来说肯定比不上使用二进制的AMF格式,而PHP有大 名鼎鼎的AMFPHP包,可以提供使AS程序与PHP进行通讯,当然AMF3也有自身的缺点,虽然是二进制的数据包,但是本身有过多的描述信息,且并未进 行过压缩,据我观察描述信息占到500多个字节左右,哪怕是一个只有一个英文字母的数据包,因此对AMF3进行压缩是相当必要的,虽然当数据返回量大过 5K时,可以基本忽略500多个字节的冗余信息,但是对于SNS游戏来说,往往有时用户服务器上取到的数据就是很短小的数据包,比如说用户点击的某一块地 上的种物成熟剩余时间(这里以开主农场游戏为背景),这样的一个包,如果用纯JSON包来构建,相信不会超过100个字节,但是返回的AMF3包足足会有 600多个字节,于是当游戏用户达到一定的数量级别,加之此类操作的频繁程度,相应这其中的总体效率会降低很多,因此在服务器端的压缩数据应该说是必须 的。当然我们可以用ZLIB库来进行压缩,但是压缩也有一个隐患,就是要消耗服务器的CPU占用率,当这种压缩的操作很频繁的时候服务器的CPU势必会保 持在一个比较高的百分比上,因此在选择压缩比例的时候要总体来权衡。

5、一个团队要将这些技术整合在一起,并加以实际应用做成SNS游戏可不是一件容易的事情,程序开发完成后,还要进行游戏本身的BUG测试,之后就 是压力测试,再下面就是服务器的构建以及宽带的选择,产品上线前要做一一的宣传工作,上线以后还要做推广,以及维护、更新工作。

总结:虽然说SNS游戏做起来门槛不高,但是要真正做好一个SNS的应用我觉得并不是一件很简单的事情,首先游戏的创意其实决定了游戏本身的盈利, 如果没有好的创意,做出来的游戏没有什么可玩性,用户既使在你一定的推广下会来注册你的游戏,但是你绝对不会拥有一定数量的活跃用户。然后就是技术支持, 你的团队中要有精通flash的美工人员(如果只是会用flash而不具备鼠绘能力的美工,那么你的游戏将不会带给用户多少的冲击视觉),还要有能积极响 应并处理AS的高级程序员(如果程序员经验不很丰富,无法及时去改正程序中的BUG以及无法满足用户的一些改进BUG的要求,而导致论坛里骂声一片)。再 者就是要有一个WEB语言的高手(新手是无法驾驭好后台通讯协议的)以及一个可以灵活使用SQL命令的数据库工程师,通常PHP程序员都是会直接采用 SQL命令来操作数据库的,我觉得这是一个好习惯,我不太喜欢框架中的封装好的数据库类,我觉得这是高级程序员做给低级程序员使用的一种在降低性能提高通 用性的情况下产物。因为一个胸怀大志的程序员,应该很少用人家的框架,而应该在自己的项目中总结一些重构以及复用的方法。当然还要有一个服务器配置、运营 的高手,因为做SNS游戏肯定是需要自己有服务器,虚拟主机也好,VPS也罢,都是支撑不起如果大的访问量的,服务器的优化、集群以及分布管理都是需要认 真考虑的东西,这关系到整个应用的最终命运。最后还要有一个CTO,会运筹为握的人,把握SNS的方向才能真的走向成功,希望中国的SNS第三方开发商们 能怀着一颗热切的心投入SNS应用的开发,却迎接2010这个山雨欲来风满楼的年度!

 

转载自:http://www.gamelook.com/?p=7287

你可能感兴趣的:(游戏,jsp,数据库,PHP,服务器,SNS)