`

读程序员网游专题云风的文章有感

阅读更多

本文作者:sodme
本文出处:
http://blog.csdn.net/sodme
如有转载,请标明如上信息,以示尊重!!

 

  1.勇于承认失败
  国内的游戏厂商,让人觉得能有大家风范的少之又少,炒作、随意夸大游戏品质,好象不吹牛就没人知道他游戏作得烂似的。由于网游市场渐显的各种风险增加,资本市场从2004年底开始,对网游的投入渐趋理性化。在这样一个群雄逐鹿的时代,唯有靠品质才能最终取胜,小的游戏厂商会逐渐被市场淘汰或边缘化。未来可以在市场上存活的,将是为数不多的大游戏厂家。值得说明的,这里的“大厂家”并不是一定就是指现在的某些看起来很大的厂家。
  在游戏业界广泛充斥着浮躁的大氛围下,智冠和网易给我留下了难得的好印象。王俊伯在RO的代理权易手给盛大后,公开承认智冠的RO运营是失败的。而网易的云风,在05年6期的程序员杂志的网游专题文章中,不仅承认大话I是失败的,更是总结了若干失败的教训和经验,这些东西可以帮助多少人少走弯路呀!网易的作风,给外界的感觉,向来是踏实、务实的。在东西没出来之前,他们从来不会怎么高调作什么所谓的花边宣传,这与国内很多游戏厂商的作法大相痉庭。大话系列的游戏品质相信玩过的自有评说。
  承认失败,是需要勇气的,同样也是需要相当自信的。因为他们相信自己将来可以作得更好,所以才会勇敢地承认自己过去作得不好。不管是智冠,还是网易,我想,没有人可以否认他们在国内玩家心中的份量。

  2.结对编程
  结对编程,一个曾经非常时髦的话题,这个概念刚提出来时,我还在一个名不见经传的“教授型”网络教育软件公司。当时,我们的项目负责人也一再提出结对编程的想法,但是,项目组的成员对执行它却丝毫没有兴趣。是的!结对编程的前提是:参与结对编程的两个人,在技术水平上我认为一定要是水平相差不大的人,但也不能水平相同。你跟一个连“面向对象”都还没有弄清楚是什么的人说什么结对编程,那绝对是在扯蛋!技术水平相差太大,是很容易造成歧义的,水平太低的人往往无法正常理解水平高的人的设计思想,除非在结对编程时指定谁是说话算话的老大,就是说当出现意见相左时到底由谁说了算!有人说,应该民主讨论决定谁说了算。我要说的是,这种民主,在一定的范围内是有效的,但越过了范围,当你该拿决断时就一定要拍板决定,不能给项目成员以犹豫不决的印象,否则别人的工作作起来也是心虚的,因为他们不知道自己现在作的东西,到了明天或者后天是否就会被推翻而不得不重写。对于水平相差不大的人,我觉得结对编程是有益的,我之所以这样说,绝不是因为自己多看了几本书就在这里瞎忽悠,因为我曾经跟我过去的同事这样作过,不管是思维的广度还是深度,都要比一个人写的代码更漂亮,也更安全。坐在旁边看的那个人,往往可以指出你现在正在写的这段代码的问题所在。除此之外,结对编程还是对工作效率的有效约束,两个人一起工作时,精力必定是相对集中的,不会出现三心二意或跑神的情况。

  3.阶段性的测试和验收
  在多人参与的项目中,阶段性的测试和验收工作是必须要有的。当然,我们的设计总是随着开发的进程而不断调整的,那种一次设计之后再不改动的完美方案在现实中是几乎不存在的。项目组的成员,在阶段性的工作完成之后,应该由项目负责人召开专门的阶段性成果验收会议或演示,由设计者提供相关的设计文档、演示代码等。而参与验收的人,特别是以后可能要用到这一部分功能的人员,要详细询问、了解它的接口使用方式,设想你在使用这个接口时的可能情况以及可能出现的问题。把后期可能出现的因修改延期风险尽可能提到前面来。

  4.策划内容与程序实现的配合
  游戏的程序人员和策划人员,在很多公司里是“互相鄙视”的。程序鄙视策划整天异想天开,不顾技术实现难度,随意增加、修改变态方案;而策划人员则鄙视程序人员甚至连游戏都不会打,还在那写游戏程序,他们鄙视程序甚至连NPC的确切含义都不知道。而我要说的是,首先,对于程序人员,不管你是作服务器的,作客户端的,还是作数据库的,既然你选择了作游戏,你就得去努力多打一些好游戏。别跟我说实际上你不喜欢游戏,作游戏只是为了混口饭吃,OK!混饭吃可以有很多方式,请不要拿玩家的心情开玩笑。一个游戏公司想成名很难,可是,如果想毁掉则非常容易,他们只要出一两款烂游戏就足矣!而对于策划人员,我要说的是,你们的能想出那些变态方案并不是你们的错,并且我还鼓励你们尽可能地变态,但是,在作案子的同时,我也建议你们尽可能地提高自己的知识量,扩大自己的知识视野,努力多学习一点有关游戏程序方面的知识,我不是让你们学着写程序,但你们可以多与程序沟通,多了解程序的原理。一个方案提出来时,你要考虑到客户端的表现难度以及服务器方面的数据包广播量,当然,限于自己的知识层次,你们可能无法确切知道这些方面的答案,那么,剩下的就是唯一的一条路:多沟通!

  5.项目管理者的角色定位
  通常的项目管理者,会有两种类型:监工型和实干型。前者是只说话,不作具体的编码、设计;而后者,不光是“说话”,还要作具体的编码、设计。从我目前接触到的项目组来看,两者都有,但我更欣赏后者。而作为投资商,我则建议他们选择前者,前提是:投资商有足够的资金可以烧!欣赏后者的原因,是因为程序员广泛比较崇拜技术牛人,他们总希望自己的老大是一个在技术上非常牛的人,这样他们就会觉得自己有一个靠山,有问题时心里也会比较有底,因为他们知道老大可以给他们一些好的建议。而选择前者,是因为监工型的项目管理者,往往可以在投资商和开发团队之间站在一个相对客观的角度来对项目进行进度跟踪和控制,他们明确知道投资商的项目预期,也可以明确知道自己想要的是一个怎么样的开发团队,团队成员出现问题他可以果断地进行替换。

  6.抽象的层次
  表现层和逻辑层的分开,是一个再通俗不过的道理。这一点,在游戏客户端上表现是最为明显的。界面层的代码,不要与逻辑层的代码直接混为一谈。说过最简单的道理:两个EDIT控件,一个加法逻辑。在实现加法逻辑时,有两种方法。一种是把EDIT的值直接转换后拿来直接作加法,另一种是首先作一个加法函数,然后将EDIT的值转成数值再调用这个加法函数。这是再简单不过的界面与逻辑层的分离方式了,可惜的是,很多的懒人却没有这样作,又或者,他们尚且还没有意识到自己为什么要象第二种方法那样去作?

  7.测试自动化的实现
  我从04年4月左右开始作一个休闲游戏,今年又开始作MMORPG。在休闲游戏里,我实现了游戏机器人,就是自己写了个游戏外挂,可以让机器人自己去打游戏。游戏机器人,对于游戏的自动化测试是非常重要的,甚至,我认为是必须的。大量用户的压力测试以及大量游戏逻辑的BUG测试,都需要有一个象游戏机器人的程序自动为我们完成。在云风的文章里,云风为我们提供了一种思路:录制网络数据包行为。这是一个很好的想法,我很赞成。但我想说的是,要作游戏机器人,首先对你的程序设计要有一定的要求,即:你的游戏逻辑设计,不管是服务器端还是客户端都要尽可能地把功能模块化,接口化。这种模块化的粒度越小越好!当然,游戏机器人的实现,更多的,还是依赖于客户端的设计。只要客户端能把每个游戏功能都尽可能地以小粒度加以实现,那种游戏机器人实现起来其实相当容易。一切,只有一个要求:把游戏功能尽可能小的粒度化。

  8.最重要的一点,把游戏首先当作一下正常的“软件”来对待
  我们经常抱怨国内的游戏是多么多么地烂,其实,你只要对他们的开发团队和开发方式稍微了解一下应该就完全不会大惊小怪的了。有相当多的公司,屹今为止,尚没有把游戏当作一个正常的“软件开发”来对待,在项目的管理上,在人员的组织和任用上,都带有相当程度的随意性。所谓的项目延期,品质低劣,BUG频出,归根结底是人的问题!先不要把目标放那么远,要想作出一个好的游戏,请先把游戏当作一个再正常不过的软件项目来开发,来规范,来控制!

 

分享到:
评论

相关推荐

    云风的 BLOG- 采访 Lua 发明人的一篇文章

    《云风的 BLOG- 采访 Lua 发明人的一篇文章》是关于编程语言 Lua 的深度探讨,这篇博客文章详尽地记录了云风对 Lua 的发明者之一的访谈过程,揭示了 Lua 的设计理念和背后的故事。Lua 是一种轻量级、高效、可扩展的...

    《那些日子》- 云风

    通过这篇文章,我们可以了解云风的编程感悟和他在游戏开发过程中的经验。 云风认为,记忆是非常重要的,他选择性地记忆,只记忆美好的回忆,并把不快的回忆忘却。云风曾经写过电子日记,并加密,然后删除加密的文件...

    云风 游戏之旅-我的编程感悟

    虽然给出的部分内容并未包含实际的文字内容,但从标题“云风 游戏之旅-我的编程感悟”以及描述“游戏开发大神云风的经典著作 《游戏之旅-我的编程感悟》”中可以推测出书中可能涉及的关键知识点。 ### 关键知识点...

    lua源码鉴赏云风

    Lua是一种轻量级、高效、可嵌入式的脚本语言,广泛应用于游戏开发、系统管理、网络编程等多个领域。其源码结构清晰,易于阅读,是学习开源软件设计的良好教材。本书通过对Lua源码的分析,使读者能够了解到Lua的核心...

    云风pbc 库 示例

    云风PBC库是一个针对Protocol Buffers(protobuf)编解码的C语言实现,由知名程序员“云风”开发。Protocol Buffers是Google推出的一种数据序列化协议,它允许开发者定义数据结构,然后生成能够轻松地在各种数据流...

    云风《风魂2D游戏引擎》

    云风的风魂引擎源代码。VS2010+WIN7编译通过

    OSTC开源技术大会-云风-基于Lua开发网络游戏

    云风作为CTO在OSTC开源技术大会上的演讲主题是“基于Lua开发网络游戏”。Lua作为一种轻量级的脚本语言,在游戏开发领域有着广泛的应用,特别是在网络游戏开发中。云风通过对Lua语言特点的介绍以及他所参与开发的开源...

    云风-lua源码欣赏-lua-5.21

    《云风-lua源码欣赏-lua-5.21》是一本专注于解析Lua 5.2.1版本源码的书籍。作者采用非线性写作方式,将各个章节独立完成,最后进行整体整合。书中的内容涵盖了Lua的多个核心方面,包括源文件划分、代码风格、虚拟机...

    lua 源码鉴赏 readinglua 云风.zip

    《lua 源码鉴赏 readinglua 云风》是由知名游戏界人物云风创作的一份深入解析 Lua 脚本语言源码的文档。在本文档中,云风以其独特的视角和深入的理解,带领读者一同探索 Lua 的内部机制,揭示了这个小巧而强大的语言...

    云风的Ejoy2D-Engine

    Ejoy2D是由著名游戏开发者云风开发的一款2D游戏引擎,它专为高效、轻量级的游戏开发设计。云风在游戏业界有着丰富的经验,他的作品以其高性能和易用性而闻名。Ejoy2D引擎是他在多年游戏开发实践中总结出的一套工具集...

    云风伙伴算法代码

    这个算法我读初中时经常写。因为初一那个时候参加信息学奥赛时用的 basic 不支持局部变量,全部变量都是全局的,很难实现递归。所以早期我都不用递归遍历二叉树的,感觉写起来好麻烦。 不过循环回溯遍历树应该是比...

    云风:大世界网络游戏服务器的构架deepcold.ppt

    【云风大世界网络游戏服务器构架】是针对大型在线游戏的一种高效、稳定的设计方案,旨在解决高并发、大规模用户互动的挑战。以下是该构架的关键知识点: 1. **游戏引擎**:采用FreeBSD作为服务器基础操作系统,提供...

    游戏之旅-我的编程感悟云风

    游戏之旅-我的编程感悟,云风大神的编程感悟,不知道云风是谁吗???

    云风WebShell管理器.rar

    【云风WebShell管理器】是一款专为网络安全专业人士设计的工具,主要用于管理和控制WebShell,即在网站服务器上植入的后门程序。WebShell通常是在非法入侵或安全测试时使用,以便远程操作服务器,执行各种命令,获取...

    云风的大世界架构,介绍基础的大型网游的服务端架构。

    “云风的大世界架构”是一篇由网易开发经理云风撰写的关于大型网络游戏服务端架构的文章。该文章深入介绍了如何构建一个高效、稳定且可扩展的游戏服务端体系,特别是针对那些拥有广阔虚拟世界的大型多人在线游戏...

    云风最新的2D引擎

    在当今的数字媒体领域,2D游戏引擎扮演着至关重要的角色,而“云风最新的2D引擎”正是这样一款备受瞩目的技术成果。它以其高效、易用和强大的特性,为开发者提供了全新的创作平台。本文将深入探讨这款引擎的核心技术...

    游戏之旅——我的编程感悟

    本书的作者云风,在中国游戏程序界享有盛名,是网易多款成功网络游戏的主力程序员之一。云风将自己十余年的游戏编程经验,包括面对不同时代的技术挑战、与内存空间和显卡的斗争、在网游时代与网速和外挂的斗争等,...

    我的编程感悟(附:云风写的风魂++2D引擎源码)

    我的编程感悟(附:云风写的风魂++2D引擎源码),很实在,很有用的文章

    云风写的垃圾回收库

    总的来说,云风的垃圾回收库及其源码学习文档是一份宝贵的教育资源,它可以帮助程序员掌握内存管理的高级技巧,提高程序的健壮性,并减少因内存问题导致的程序崩溃。对于那些希望在C语言环境下实践自动内存管理的...

Global site tag (gtag.js) - Google Analytics