NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2013-01-04
  • 本文字数:3516 字

    阅读完需:约 12 分钟

此文是针对游戏开发领域系列采访中的第三篇,我们会采访到目前游戏开发比较热门的技术和公司来对问题进行解答,问题主要涉及游戏简介、开发中 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 套衣服就可以了。这也是可以分享给大家的经验,以后美术上得悠着点用。

相关内容

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

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

2013-01-04 20:302546
用户头像

发布了 156 篇内容, 共 49.6 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

大咖说· 联蔚数科|如何做好一个业务中台?

大咖说

阿里云 业务中台 企业云服务

在VUE中使用vue-baidu-map获取经纬度和搜索地址

格斗家不爱在外太空沉思

Vue 百度地图 11月月更

决策树-分类树

烧灯续昼2002

机器学习 决策树 sklearn 11月月更

深入剖析nodejs中间件

coder2028

node.js

BNBDao三三复制公排dapp系统开发

开发微hkkf5566

如何构建并提高自己的核心竞争力?

老张

核心竞争力

一比一手写迷你版vue,彻底搞懂vue运行机制

hellocoder2029

JavaScript

怎么从容地拿捏时间?来自富兰克林的启示

无人之路

时间管理

JavaScript刷LeetCode拿offer-滑动窗口

Geek_07a724

JavaScript LeetCode

一文读懂Js中的this指向

hellocoder2029

JavaScript

云栖大会,一场边缘云计算的「超前瞻」之约

阿里云视频云

云栖大会 边缘云

使用Vmware创建Centos7虚拟机(安装和配置网络环境、xshell连接、防火墙、yum仓库、磁盘挂载、重启命令)

A-刘晨阳

Linux 运维 vmware 11月月更

零基础参加web前端培训学习怎么样

小谷哥

【云原生】内存数据库如何发挥内存优势

石臻臻的杂货铺

数据库 SPL 11月月更

北京大数据培训学习怎么选

小谷哥

一个非常常见的问题:var、let和const

肥晨

11月月更 js6 js基础

融云通信云服务,助力医疗招聘平台构建行业护城河

融云 RongCloud

通信 医疗 融云

深度理解NodeJS事件循环

coder2028

node.js

2022年在线招聘求职行业洞察

易观分析

招聘 在线

Echarts实现全国地图展示

格斗家不爱在外太空沉思

JavaScript eCharts 11月月更

JavaScript刷LeetCode拿offer-双指针技巧

Geek_07a724

JavaScript LeetCode

发布自己的第一个npm包

格斗家不爱在外太空沉思

npm nodejs 11月月更

webpack热更新原理(面试大概率会问)

Geek_02d948

webpack

SpringMVC介绍及创建

鸭鸭yyds

springmvc 11月日更 11月月更

深入理解Node.js的进程与子进程

coder2028

node.js

为什么vue3要选用proxy,好处是什么?

hellocoder2029

JavaScript

Vue基础知识整理【建议收藏】

何极光

Vue 基础

Linux常用基础命令(巨全)

A-刘晨阳

Linux 运维 11月月更 基础命令

大数据培训零基础应该注意什么

小谷哥

北京web前端学习哪个机构比较好

小谷哥

编程培训学习零基础应该怎么选择呢

小谷哥

盛大游戏黄炎中——"悍将传世"开发经验谈_C++_贾国清_InfoQ精选文章