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

SNS游戏开发的感想相关推荐

  1. SNS游戏开发工程师程延辉:介绍开心农场架构

    SNS游戏开发工程师程延辉:介绍开心农场架构 Five Minutes公司程延辉(小名康天) 介绍开心农场架构,social-game的技术挑战,支持千万级DAU的social-game技术架构.这是 ...

  2. SNS游戏开发的技术准备

    前SNS相当热门,因此也有想做SNS游戏的想法,毕竟从校内网和及开心网的运营来看,第三方的SNS游戏制作公司盈利还是相当大的.可以说 2009年是SNS游戏是兴起的一年,而10年则会是百花齐放的一年, ...

  3. 浅谈全区全服架构的SNS游戏后台

    首先说下分区分服和全区全服的概念,查了一下资料,没有找到合适的定义.说下自己的理解:所有游戏服务器都有玩家数据库,如果以数据库为单位划分Set,单Set如果能承载超过10万的同时在线,可以认为是全区全 ...

  4. 进入游戏开发公司后的感想

    感觉有苦逼,就发表下自己感想,发泄一下压力,分享一下感想. 进入游戏公司第一天上班14个小时,加班到晚上12点,一前知道游戏开发行业加班时间长,进去后发现比自己想象中时间还要长,不过待遇福利挺 好的, ...

  5. Windows游戏开发感想一个完整的Windows窗口程序

    现在的互联网行业从事Windows游戏开发的人实在是太少了.一是因为门槛较高,游戏行业本来就是互联网行业最尖端的领域,要想从事游戏开发,不仅要掌握一门过硬的语言,尤其是对C++的精通,还要对算法非常精 ...

  6. 游戏开发笔记(序)——因由、感想与目的

    现实有时不可爱,但是好在我们还有游戏中的虚拟现实.--比起骨干的现实,游戏世界则要单纯可爱的多.在此寻找精神上的慰藉我倒不觉得是一种逃避,我认为那是将自己从现实泥泞中间抽出的轻松一刻. 游戏10多年, ...

  7. 走在网页游戏开发的路上(十)

    页游资源管理 现在页游的规模越来越来大,游戏内容丰富,资源管理变得很重要.现在一款SNS页游的所有资源可达50M,MMO页游更高达几百M,不可能把资源放到一个文件里面.也不可能一次性加载完所有资源.按 ...

  8. 走在网页游戏开发的路上——页游资源管理

    本文原创版权归 博客园 吴秦 所有,如有转载,请按如下方式详细标明原创作者及原文出处,以示尊重! 作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 ...

  9. 走在网页游戏开发的路上

    本文原创版权归 博客园 吴秦 所有,如有转载,请按如下方式详细标明原创作者及原文出处,以示尊重! 作者:吴秦 出处:http://www.cnblogs.com/skynet/ 本文基于署名 2.5 ...

最新文章

  1. 35天 GRE: V160+Q168+W3.5
  2. Mac如何搭建 配置 虚拟机环境 virtualenv python虚拟环境
  3. fixed与sticky的区别
  4. 用对 gitignore
  5. PyTorch 1.0 中文文档:多进程包 - torch.multiprocessing
  6. android gdb 远程调试工具,gdb输入/输出错误远程调试到Android
  7. Java对Domino Objects的访问控制
  8. [渝粤教育] 中国地质大学 会计专业英语 复习题
  9. dataframe两个表合并_使用Pandas关联Excel表操作示例
  10. Nebula Graph数据库 学习笔记
  11. svm python 多分类_机器学习之SVM多分类
  12. Visio 2003 Professional
  13. 最受商户关注的十大进销存软件,真实功能大测评
  14. oneNote笔记名不同步
  15. openwrt 中 Luci 的简单使用
  16. 群晖、黑群晖安装emby很慢,或者卡0%的解决办法,请收藏
  17. css -- position : absolute 在不同的浏览器位置不同
  18. Vuetify学习记录(三)-- v-data-table
  19. 哈工大软件构造课程知识点总结(一)
  20. 已知协方差矩阵求相关矩阵matlab,已知协方差矩阵求相关矩阵

热门文章

  1. 论文阅读:3D multi-scale, multi-task, and multi-label deep learning for prediction of lymph node metasta
  2. 模拟CMOS集成电路设计入门学习(8)
  3. 深度优先遍历算法-02最大岛屿问题
  4. 网络RTK和传统RTK的技术定义区别
  5. 基于JSP通讯录管理系统
  6. 苹果iPad怎么截图?图文教学,可快速学会
  7. HTML5实现简易计算器
  8. 必看!gitee上开源的商城源码
  9. Matlab 样条插值小程序
  10. 联想x1carbon更换电池_ThinkPad笔记本如何拆卸及安装电池