Flash网络游戏开发入门经验共享 大约1年前(07年3月),有了想使用Flash做网页游戏的冲动。于是研究了AS2,经过了解,感觉AS2做网页游戏还是有不少欠缺的。这时又得知了AS3,如获至宝。对于有Java开发经验的程序员,尤其是开发过Java客户端的程序员,AS3真是太合适做游戏开发了。 后来公司也上了Flash MMORPG的项目,于是就开始学习AS3的语法和库,学习Flex工具。有了Java的经验,这些就很快了。 作为Flash网页游戏,不单单是炫酷效果的展示,用户的交互和逻辑也很多,因此好的游戏一定离不开AS3代码的。 磨刀不误砍柴工,我建议大家在真的动手开发项目之前,把该看的文档都看一遍,顺便写一些测试代码加深理解。建议的文档和理由如下: 《Adobe Flex Help》。这个就是Flex自带的帮助了,看了这个,就知道如何使用AS3来创建,编写,编译,调试,发布应用程序。使用AS3,哪些东西能做,哪些东西不能做;哪些东西可以直接用现成的,哪些东西需要自己来开发。有些人习惯遇到文字再查帮助,或者GOOGLE,或者到论坛提问。其实提问也是有学问的,你能把问题描述的越准确,就能越快的得到准确的答案。 《ActionScript 3.0 Cookbook》和《Essential ActionScript 3.0》,AS3的基本语法,常用功能,一些作者的心得。看了这些,很多问题就可以不求人了。看书的时候,那些立刻需要使用的,最好记下来;那些暂时用不到的,知道用的时候去哪里找答案就可以了。 下面具体说说以我认为开发Flash网络游戏需要掌握的技术吧。 1.显示 一个游戏离不开显示,AS3已经为开发者提供了一个比较完整的2D显示引擎了。学习这个部分,学习显示列表,学习DisplayObject和DisplayObjectContainer的区别,学习Shape, Sprite, MovieClip, Bitmap这些基本可显示对象的区别。 2.鼠标输入 交互就离不开用户输入的处理,鼠标是游戏中最常用的输入设备。需要知道只有继承自InteractiveObject的对象才能接收鼠标消息。还要学习如何使用鼠标拖拽,如何判定鼠标消息产生的目标,如何启用,禁用鼠标消息。鼠标坐标的全局和局部的转换。 3.键盘输入 键盘除了标准UI组件内部会用到,游戏的快捷键等功能也需要用到。 4.位图 作为游戏开发,可能不是所有的美术素材都是在开发阶段就固定的,或多或少需要在游戏过程中对图形进行一些变换处理。因此需要熟练掌握Bitmap和BitmapData对象。 5.层 作为MMORPG游戏,不同可视对象之间是有层次关系的。不同层的关系是固定的,比如地面层,人物层,UI层。同一层上的物体重叠时,需要通过修改在显示列表中的相对位置来调整上下关系。 6.UI组件 按钮,输入框,文本框,下拉框,列表,表格。这些在游戏中都少不了。为了游戏画面的美观和风格一致,通常都需要修改标准组件的皮肤,才能应用到游戏中。 7.资源加载 大家都知道,传统客户端MMORPG游戏,动辄几百M上G的尺寸,大部分都是媒体资源,我们不可能把这些资源都打到一个SWF文件中,因此需要根据资源的重要程度来决定加载策略。最常用最基本的,程序启动时加载;其他的,可以在游戏过程中动态加载。 8.事件机制 作为新人,或多或少都会用到addEventListener方法。作为大型系统开发者,一定要知道这个方法背后的IEventDispatcher接口和EventDipatcher类。使用事件机制进行开发,一方面为了降低代码之间的耦合,另外也是方便了多人协作开发。 9.远程通讯 作为MMORPG的通讯方案,需要考虑效率和安全性。由于服务器端我们很熟悉Java的Socket开发,而且看到了AS3的Socket类,于是毫不犹豫的选择了使用私有协议的通讯方式。作为MMORPG,基于HTTP的协议效率肯定比直接基于TCP的二进制协议低。另外,基于HTTP方式,不太适用于服务器向客户端推消息的情景。AS3的其它通讯方式我了解的不太清楚,不知道是否有在灵活性,安全性,性能方面超越Socket方案的。 10.性能优化 作为商业游戏,需要考虑到玩家环境的千差万别,因此系统的很多效果都需要有参数可以控制,使得程序能流畅的运行于玩家的机器上。作为Flash网游,需要考虑客户端的内存占用和CPU使用,需要考虑服务器的流量和客户端到服务器的带宽。 11.多线程 首先,Flash没有多线程,是一个单线程,如果有时候需要实现类似开一个线程进行耗时的复杂计算时,可以将这个计算封装成一个类,提供一个step方法,每掉用一次step,执行若干步计算,手工为代码分配时间片。用这种方法来模拟多线程。 12.高级知识(js/jsfl/swf格式/加扰/虚拟机运行机制) 作为一款产品,在开发过程中还有很多细节需要考虑。 比如使用ExternalInterface与JS通讯。Web游戏,离不开网页的,偶尔还是会与网页有些交互的。 使用JSFL批量生成或者处理Fla项目文件。游戏中大量的资源的格式是类似的,如果完全由人工,需要大量重复劳动。幸好Flash提供了JSFL的扩展,帮我们节约了大量的人工。 对SWF格式的理解。有些工作,由于JSFL的可编程性比较差,无法完美实现,我们还编写程序直接对SWF文件进行操作。曾经有一个需求,需要四个人花一周时间才能搞定,而且还很容易出错,后来写了JSFL脚本,外加编程直接处理SWF,每次进行类似的工作,只需要一个人几分钟人工,程序跑1个小时就搞定了。 商业产品发布时,还是要代码加扰的。现在反编译先锋Sothink4/ASV6已经问世,但是AS3加扰的工作还远远落后于反编译的步伐。我们这些Flash开发人员很着急呀。 13.算法 算法对于游戏开发还是很有用的。有时候是效率的提升,有时可能是01的区别。
就简单说这么多了,真要展开了讲,能写一本书了。这里只是给大家说说个人走过的路,不一定全对,只是希望帮助大家少走一些弯路。 |
分享到:
相关推荐
Flash网络游戏开发入门经验共享.pdf
Flash网络游戏开发入门经验共享,仔细看哦
关于Flash webGame 开发的入门经验,希望对需要的朋友有帮助! 如果有其他问题,可以直接找我,QQ779109006!
华清远见嵌入式linux应用程序开发技术详解(内部资料) 第1章 Linux快速入门 1.1 嵌入式Linux基础 ... 12.2 Qt/Embedded开发入门 12.3 实验内容——使用Qt编写“Hello,World”程序 本章小结
在学习fms3和有一点flash cs3和as3.0的经验,任何人都可以快速进入。你将学习怎么样安装FMS3,用Apache web 服务器一起组织你的开发环境,在进入为什么和怎么样前,使用控制管理器: 用H.26和VP6格式录制和播放流...
----------VC应用开发 [Visual.C..编程技巧精选500例]源代码. 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件...
第1章 Flex企业应用开发入门 1.1 B/S企业应用开发者的噩梦 1.2 噩梦结束,新时代来临 1.3 Flex概述 1.4 Flash Player的工作模型 1.4.1 Flash Player的帧执行模型 1.4.2 Flash Player渲染模型 ...
12.2 Qt/Embedded开发入门 12.2.1 Qt/Embedded介绍 12.2.2 Qt/Embedded信号和插槽机制 12.2.3 搭建Qt/Embedded开发环境 12.2.4 Qt/Embedded窗口部件 12.2.5 Qt/Embedded图形界面编程 12.2.6 Qt/Embedded对话框设计 ...
第1章 Flex企业应用开发入门 1.1 B/S企业应用开发者的噩梦 1.2 噩梦结束,新时代来临 1.3 Flex概述 1.4 Flash Player的工作模型 1.4.1 Flash Player的帧执行模型 1.4.2 Flash Player渲染模型 ...
12.2 Qt/Embedded开发入门 402 12.2.1 Qt/Embedded介绍 402 12.2.2 Qt/Embedded信号和插槽机制 405 12.2.3 搭建Qt/Embedded开发环境 409 12.2.4 Qt/Embedded窗口部件 410 12.2.5 Qt/Embedded图形...
第9篇FlashAIR入门 第28章创建与部署AIR应用 584 28.1AdobeAIR运行时安装与配置 584 28.2使用FlashCS3IDE创建和部署AIR应用 585 28.2.1安装FlashCS3IDEupdate9.0.3 585 28.2.2创建和部署AIR应用 585 28.3使用Flex...
该文介绍了基于开源框架OpenMeetings的网络视频会议系统的环境介绍以及总体设计 该系统支持音频视频能共享每个 与会者的桌面 它还包含一个白板通过白板可以导入各种格式的图片并进行演示 系统架构主要是服务器端...
ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充) ASP.NET2.0中themes、Skins轻松实现网站换肤! ASP.NET 2.0 中的代码隐藏和编译 ASP.NET 2.0 Language Swithcer and Theme Swicher 多语言转换和多样式主题...
在过去的14年中,我一直是一名Web开发人员,在处理IE与Netscape的战争, 布局和Flash网站之后,我可以说我们现在生活在Web开发的最佳时刻。 Web组件很棒,React使它变得更好。 React鼓励您创建非常小的纯组件。 ...
FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可聊天+传文件) 该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...