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

    \

\

相关内容

\

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

\

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

盛大游戏黄炎中——\悍将传世\开发经验谈相关推荐

  1. 【转发】思华SDN技术在盛大游戏G云2.0中的应用

    原文地址:https://www.csdn.net/article/a/2018-03-21/15943570 没办法转发收藏,只好采取这方法 摘要:在当今云计算.人工智能.大数据平台等一系列颠覆性的 ...

  2. phpcmsV9视频模块开发——盛大游戏通行证注册与密码找回

    phpcmsV9视频模块开发--盛大游戏通行证注册与密码找回 phpcmsV9视频模块,使用的是盛大旗下的K6[酷6]视频开发的,所以需要注册绑定b盛大通行证. 当然也可以自定义开发,使用腾讯.优酷等 ...

  3. 手机射击游戏中弹幕的开发

    射击游戏中弹幕的开发 http://blog.vckbase.com/knight/archive/2005/03/29/4174.html 作者:牛阿牛      2005-02-28 nhf_20 ...

  4. 上课偷懒全靠它,VS code中搭建Java开发环境+小霸王游戏环境—颤抖吧,德玛西亚!!

    上课偷懒全靠它,VS code中搭建Java开发环境+小霸王游戏环境-颤抖吧,德玛西亚!!! Visual Studio Code 下载安装 搭建小霸王游戏环境 VS code 中搭建 JAVA 开发 ...

  5. 盛大游戏杯第十五届上海大学程序设计联赛暨上海金马五校赛

    编程1小时,提交4小时 做这种比赛一定要选一个好OJ啊 黑白图像直方图 发布时间: 2017年7月8日 21:00   最后更新: 2017年7月8日 22:38   时间限制: 1000ms   内 ...

  6. 盛大游戏技术总监徐峥:Unity引擎使用的三种方式

    在5月13日Unite 2017 案例分享专场上,盛大游戏技术总监徐峥分享了使用Unity引擎的三种方式,以下为详细内容: 大家好,我先简单介绍一下我自己,我是盛大游戏的技术总监徐峥.我今天想分享的主 ...

  7. 盛大游戏李阳:龙之谷服务器设计

    原文链接:http://www.gameres.com/779278.html 9月23日,首届"梦想·匠心"腾讯游戏开发者大会于深圳举行,在技术分论坛上,盛大游戏<龙之谷& ...

  8. 一个游戏是如何被设计和开发出来的(怎样开发一款游戏)

    本专栏是着重于讨论"开发一款游戏需要怎样的能力",以及"如何学习开发游戏所需的所有技能".在开始讨论我们的两个主题之前,我认为非常有必要让初学者了解一下:一个游 ...

  9. 思华科技助力盛大游戏构建全能型混合游戏云

    - 盛大游戏与时代共舞 - ▼ 提及游戏,你是否还记得当年省下早餐钱去玩"传奇世界"?是否还记得"泡泡堂"地图中好友逗趣时的狂轰乱炸?是否还记得"冒险 ...

最新文章

  1. KDD 2017奖项全公布,华人成最大赢家
  2. 屏蔽微软的SignalR
  3. wamp php http 1.0500,HTTP 错误 500.0 - Internal Server Error C:\php-5.3.5\php.exe - FastCGI 进程意外退出...
  4. 吴恩达机器学习Ex2
  5. 白话Elasticsearch13-深度探秘搜索技术之基于multi_match+most fields策略进行multi-field搜索
  6. SAP Cloud Platform上的WebIDE fullstack在哪里打开
  7. 好饭不怕晚,扒一下 Redis 的配置文件
  8. 《大数据》2021年第2期目次摘要
  9. 【转】Python基础-字符串
  10. paip.SQL特殊字符转义字符处理
  11. java 凸包算法_JAVA凸包算法
  12. java模拟器配置_JAVA模拟器全功略!
  13. 16 Cesium—矢量数据
  14. UPD(user datagram protocol)
  15. aspcms用mysql_aspcms增加手机版支持与电脑公用一个后台
  16. f5服务器维护,F5-LTM(服务器的负载均衡)网络结构和功能
  17. 第十三周作业-必做3
  18. A. Sequence with Digits
  19. 真无线蓝牙耳机哪个延迟最低?低延迟蓝牙耳机推荐
  20. mysql score表_MySQL连表查询练习题

热门文章

  1. ASP+Access UTF-8 网页乱码问题解决办法
  2. 局域网steam联机_适合和基友联机一起玩的单机游戏(1)
  3. win7-64bit 安装Python3.5
  4. 使用Python绘制股票交易图形
  5. 数据结构和算法学习(3)- 递归、回溯
  6. 交通规划——基于TransCAD的线性参照和动态分段流程实现
  7. Android 增量更新实战
  8. feign 同一个服务编写多个远程调用实例 解决办法
  9. SVN创建分支 并且把分支代码合并到主干
  10. FPGA+雷达信号处理