盛大游戏黄炎中——"悍将传世"开发经验谈

此文是针对游戏开发领域系列采访中的第三篇,我们会采访到目前游戏开发比较热门的技术和公司来对问题进行解答,问题主要涉及游戏简介、开发中5件对的事情、5件可以改进的事情、美工设计以及开发经验分享等。话题主要涵盖开发、发布、平台、开发工具和创新工具等展开。本文是针对盛大游戏技术团队成员黄炎中的采访,以下是采访的具体内容:

InfoQ:请首先做下自我介绍?

黄炎中:我是黄炎中,从小立志做游戏。曾自主创业。2005年进入盛大,曾参与《疯狂赛车》,《英雄连》等项目研发。2008年开始负责页游开发。先后负责《纵横天下》,《传世群英传Web》版网页游戏的研发工作。目前工作重点在《悍将传世》项目。

InfoQ:盛大游戏的《悍将传世》在市面上很受欢迎,能否对产品理念做一下简单的介绍?

黄炎中:《悍将传世》是从2011年下半年开始做的项目。当时的ARPG游戏主要分两种,一种是强调PK的仿传奇类产品,这类游戏初步实现了PK玩法,但是画面相比端游有较大差距。还有一种是强调休闲玩法的ARPG游戏,画面比较精美,但是完全没有PK的感觉。所以通过市场调研,我们认为《悍将传世》这类可以同时满足两方面需求的页游应该会获得用户的认可。而Flash 11的推出,也为实现这一目标提供了底层技术保障。

InfoQ:在游戏的设计和开发过程中,请列举4件认为做的对的事情(4 “Rights”,请配以具体事例,分别说明)?

黄炎中:我分享几个重点在做的事情给大家吧。

  1. 在非常早的时候就开始评估Flash11,做各种技术储备。
    例如游戏开发比较关心的每秒Fps是否能够达到60以保证流畅性;以及在Fps为60的状态下,每秒能够绘制多少次多边形。包括使用了GPU加速,需要把贴图从内存传输到现存,这个过程中有多少开销,会不会卡等,都属于测试范围。

    在前期的时候,测试结果非常不理想,非常卡。一个是Fps上不去,或者半途中会突然出现卡顿的情况。这甚至让我们对Flash11平台产生了怀疑。经过团队深入研究后发现,虽然用户主动上传到GPU的内容渲染起来速度还是可以保证的。但是Flash会进行合成操作,也就是把原来非GPU的2D内容,和GPU渲染后的内容进行合成。其过程是先将2D内容进行拍照然后作为贴图传输到GPU里,再次合成渲染。这个过程造成了几乎50%以上的开销,其触发机制几乎是不可控的。

    如果用户的图片上传比较密集的话,最直接的结果就是直接卡个1、2秒。导致游戏无法进行。发现这个问题后,我们也找了很多解决方案,在内部机制无法改变的情况下,对游戏能够使用的资源以及加载策略进行了大幅删减和优化。这种情况才得以好转。当然Flash 11在后续的几个版本上对此进行了优化,现在的版本已经基本解决这些问题。也幸亏在早些时候就发现了这些问题,否则贸然使用Flash 11既是对项目不负责了。
     
  2. 保持和Adobe方面的紧密沟通。
    为了使用Flash 11,而且当时世面上基本没有可参照的产品,所以为了拿到第一手信息。保持和Adobe进行有效沟通是必须的。

    Adobe有一个非常专业的传教士团队。而负责游戏方面马鉴(@7Yue)和黄峻(@Peter)是我的经常联系的。他们非常资深,对Flash极其了解。甚至Flash里有一部分代码是7Yue编写的。我去年底告诉他们决定使用Flash 11开发项目。他们非常兴奋,之后我们几乎每2周都要电话会议一次。我把我们发现的问题,可以通过这个快速渠道直接反馈给Adobe,并且尽快加到他们的版本里去。而Adobe确认的修改项也会通过他们直接反馈给我。

    有一次我一口气和Adobe反应了几个亟待解决的问题,其中有一个就是对GPU支持不完整的问题。当时ATF格式只支持DXT1,这个格式是不能带Alpha通道的。随后,他们告诉我,很快就能支持DXT5了,这是种能够带Alpha通道的格式。果然在今年8月份发布的 Flash 11.4版本里就带上了这个功能。Peter后来说,原来他们早就有这个计划了,但是为了完整测试保证万无一失,所以直到8月份才对外公布。这也体现了Adobe作为IT界巨头,不但小心谨慎而且对游戏开发非常了解,让人非常放心。到现在为止,我们仍然保持着紧密沟通。这也为整个开发过程提供了保障。
     
  3. 谨慎使用新技术进行产品开发。
    Flash 11本身是一个网页中的插件,那么做过网页开发的同学都应该知道,兼容性是摆在每个Web开发者面前的问题,很有可能在不同的浏览器下面看到的内容是完全不一样的。虽然Flash本身已经屏蔽了很多这样的问题,但是数据显示直到2012上半年为止,全国仍然有20%的玩家无法使用GPU加速。各种原因都有,例如某些浏览器捆绑了Flash 10的版本,或者浏览器强制无法使用GPU加速,或者用户本机显卡过旧导致无法打开GPU加速。

    对于这种情况,一旦玩家无法使用GPU那么就无法正常进行游戏了。出于谨慎考虑,我们利用了以前客户端的经验,在资源流程上修改美术导图工具,原始图片在导出的最后一步分别导出成Flash 10的Png格式以及Flash 11的ATF格式。在程序上分成了Flash 10版本和Flash 11版本。在程序启动的时候检查是否能启动GPU加速,如果不行的话,直接使用Flash 10的渲染器和Png格式。事实上做这样改进虽然工作量几乎翻了一倍,但是挽留到不少用户。
     
  4. 使用Monical不断优化代码,增强游戏运行时的体验。
    Flash是在2007年加入了Avm2才能够实现大型项目开发。而到现在为止,Avm的性能一直为人诟病。但是你真要找到其性能低下的地方,还真不容易。除了要在代码上精心设计,而且需要不断在资源动画上精雕细琢。这是件非常花费时间的事情。

    在今年7月份,Adobe发布了全新的调试工具Monical能够以图形化的形式精确查看程序运行时的状态,实在是雪中送炭。在早期的测试版本里,最核心的功能,就是能够将Flash内部运行的几大块,AS代码,内存对象使用,Native代码,GC机制用颜色进行明确区分。最厉害的还能够在每一帧,对运行了多少代码进行精确评估排序。我们可以直接的定位那些调用次数较多,并且跑的比较慢的代码。在这种机制保证下,程序运行几乎是透明的。大大节省了我们找问题的时间。这个工具目前已经随着Adobe的GAMING Tools一起打包发布了,并且换了个更时髦的名字 Adobe Scott,强烈推荐大家使用。

InfoQ:请列举在开发过程中,您认为还值得改进或提升的3件事情?

黄炎中:Adobe要把Flash打造成互联网的游戏机,那么我认为以下几个事情是必须做的。

  1. 提升ActionScript的运行速度
    Flash和传统游戏相比,AS3的速度要比C++慢上几乎1000倍,这样的速度的运行速度已经严重影响了大型游戏登陆的可能性。目前已经有C++登陆Flash的解决方案,比如FLACC。这得以让一部分传统游戏开发者上Flash开发。但是我必须指出的是,目前Flash开发者还是希望AS能够运行的更快一些。
     
  2. GPU方面需要增加对失量图形的支持
    现在矢量图形的渲染,仍然是CPU完成的。特别大部分2D动画是使用FlashCS制作的SWF文件尤其需要这个特性。如果能够做到的话,那么不但能借助GPU大幅提高游戏流畅性,而且由于内容产生流程的完整,将对产业产生深远影响。我们期待这个功能的尽早实现。
     
  3. 投入更多资源,做好Flash的推广工作
    目前卡在使用Flash 11进行游戏开发的问题上,Flash的市场保有率仍然是头等大事。Flash一个新版本发布到市场覆盖率达到60%有大约8个月时间。而达到90%以上至少需要1年。其中还存在哪些浏览器捆绑FLASH老版本的情况出现。这些兼容性问题都会导致游戏运行异常。开发商必须花费更多精力去解决兼容性问题。所以希望Adobe尽可能保证Flash版本更新后的推送工作。
     
  4. 走过的弯路
    在最初期的时候,我们本来希望做一个版本,能够解决所有兼容性问题。但前面也说了,Flash 11的普及率没有我们想象中的那么高,大约比普通页游底10来个点。为此,项目组也承受了很大的压力。

    经过多次评估之后,我们不得不从头开始把美术导出流水线重新进行改造,一套专门导出Flash 11版本的,一套专门给Flash 10版本使用的。当用户打开游戏的时候自动检查版本号,并且使用对应的资源。

    转换成Flash 10版本后,所有东西都保存在内存中,无法使用显存的任何资源。而原来的内存是不够用的。这个转换工作花费了很长时间。美术制作规范几乎推翻重来,我们不得不把角色进行缩小,因为角色是最吃内存的,每个方向,每个动作,每一个画面,都是相乘的关系,人一多,内存使用直接上升。 所以必须进行调整,此外在策划玩法上也做了一定限制,比如某些战场地图,所有玩家的衣服都是和本行会的服装一致的。这样如果只有2个行会进行战斗的话,只要用男女各两套,一共4套衣服就可以了。这也是可以分享给大家的经验,以后美术上得悠着点用。

相关内容

访谈:人人游戏高级总监顾雷谈游戏设计与开发

谈谈哥们网的游戏开发理念

你可能感兴趣的:(盛大游戏黄炎中——"悍将传世"开发经验谈)