写点什么

基于 AS3 显示列表的 2D 游戏渲染优化

  • 2012-11-01
  • 本文字数:2153 字

    阅读完需:约 7 分钟

【编者按】《博文共赏》是 InfoQ 中文站新推出的一个专栏,精选来自国内外技术社区和个人博客上的技术文章,让更多的读者朋友受益,本栏目转载的内容都经过原作者授权。文章推荐可以发送邮件到 editors@cn.infoq.com。


9RIA 天地会小编:龚先生您好,这次您在西南游戏开发者大会上的演讲题目是如何快速开发 Flash 2D 横版游戏有关,为什么要单独讲 2D 横版呢?

龚书:现在页游来看,主流还是 2D,其中横版相对来说更受玩家亲睐,移动端也不例外,当然好游戏跟表现形式无关,3D 游戏也越来越多,抛开游戏内容,就表现形式而言,个人认为 2D 游戏还会是主流,既然是主流,作为开发者不论在工作中,还是在生活中都会面对如何做好 2D 游戏这个问题。出于这个考虑,我就选了这个题目。

9RIA 天地会小编:您有丰富的开发经验,在您看来 2D 横版游戏开发核心是什么呢?

龚书:2D 游戏,渲染是一块核心,首选要讲的是使用什么样的渲染模型,大家都知道的 flash 自身的显示列表,当然还有各种位图渲染引擎。选择什么样的引擎非常重要,重要到什么程度呢?我个人认为跟男入行,女嫁郎一样重要(笑)。其实真的就是这么重要,不同的渲染模型,开发者将会准备不同的技术去支撑与扩展。

我这次主要讲的如何就基于显示列表来开发 2D 游戏,很多开发者认为 FlashPlayer 显示列表机制过于“肥胖”导致渲染效率低下,于是各种位图引擎纷来沓至,其设计核心都如出一辙:用一张或者多张 Bitmap 拷贝其他显示资源的像素。实际上位图引擎有诸多缺陷和使用代价,例如:大面积的拷贝像素效率也会下降,有时图形变化,例如旋转、伸缩、变色还不得不使用 draw()、colorTransform() 等方法效率下降更快,没有鼠标事件,需要完善一套显示对象管理机制,其实 adobe 已经做了。还是让我们回过头来看看 adobe 精心设计的“显示列表”机制吧,其实他真的如你所知的那样好用,但是有着你可能不知道的高效!

所以主要会讲到如何优化你的显示列表以及如何混搭使用 BitmapData,在渲染效率上让开发者满意。

9RIA 天地会小编:请您根据在端游页游两个不同产品领域的经验,为开发者们分享一下从端游开发者过渡到页游开发,有哪些方面需要继承和改变?

龚书:端游整个开发流程和工具都是可以沿用的,更多的应该是开发的思路的转变。页游区别于端游的最大的地方就是快,发展快、开发快、用户进入快。市场机会稍纵即逝,因此在最短时间内开发出最适合市场的产品。

9RIA 天地会小编:对于开发 2D 游戏方面,能不能给开发者分享一下经验?

龚书:要开发 2D 游戏有许多东西要讲,比如不论是页游还是端游都非常重要的资源管理,不过这块经验我的朋友张真在去年成都的会议上与大家分享了,这次呢我会着重讲下 2D 游戏开发中其他必不可少的一些技巧吧,例如多图层以及多图层景深,Avatar,动画等机制建立,我想有了这些经验,开发者能够非常快速的开发效率让人满意的 2D 横版游戏。

可能朋友们会觉得这些东西都在做了,也都会做了,讲这个毫无价值,或许吧,但我认为做技术就是事无巨细。你的横版游戏是否能动态管理图层以及分配不同的景深,场景是一段代码还是一个机制?是否在渲染面积大、元素多时一样保证流畅?你的 Avatar 是否从 OOP 设计出发的?是否同样灵活?渲染是否高效?你的动画是否跟你的显示绑得死死的?还是可以动态的去指定?

当然,对于以上的经验,或许我个人也做得并不完美,不过拿出来跟大家探讨,相互学习进步才是目的。

9RIA 天地会小编:开发者或许更关心实战技巧,龚先生能否以自己的作品为例给大家介绍一下整个开发过程?

龚书:我最近的游戏项目是《忍影堂》,是一个类似弹弹堂的游戏,不过有许多创新点,这个游戏是国内首个动漫横版场景游戏,里面有像愤怒小鸟一样的二段技能而且实现了操作零延迟,非常丰富的 Avatar 等等,但最终这个游戏没能存活,我个人创业也因此失败,流云网络也在鲨鱼哥的《发钱狂》旗下,所以我很想跟广大开发者说,会技术跟做游戏还差好大一步呢,需要完善每个细节。

到时候大家看到的是一个业内的技术会议,我们还是谈技术,谈实战,对于实战过程,其实大家可能真的不想关心,经历过的都知道,非常残酷,三天小改一周大改,结合这些实际情况,我会认真的跟大家讲讲如果设计好自己的代码,做到最有勇气的去面对你的策划,不怕“乱来”,策划朋友别误解,没有你们的乱来就不会有打磨光亮的游戏。

9RIA 天地会小编:除了技术之外,龚先生有什么想对开发者说的呢?

龚书:我个人觉得,不论作为游戏开发者还是应用开发者,技术是个问题,也不是问题,矛盾在于你的项目立项取胜点是什么?是表现取胜?那么你可能还真得回头看看自己的技术。如果是内容取胜,或许你可以把技术问题暂时抛开,好好跟你的策划讨论讨论。

大家都说做技术苦,其实大部分原因可能是只看到了技术本身,很多事物只看本质都会枯燥无聊,就例如看书,看文字真的很无聊,但是当你认知到文字带来的信息会给自己增加阅历时,真的是一件很美妙的事情。所以我希望广大技术人员,出去走走看看,多与各行各业的人沟通,多些爱好,你接触的越多,你的技术就越可能改变世界。

要想现场听取龚书演讲并与他深度交流的朋友请参加西南游戏开发者大会,更多关于本次大会的讲师和精彩内容介绍,请关注:西南游戏开发者大会

查看原文:天地行讲师龚书专访——基于 AS3 显示列表的 2D 游戏渲染优化

2012-11-01 13:073256

评论

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

在线XML转CSV工具

入门小站

工具

架构实战营模块 2 作业

zlz

架构训练营模块二作业

以吻封笺

手写插入排序算法

实力程序员

程序员 算法 排序 实力

Linux之df命令

入门小站

Linux

Python OpenCV 图像开闭操作,图像处理取经之旅第 39 篇

梦想橡皮擦

7月日更

调研字节码插桩技术,用于互联网分布式系统监控设计和实现!

小傅哥

Java asm javaagent 字节码增强 系统监控

架构实战营 -- 模块二

小牧ah

架构实战营

模块二作业

秀聪

架构实战营

模块二作业 微信朋友圈高性能复杂度分析

君子意如何

「架构师训练营第 1 期」

Pandas高级教程之:window操作

程序那些事

Python 数据分析 pandas 程序那些事

模块一作业-架构训练营

零度

「架构师训练营第 1 期」

Vue进阶(四十三):Vuex之Mutations详解

No Silver Bullet

Vue 7月日更 mutations

秘乐魔方短视频系统开发简介

获客I3O6O643Z97

短视频挖矿

分析微信朋友圈的高性能复杂度

feitian

架构模块2 作业

柱林

Vue进阶(九十七):对象动态添加属性和值

No Silver Bullet

Vue set 7月日更

浪潮云洲走进包头 展示特色产业“触网”路径

工业互联网

架构实战营 - 模块 2 - 作业

Vincent

架构实战营

【架构实战营】模块二作业

Abner S.

架构实战营 #架构实战营

在线教育,百鬼夜行?

白洞计划

Netty浅析

CodeWithBuff

Java Netty 源码剖析 I/O

ACM金牌选手算法讲解《线性表》

编程熊

算法 LeetCode 线性表 数据结构与算法

大数据训练营一期0711作业

朱磊

模块二作业

king

模块2作业G20210698020270

哆啦A萌

微信朋友圈的高性能复杂度分析

tjudream

架构 高性能 朋友圈

架构实战营模块二作业

A-领悟 Lifetruth‖

#架构实战营

Rust从0到1-并发-状态共享

rust 并发 Concurrency 状态共享 Shared-State

【Flutter 专题】82 初识 Flutter Stream (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

WICC 2021即将召开 荔枝将揭秘高音质体验之关键技术

融云 RongCloud

基于AS3显示列表的2D游戏渲染优化_语言 & 开发_龚书_InfoQ精选文章