[游戏] - 网络游戏:为什么失败
来源:http://blog.csdn.net/Nightmare/archive/2005/06/29/407235.aspx
继互联网、电子商务、软件培训后,网络游戏是又一个被炒得过热的领域。随着钞票疯狂的砸下来,血拼的优胜劣汰进程也就开始了,如果不能走向成熟,就会走向失败。
开始的时候依靠的是概念和狂热,或者爆发或者默默消亡。第二批开始有竞争,但出于抢站市场的欲望,不论输赢都可以继续砸钱。第三批就是不理智的stampede,一拥而上,不想被踩死就要跑在最前面。
常见错误1:包罗万象的目标
有远大的目标是好事,但不是做事的方法。当问到“我们要做的游戏是什么”,如果回答如“我们的游戏将包含游戏A的所有功能,还有游戏B里的新花样,并且还改进了C系统,增加了独一无二的D系统,还有……”,那么这个项目就有这种危险了。如果一个东西什么都是,那么它就什么都不是。在设计如此庞大的体系前,最好先研究一下:
- 项目的预算有多少
- 能允许的最长开发时间是多少
- 人员数量和经验,以及对复杂系统的控制能力
- 目标用户群是什么样的人,他们喜欢玩哪些东西
- 竞争对手有哪些,他们的产品的特点
尤其对资金有限的创业公司来说,预算和开发周期是主要制约因素,必须以尽量小的代价去获取尽量大的成果,盲目开始项目只会让后期进入进退两难的境地。
常见错误2:显示引擎就是用来显示场景
经常能看到有些客户端的招聘要求里只有对Direct3D和显示特效的强调。也就是说,很多人只看到了3D引擎、在3D引擎里又只看到了模型和特效。但它们只是一小部分,而且并不是最有技术含量的部分。因为3D技术已经发展了很多年,尤其是硬件发展速度快,硬件厂商巴不得软件开发人员用上他们提供的所有先进技术,所有的技术都是开放的,都有详细的文档和样例。到今天已经是几乎每个人都自己写一套3D引擎的地步,开源的引擎都已经一抓一大把了。
但这并不是说每个3D引擎都一样,相反它们有很大的差别,一个好的引擎是有很多重要而有技术含量的功能的,而一般个人做的引擎都很简单,功能甚少,但它仍然可以叫引擎,可以绘制模型和一些特效。需要什么样的引擎由游戏本身的需求决定,也可能很简单的就够了,也可能要功能相当完整的。这里给出个比较完整的显示引擎功能的单子:
- 图元绘制
- 模型绘制,最好支持多种模型格式
- 模型预览工具
- 给3DSMax、Maya等的模型导出插件
- 半透明对象的排序
- 动画(硬动画、顶点动画、骨骼动画)
- 贴片功能
- Billboard支持
- Lightmap贴图
- 至少一种绘制影子的技术,如Shadow Volume, Shadow Map或者简单的投影一个黑圈
- 至少一种绘制天空的技术,如SphereMap、CubeMap
- 资源滚动装载(在显示资源很多时很重要)
- 粒子系统,最好是可由脚本编辑的,这样就不再需要程序员干预制作过程
- 对Shader支持和足够的调试功能
- Unicode的文字绘制
- Scene Graph管理,QuadTree、OctTree或者BSP等
- 大场景会用到LOD的功能
- 图层支持
- GUI系统
- 资源文件打包支持,最好支持ZIP格式
- 性能分析支持,至少包括FPS、每帧三角面数、每帧DrawPrimitive的数量
- 室外游戏会需要Terrain系统的支持
- 镜头特效,如光晕、震动等
- 文档,包括针对使用引擎的程序员和使用相关工具的美工人员的
可以发现,一个比较完整的3D引擎是个庞大的系统,它的整体架构的好坏就变得很重要。细心的人会注意到这里没怎么提到特效,也就是很多人最关注的问题。事实上,大部分的特效制作源于美工,而程序提供一个基础的支持,如果等着程序员写出每个特效,那就只能指望延长工期了。
常见错误3:客户端就是显示引擎
显示引擎只是个基础层,它不是业务层,而业务层才是真正的客户端。好比你有了锤子和钉子,你只是有了工具,钉钉子才是你要做的事情。客户端要做的事情如:
- 处理网络的数据
- 声音引擎
- 维护、预测游戏世界的一个窗口的状态,并聪明地进行图像声音上的表现
- 输入处理
- GUI系统的交互,想尽各种办法改进用户体验
- 游戏编辑、调试工具
- 安装、在线更新工具
这里很可能需要把一部分定制的工作交给制作人员,比如GUI界面,因为他们经常需要调整改善设计,因此,设计可定制的GUI系统会增加一些难度。如果3D引擎里已经支持则只需要再提供一些游戏逻辑的接口,否则就要费些心,在这里提供一套配置方案。
常见错误4:直接向最终目标努力
网络游戏是个大工程,不是几个月就能完成的。早期的设计不可能是完美的。如果直接向最终目标努力,那么可能到后期游戏才运行起来,才会发现问题,但这时已经太晚了,更不用说长时间的看不到效果的工作会让士气低落。正确的方法是尽量早的让游戏运转起来,哪怕只能发几条Hello消息,然后再向里面加入更多的功能。不要等半年之后底层系统完成之后才开始搭建游戏,这时很容易会因发现问题或者需求变化不得不修改底层,如此反复,拖累甚久。