在这里把一款FLASH WEB
GAME的架构分为三部分:系统架构、前端架构、后端架构。“系统架构”主要是指根据一款游戏的特点以及公司的实际情况选择合适的技术实现方案,主要包括
美术方案,前端方案和后端方案;“前端架构”主要指FLASH前端的主程序以及模块划分;“后端架构”主要指即时通讯部分和数据库。这章先谈系统架构。
→谈到架构,我不得不说,那些所谓的完美架构,能够一次架构好,永远不用改的说法只能是传说,或者技术人员忽悠老板的说法,对于创业公司更是如此。创业公
司初创时期更多的时候需要在游泳中学会游泳,因为大家都没有经验,失败是最好的教科书。就算大家知道应该怎么做,很多时候条件也不允许。比如我们在一开始
就知道应该自己写socket服务器,可就是没socket的人才,于是不得不先使用FMS+PHP。公司一开始的美术更精通FLASH一些,而且我们计
划的是要做“企鹅”,于是我们选用矢量图。可后来随着公司产品定位的不断改变,我们的架构和解决方案也会不断调整,当达到一个临界点时,修改的代价已经超
过重新开发,我们就不得不对架构进行“重构”了!这时候聪明的老板应该支持程序员们的意见,充分调动他们的积极性尽快改完,全公司应全力配合,尽快度过难
关。而不明事理的老板肯定会每天抱怨程序员无能,搭出一个垃圾架构不能满足产品的持续快速发展,拖了产品和市场的后腿,给程序员造成很大的压力,积极性没
了不说,在长期经验积累之后本来可能是一次非常好的机会能做出一个相对完美的架构,满足日后很长一段时间的需求变更,结果因为老板过分催促和施压,又烙下
了许多隐患,而这些欠下的债,总有一天要还的,这一天来临之时,责任虽然可以完全由程序员承担,但整个公司都要为之付出代价!所以关键时刻程序员该坚持还
是要坚持自己的观点,要尽量说服老板,程序员的社交能力在这个时候就凸显作用了,你要明白你不但是在对自己负责,也是对公司负责!另外,真的很希望天下的
老板们都能明白一个道理:能够根据公司实际情况不断调整的程序员才是最可爱最辛苦的程序员,而不是那些什么都不管,上去就提一大堆要求,必须都满足他,他
才愿意做的程序员。
→就算时至今日,FLASH WEB GAME在国内发展差不多三年了,但我敢说FLASH WEB
GAME还是没有什么行业标准的技术解决方案,尤其是前端,大家都是自成一派。在这个时候,让我们再次搬出那句老话:不管黑猫白猫,抓住老鼠的就是好猫。
不过经过这几年的摸索,还是有一些规律可循的:
1,美术:如果游戏画面简单,色彩构成相对单一,场景内总体元件能控制在100个以下,则非常适合直接使用矢量图,画面各组成部分尽量拆分为能重用
的独立元件。这样虽然牺牲了客户端的CPU,但能因为重用最大化而大大减少美术的工作量,也方便他们日后应对需求变更,比如某些元件的尺寸变动。在画面简
单,元件又少的情况下,利用递归全元件位图缓存,拿少量内存还能换回大量CPU,找出这个平衡点,完全可以做出很好的用户体验。
可大部分时间,我们的游戏场景可能都非常炫,画面复杂,色彩鲜艳。使用矢量图的话,一方面不容易画出想要的效果和精细度,这时候使用矢量图反而增加
了美术的工作量和难度;另一方面,使用矢量图还有可能导致客户端CPU严重飙升,超出普通客户端电脑的承受范围。这时候我们应当用位图做游戏背景,重用性
不大的元件要尽量合并到背景位图里,减少位图总个数,一些简单的动画如果非要用FLASH做成矢量动画的话,也要尽量做成逐帧的,相信FLASH
IDE玩的转的美术同志们应该知道怎么把一个渐变动画瞬间转换成逐帧动画。逐帧动画虽然会导致SWF文件体积增大,但相对于换回来的客户端CPU来说还是
值得,这其实是牺牲了一些服务器带宽和用户等待时间,换回严重的客户端CPU超载。而如果你的动画非常复杂和精细,精细到只有AE等粒子特效软件才能表达
的话,建议还是直接从AE里导出位图序列,在FLASH里弄成逐帧动画,太过复杂的动画绝对不能用FLASH直接做,不但很难做出想要的效果,而且复杂矢
量图的SWF文件体积也会大大超过位图,有可能导致用户因为SWF文件加载时间过长,失去等待的耐心,这时候我们情愿牺牲美术的工作量和工作流程,换回想
要的效果,减小SWF文件体积。还有一点要提醒的,时间轴动画不可见时,程序一定要记得将其stop掉,不像程序动画,时间轴动画不可见时,FP内部其实
依旧在重绘,对CPU还是有影响的。
还有一种极端情况是场景元件超标,比如整个游戏内所有元素(包括各种MC、BTN、位图以及程序创建的displayObject,总量超过
500,这时候你会发现,画面静止还好,但只要游戏上鼠标随便一晃,或者有几个人物随便走一下路,CPU都会狂飙,就算这500个元件都是位图也无济于
事。其实这是FLASH的一个瓶颈所在,是目前所有FLASH大型项目都有可能碰到的问题,也是我觉得阻碍FLASH进一步发展的主要障碍之一。在一个元
件超多的背景图上进行任何的鼠标动作、动画、文本渲染,都会导致CPU严重飙升,甚至画面很卡。要解决这个问题,本质的也是唯一的方案就是减少元件数量,
要想尽一切办法降到200以下。而这需要美术、前端和策划通力合作才行,绝对不是前端程序员就能搞定的事。策划要从产品的角度上看能不能简化目前场景同一
时间出现的元素,美术要把能合并成一张图的元件在绘图软件中合并成一张位图,前端AS程序要把不需要响应鼠标事件的元件的mouseEnable和
mouseChildren都设置成false,一些能利用copyPixels合并的位图就合并成一张,比如可以平铺创建的房间地板和墙面,要
copyPixels成一张图,而不是new出好几百个元件。
其实元件超标的情况是大多数没有经验的团队很容易发生的问题,这时候前端程序员要起到领头羊的作用,给大家讲明白道理,用事实让大家信服,组织大家
一起把事情做的更好,而不是一味的在那里抱怨FP效率低。因为这时候你是团队唯一可以依靠的人,如果这个问题解决不了,虽然大家都有责任,但前端毫无疑问
是罪魁祸首!
极端情况下的极端解决方案:如果游戏策划的非常酷,一个子弹爆炸效果就需要几十个元件支撑,画面上同时又需要几十个坦克混战,这时候常规的解决方案
是根本达不到的,但不是说就一定无法做了,你可以利用强大的BitmapData类把每帧要显示的游戏画面完全计算好并且在内存中绘制,然后以一张图的方
式渲染给用户,这时候用户玩你的游戏仿佛就像在看逐帧的动画,此时FP占用的CPU大部分都是计算耗用的,而不是渲染耗用的。其实AS的执行效率远远高于
屏幕渲染,你把CPU的主要负荷转移给AS,反而能做更多更炫的事情。据我的初步研究,前段时间名噪一时的FLASH版3D雷神,还有现在很多国外效率高
的“有点假”的TD类和飞机类单机游戏都是这么做的。可这种模式适合用来做多人联机并且有大量交互界面的FLASH WEB
GAME么?我初步思考了一下,感觉是不可能的。首先,大量的交互界面意味着需要用鼠标点击,试想在一个逐帧动画中,每帧都要响应鼠标是什么概念?所以
UI部分首先排除了;然后是大量的即时数据交互,每当一个异步的请求得到响应,画面就需要做出相应的改变,这将对本来还可能比较工整的内部绘制算法制造非
常大的麻烦,难度太高!基本上也不可行;最后是很多FLASH WEB
GAME的画面重用性并不是很高,比如像我们游戏的每个场景都是美术专门画的,而不是用地图编辑器编辑的,这就意味着你无法完全用程序拼出一个场景来;综
上我觉得一个款FLASH WEB
GAME基本不可能完全使用copyPixels完成,最多是部分实现,比如我上面说的墙面和地板。除非你的游戏策划很NB,知道什么游戏能最大限度的利
用copyPixels,而这样的策划估计本身肯定也是个前端程序员。
2,前端:从系统架构的角度上讲,前端其实很简单。现在WEB
GAME主流的前端技术无非就是AS和JS。JS的前端地位其实比AS要老,很多人的JS经过这么长时间的磨练,功力深厚,做一个策略类甚至简单的
MMORPG都没问题。但现在用AS来做的话可能更简单,更容易做出更酷的效果和更好的用户体验。所以最近两三年,随着基于面向对象的AS3逐渐完善和普
及,FLASH WEB GAME似乎逐渐成了唯一的主流。
其实除了as和js外,还有很多前端技术可以供我们选择,比如shockwave,java,还有那传说中的flash
killer:silverlight和html5等等。每种技术都有其优劣势,比如shockwave在图形渲染方面比flash强了千百倍啊千百倍,
因为它可以完全调用显卡,我在网页上玩过一个基于shockwave的CS,流畅度和操作感完全不亚于桌面版的CS,还有国外的哈宝以及国内的娜娜米米都
是基于shockwave的。而Java和silverlight也都有强大的背景,HTML5最近也是来势汹汹。但不管怎么样,2010年,FLASH
仍以其广泛的覆盖率、酷炫的效果和逐渐成熟的开发社区,以最高的综合评分独领WEB GAME业界风骚。所以任何公司和团队,如果现在想做WEB
GAME的话,如果实际情况允许,FLASH还是最好的选择。
3,后端:后端不是我的强项,我就不多说了,我只根据我们公司的经验谈谈心得。我同意前后端编程有很大区别,但绝不同意前后端谁简单谁复杂之说。根
据我这几年的观察,我发现,前端偏重的是效果,是用户体验和细节处理,有时候可能还要涉及一些图形算法;而后端则偏重数据结构和数据处理,讲究的是性能、
安全和扩展性。前端工作量一般比后端大,而后端需要的工作经验比前端多,想依靠一个只掌握了理论知识的大学毕业生就支撑一个公司的后端架构是严重不靠谱
的!前端架构师必须是一个编程高手,十几、几十万行代码要在他的手里安排的井然有序,后端架构师则必须有过大型项目经验,并且项目同时在线人数达到过一定
规模。前端架构出现问题,会严重拖垮开发周期,而后端架构一旦出现问题,对公司将是致命性打击。所以在公司里宣传所谓前端重要还是后端重要的说法,是完全
错误的,任何一款好的产品,必将是策划、美术、前端、后端都达标的产品,缺失任何一块儿,都成功不了!不同部门之间的比较和较真儿没有任何正面影响!
至于后端的技术解决方案,我感觉如果是需要大量即时交互,并且对即时性要求很高的游戏,就必须使用socket服务器。而如果对即时性要求不高,完
全可以用PHP,部分的即时交互可以用socket实现或者HTTP轮询也可以。如果你的公司也像我们一样刚开始没有合适的C或者JAVA
socket程序员,选择fms和sfs也未尝不可,这样至少可以让前端人员代劳,让项目可以启动。切记这只是为解燃眉之急的下下策,长久不了,公司要想
办法尽快找到一个合适的人,在合适的时机重构。
发表评论
-
AS3 父SWF与子SWF之间传值
2011-02-20 15:19 2624FLASH中 父SWF加载子SWF并向子SWF传值在很多应用上 ... -
flash as3.0 被加载的swf 控制主swf文件触发事件
2011-02-19 14:48 3039比如有两个swf文件 1.swf,2.swf 1.swf ... -
一些很有创意的导航栏设计,给大家分享下。
2011-02-19 11:08 1584希望对各位同学有所帮助。啊哦………… 陆续完善i ... -
浅谈webgame游戏开发技术要点
2011-02-19 11:02 1012写这些只是想和大家交 ... -
aswing
2011-02-19 10:43 870AsWing是一套UI组件框架,纯ActionScript开发 ... -
as3加载外部XML文件
2011-02-18 19:50 1448加载过程如下: 1.使用URLRequ ... -
如何保护swf文件不被反编译软件破解?
2011-02-18 19:42 2187How to protect SWFs from decomp ... -
45度地图编辑器及游戏开发心得
2011-02-15 19:12 1469转载 这个编辑器是本人为公司项目专门开发 的一个功能比较齐 ... -
BulkLoader开源文件加载类
2011-02-09 22:10 1218BulkLoader是一个不错且使用简单的开源加载类, ... -
社区客户端开发技术总结
2011-01-29 22:57 863不管是什么样的项目,都会拆分成一个一个小的模块。最终实现都是些 ... -
“神之惩戒”--国内MMORPG游戏的困局1
2011-01-28 15:13 806《神之惩戒——MMOR ... -
adobe alchemy资料整理
2011-01-28 14:56 2441Adobe 自从2007年中推出了AS3支持 ... -
hitTest(BitmapData.hitTest 方法)
2011-01-25 18:14 1196public hitTest(firstPoint:Poi ... -
AS3使用外部SWF文件的库文件
2011-01-25 15:32 1473在swf文件中使用外部swf文件的库文件,从而达到类似素材 ... -
Flash摄像头游戏课件设计与开发
2011-01-25 11:07 1204[导读] Flash摄像头游戏课件设计与开发 ... -
AS3图像复制BitmapData.copyPixels()
2011-01-22 16:35 1947//舞台属性设置 stage.align ... -
ps样式介绍
2011-01-22 14:32 859PS样式就是效果的集合。“窗口”“样式”就可以打开样式面板。里 ... -
获取当前SWF的绝对路径
2011-01-20 19:22 1380首先 ,说明我测试的系统地址和网络地址的情况: 某电脑 ... -
PureMVC中观察者模式运用
2011-01-20 09:36 1296刚一个开始看PureMVC,一个字乱,摸不着头脑,不过这个要慢 ... -
获取当前SWF的当前路径
2011-01-19 20:00 1447首先 ,说明我测试的系统地址和网络地址的情况: 某电脑 ...
相关推荐
AS3是Flash Professional中的主要编程语言,它提供了强大的功能,可以创建动态、交互性强的Web内容,包括游戏。 首先,我们要了解AS3的基本结构。AS3基于ECMAScript 4,它的语法更加严谨,面向对象特性更为完善。在...
创建游戏规则和AI系统,比如敌人行为、关卡设计和得分系统,这需要对算法和数据结构有深入的理解。 8. **测试与调试**: 使用Flash的内置调试工具进行代码调试,确保游戏在不同环境中运行顺畅,及时发现和修复...
【压缩包子文件的文件名称列表】"flash game demo"表明压缩包内可能包含了一个名为"flash game demo"的主文件,这可能是一个.swf文件,即Flash播放的文件格式,可以直接在Web浏览器中运行。此外,还可能有其他的源...
本书包含了丰富的实践内容,通过构建九款经典Flash游戏的过程,使读者能够系统地学习到游戏开发的基本原理和技术。 **作者简介:** Emanuele Feronato自二十世纪八十年代起就开始研究编程语言,并特别关注Web和...
《Foundation Game Design With Flash》一书正是在这种背景下应运而生,旨在帮助Flash设计开发团队快速建立起使用Flash和ActionScript 3.0技术制作游戏的理论基础和实用技能。 #### 三、书籍特点 1. **适合初学者*...
《源码Adobe Flash 11 Stage3D (Molehill) Game Programming Beginner's Guide》是针对初学者的一本深入解析Adobe Flash 11中的Stage3D(Molehill)技术的游戏编程指南。这本书通过一系列章节的示例代码,旨在帮助...
本书《Flash Game Development by Example》旨在通过实例教授读者如何构建经典的Flash游戏,并在此过程中掌握游戏开发的基本原理和技术。书中涵盖了九个经典Flash游戏项目的构建过程,适合初学者到中级水平的游戏...
标题“pepperflash armv7h”指的是适用于ARM架构(特别是armv7h指令集)的Pepper Flash Player。Pepper Flash是Adobe Flash Player的一种版本,特别为Google Chrome和其他使用Chromium内核的浏览器设计,它利用了...
《真实世界中的Flash游戏开发》第二版是2011年由Focal Press出版的一本专业书籍,专注于指导读者掌握使用Adobe Flash进行游戏开发的技术和策略。这本书深入浅出地介绍了Flash游戏开发的各个环节,旨在帮助开发者从零...
### Adobe Flash 11 Stage3D (Molehill) Game Programming Beginner's Guide #### 核心知识点概述 《Adobe Flash 11 Stage3D (Molehill) Game Programming Beginner's Guide》是一本针对初学者的指南书籍,旨在...
- **满足市场需求**:随着Web Game等应用对3D需求的增长,Adobe不能等到2012年才开始实现这部分功能。Molehill的及时推出有助于满足市场的迫切需求。 - **促进Web 3D进化**:Molehill的出现不仅是为了与竞争对手如...
`1.html`文件通常用于嵌入`Game.swf`(SWF是ShockWave Flash的缩写,是Flash播放器播放的文件格式)到网页中,使得游戏可以在Web浏览器中运行。HTML文件中的`<object>`或`<embed>`标签会指定SWF文件的位置和大小,...
【标题】:“基于asp.net 2.0与SQL2005的Flash小游戏网站开发” 在互联网技术发展的早期,Flash小游戏网站曾风靡一时,它们提供了丰富的互动娱乐体验,深受用户喜爱。本项目是一个利用ASP.NET 2.0和SQL Server 2005...
标题中的“flash小游戏源码”指的是使用Adobe Flash技术开发的小游戏的原始代码,这些源码可供开发者学习和修改。Flash是一种广泛应用于创建交互式动画、网页元素和游戏的平台,尤其是AS3.0版本,它引入了许多改进...
- 如文件中的"game",可能是一个Flash游戏,利用XMLSocket与VB后台进行实时数据交互,如玩家动作同步、游戏状态更新等。 总结起来,FLASH通过XMLSocket与VB后台通信是一种常见的技术手段,尤其适用于实时交互的...
交叉编译则是一种将程序编译成在不同架构或操作系统上运行的目标代码的技术。在游戏播放器的场景中,这可能意味着开发者可以在一个平台上构建代码,然后使其在其他平台上运行,例如从Linux编译到Windows或移动设备。...
它利用Swoole的能力,提供了一套轻量级的架构来构建Web应用和服务,特别适合高并发、低延迟的场景。在游戏开发中,ZPHP可以帮助开发者快速搭建后端服务,处理游戏逻辑、用户数据存储、游戏状态同步等问题。其简洁的...
ActionScript 3是Adobe Flash Professional和Flex Builder等工具中使用的编程语言,常用于开发Web上的交互式内容,包括游戏。尽管现代Web已转向HTML5,但AS3和Flixel仍然是学习游戏开发和经典Flash游戏制作的重要...
此外,由于Adobe已经停止了Flash Player的支持,现代浏览器不再内建Flash播放器,因此学习Flash小游戏源码更多的是为了历史回顾和编程技巧的学习,而不是为了开发新的Web游戏。现在,HTML5、JavaScript和各种游戏...