SlideShare a Scribd company logo
Flash-MMORPG游戏引擎及工具开发概述张明光(saiman)2010.7.1QQ:457691057Blog:http://wxsr.blogbus.com/
主题:
WEBGAME 核心(引擎)基础架构1.游戏核心架构设计核心(引擎)是由多个系统组成的共同体,每个系统都负责管理自己专属的职能,系统间协调工作最终完成一项或多项功能(效果).组成:1.事件心跳机制(系统)    解决交互,互动等问题2.对象管理机制(系统)   抽象对象,类架构3.资源管理机制(系统)   各种资源或配置文件管理4.通信管理机制(系统)   解决核心内外通信问题特性:1.有效地提高开发效率2.有利于团队分工开发3.有利于2次开发及扩展
职能系统模型----职能管理器1.游戏核心架构设计定义:职能管理器是由一个或多个子管理器(子管理系统组成),        及一个通信代理组成.经由代理管理接受请求或回馈信息.特点使用特定的通信协议,并经由唯一的进出通道(通信代理)与外界进行通信.从属管理器以单例形式存在,并以特定的命名空间进行封装.基于相同的接口或子接口实现自身的通信协议(命令)及对外访问方法
事件心跳管理机制			---------指令管理器1.游戏核心架构设计事件,心跳管理机制
指令管理器(职能管理器)----事件,心跳管理中心事件,心跳管理机制定义:由心跳指令及事件指令这两种实现了     IOrder接口的指令来作为通信信息载体,并通过指令管代理进行注册分流.到其从属管理器	(心跳管理器,事件管理器)进行对循环或触发类交互的管理中心特点:1. 通信载体实现了共同的接口(Iorder)2. 以回调机制取代事件机制的大部分功能.组成:1.事件管理器AS3事件机制的特征2.心跳管理器    心跳管理的注意事项public interface IOrder{	function get execHandler():Function;	function get callbackHandler():Function;	function setUp(execHandler:Function,args:Array, callbackHandler:Function)}
一.命令管理模式public interface IOrder{	functionset id(value:int):void;	function  get id():int	function execHandler():Object;	function callbackHandler(args:Array):Object;	function setUp(execHandler:Function,args:Array, callbackHandler:Function);}指令模式与as3的事件机制的优势与区别:1.事件机制传递一个事件,需要放到事件流当中.要一层接一层的封装事件.然后通过实现了IEventDispatcher接口的对象将一个事件派发出去.这个过程可能创建的实例很多.而且因为要安插到事件流当中进行冒泡遍历.当注册的事件越多消耗越大.2.指令模式则是以预先封装好的方法及回调方式组装成一个指令原型,通信过程不需理会嵌套的层级数,直接对应用对原型的方法进行回调,而且指令原型实例只有相关的2个方法没有其他相关属性.不像事件机制需要整个对象进行引用,再加上生命周期结束后便可方便御载,销毁.事件,心跳管理机制
二.事件及心跳管理机制AS3的事件机制(事件流三个阶段)Target.addEventListener(EventType.EVENT_NAME,eventResponse)捕获阶段该阶段包括从舞台到目 ,标节点的父节点范围内的所有点。目标阶段:该阶段仅包括目标节点.冒泡阶段:冒泡阶段包括从目标节点的父节点返回到舞台的行程中遇到的节点事件,心跳管理机制事件管理器: 对核心的所有交互对象的事件侦听进行强制注册,收集管理,并实现统一的注册,销毁等接口对象回收注意:1.保证该对象没有存在引用关系( 实例属性的要保证为null)2.随意注册事件侦听(弱引用).3.对象的任意引用
心跳管理器:心跳:以一定的时间间隔为标注,间隔时间内调度一次的事件模式.目的:更好更合理的对需要进行心跳的对象进行统一管理,且节省不必要的性能浪费.途径:DisplayObject.ENTER_FRAME:特征:动作的执行以帧频为频率.每次执行必须最大程度保证当前帧的逻辑及渲染已经完成.(根据执行的情况可能会出现丢帧显现)适合于偏向渲染的心跳处理.如组件,可视对象涉及渲染的属性修改.等Timer特征:能自定义制定的时间间隔进行心跳处理而不依赖于帧频,但帧频的执行对其也有一定影响.执行的间隔的准确度跟当然cpu消耗有直接关系.适用于偏向逻辑型运算的心跳处理setInterval是一个封装好的Timer管理器.但没有实现群组,队列等功能的Timer的工厂模式实现.于as2时的区别主要在于as2时setInterval只要事件间隔到,就会马上执行下一轮代码块,而不管之前的代码块是否已经执行完毕.setTimeout能在执行完制定次数后自动销毁的计数器,是基于setInterval 的一个实现扩展.功能要求:能实现动态创建timer并对相应注册的指令进行操作.对于相同心跳的指令进行群组共同注册到统一timer心跳下以减少timer数目增多导致的性能下降.能进行 增,删,改,查,销毁等操作.根据实际需求还可以实现对同一对象下所有心跳频率的统一停止开始,销毁等功能.该部分功能特别适用对于管理场景下不同角色或怪物的速度,逻辑等事件,心跳管理机制
破解 playerglobal.swc的SetIntervalTimer部分实现的代码package flash.utils{    import flash.events.*;    final class SetIntervalTimer extends Timer    {varid:uint;        private varrest:Array;        private varclosure:Function;        private static varintervals:Array = [];        function SetIntervalTimer(closure:Function, delay:Number, repeats:Boolean, rest:Array)        {            super(delay, repeats ? (0) : (1));this.closure = closure;this.rest = rest;addEventListener(TimerEvent.TIMER, this.onTimer);            start();            this.id = intervals.length + 1;intervals.push(this);            return;        }// end function        private function onTimer(event:Event) : void        {this.closure.apply(null, this.rest);            if (repeatCount == 1)            {                if (intervals[(this.id - 1)] == this)                {                    delete intervals[(this.id - 1)];                }            }            return;        }// end function        static function clearInterval(id_to_clear:uint) : void        {id_to_clear = id_to_clear - 1;            if (intervals[id_to_clear] is )            {                intervals[id_to_clear].stop();                delete intervals[id_to_clear];            }            return;        }// end function    }}事件,心跳管理机制心跳管理器: 基于与事件管理器相同统一的管理接口对核心的所有交互对象的循环间隔调用进行集中优化管理.注意:1.timer实例越少越好,相同间隔的轨到统一timer管理.2.相同倍数的间隔timer,改用最小公倍数为间隔.3.逻辑型心跳适用Timer实现,重绘型适宜用EnterFrame4.实现对象实例的所有心跳命令的统一分组,回收或暂停
通信管理机制	-------模块及系统间的通信通信管理机制1.游戏核心架构设计
通信管理与模块通信管理机制作为游戏核心的一个重要系统机制的同时也是沟通不同系统的的桥梁分类:通信管理:.系统通信管理1.全局数据的存储,查询2.配置数据及常量的管理3.统一接口形式访问管理.模块通信管理:     对所有模块都将注册其中并对 其进行管理,模块通过接口方法send将信息发送模块管理器,并由模块管理器发送信件对内通信:(核心内)        系统间通信        系统内部通信对外通信:(核心外或2次开发)1.模块间通信 2.模块内部通信3.与服务端等外部程序间的通信信件指令 -----扩展命令模式的通信载体Message=Head+Body一个Message(信件)应由两部分组成即Head(信件头,标记信件的通信类型,发信人,收信人等基本信息的载体)及Body(信件主体,通信的行为逻辑,及回调等具体方式的Iorder接口的实现)
MODULE—模块通信管理机制说明:核心(引擎)开发的模块部分主要是为了解决            核心外或2次开发时不同功能组成的协调工作,而提供一种模板式开发方式.        并且封装及提供统一的通信模式模块间通信(ModuleToModule)模块与服务端通信(ModuleToSevice)模块内部的通信(SubModule--订阅式通信)模块化开发模块-Moudle(MVC)public interface IModule{    function   get  view():IBaseSprite    function   set  view(value:IBaseSprite):void    function   register(moduleName:String):void    function   send(message:IMessage):void    functionget   proxy():IProxy}
模块化开发通信管理机制模块分类:9.类型:主线,支线,循环,活动,常规
10.内容:对话,打怪,收集,押送,探险,特殊
11.组队 (跟随,同步)
12.宠物(跟随,同步)
13.坐骑
14.法宝
15.帮会
16.国家
 17.挂机
1.登录
2.角色(装备切换)
3.导航/技能快捷栏, (键盘操控管理,拖拉管;理)
4.地图 (bitmapdata矩阵处理)
5.好友(图文混排,html文本,tree数据结构)
6.消息  (系统消息,私聊信息,集群信息)
7.商店 (ui组件设计)
8 任务(ui组件设计)特点:1.相似度高(一般继承核心的基础模板,不同模块开发者可以相互开发)2.高效(结构清晰,不需要费太多心思去想怎么独立实现,不清楚还可以借鉴其他模块)3.基于核心提供的通信机制(模块开发者可以不需要理会核心的具体实现,   并且可以基于核心提供的通信机制完成所有通信类问题)4.模块通信的message结构决定了能够将一个封装好的动作指令传递到其他模块   其他模块在接受到信息后可以不需要重新组织而直接调用相关指令方法
解决模块内部的通信问题--------SubModule( 订阅模块)通信管理机制模块一般是一个mvc结构这也意味着一个模块将会有多个界面组成,但功能模块的唯一性.由此而导致的问题是	1.怎么在模块的某些子界面里调用模块的通信接口进行通信	2.模块在接受到别的模块发送的信息时如果要求该模块下某个组成部分进行操作时,怎么进行通知.SubModule的创建就是为了解决,这两个实际开发中经常遇到的问题而产生的.它的工作原理如下.这里边我的解决方案是采用订阅的方式,通过模块管理器对模块进行订阅式处理.将一个SubModule挂钩到一个模块后, SubModule会通过模块管理器将其注册到该模块下,并在接受信息的接口方法里遍历其所有注册的SubModule(订阅模块)进行信件广播.而SubModule(订阅模块也可以自身的注册信息通过模块管理器查找到该所属的模块并调用该模块的方法进行信件发送)等操作.不需要使用时只要在该模块移除该订阅模块即可.
对象管理机制1.游戏核心架构设计对象管理机制

More Related Content

PPTX
2017 9-12 Deep Learning / Tensorflow
PDF
Hands-on tutorial of deep learning (Keras)
PDF
NTC_Tensor flow 深度學習快速上手班_Part2 -深度學習
PDF
TENSORFLOW深度學習講座講義(很硬的課程)
PDF
COSCUP: Metaprogramming in Julia
PDF
Arrays的Sort算法分析
PPT
Flash网络通讯处理 陈苏俊
ODP
Isometric位图引擎技巧 史珉
2017 9-12 Deep Learning / Tensorflow
Hands-on tutorial of deep learning (Keras)
NTC_Tensor flow 深度學習快速上手班_Part2 -深度學習
TENSORFLOW深度學習講座講義(很硬的課程)
COSCUP: Metaprogramming in Julia
Arrays的Sort算法分析
Flash网络通讯处理 陈苏俊
Isometric位图引擎技巧 史珉

Viewers also liked (20)

PPTX
Flash游戏大会 商文烨
PPT
Flex开发大型应用的效率问题
PPTX
7月24日交流会麻球演讲 廖湘宁
PPTX
Flash 独立游戏开发之路 徐黎明
PPT
Flash独立游戏 现状分析与发展思考(陈静)
PPTX
9月18技术交流会大赛作品介绍 廖湘宁
PPT
Pv3d开发流程及商业应用 孙令纯
PPTX
Bambook开放之路
PPTX
Bambook sdk 与action script
PDF
详解AS3的内存管理机制,有效释放FLASH内存,减少资源占用
PPTX
简化复杂的Flash应用程序 谈熠
PPT
Flex开发实践经验谈(谢敏)
PPT
Flex国际化I18N解决方案
PPT
Colegas de classe dalva
PPTX
Parceria Comvital e Colégio Maximiliano
PPS
Feito a lapis
ODP
Wellington quimica
PPS
Gelo suiã§o
DOC
Horário 1º semestre de 2012 exp 28 de março
PPT
Trabajar las competencias en el aula
Flash游戏大会 商文烨
Flex开发大型应用的效率问题
7月24日交流会麻球演讲 廖湘宁
Flash 独立游戏开发之路 徐黎明
Flash独立游戏 现状分析与发展思考(陈静)
9月18技术交流会大赛作品介绍 廖湘宁
Pv3d开发流程及商业应用 孙令纯
Bambook开放之路
Bambook sdk 与action script
详解AS3的内存管理机制,有效释放FLASH内存,减少资源占用
简化复杂的Flash应用程序 谈熠
Flex开发实践经验谈(谢敏)
Flex国际化I18N解决方案
Colegas de classe dalva
Parceria Comvital e Colégio Maximiliano
Feito a lapis
Wellington quimica
Gelo suiã§o
Horário 1º semestre de 2012 exp 28 de março
Trabajar las competencias en el aula
Ad

Similar to Flash mmorpg游戏引擎及工具开发概述-张明光 (6)

PPTX
component based html5 game engine
PPT
为独立工作室构建跨平台引擎
PDF
Behind Tetris5
PDF
EasyGame分布式网络游戏服务器解决方案
PPTX
Erlang and HTML5
PDF
Maintainable Javascript
component based html5 game engine
为独立工作室构建跨平台引擎
Behind Tetris5
EasyGame分布式网络游戏服务器解决方案
Erlang and HTML5
Maintainable Javascript
Ad

More from FLASH开发者交流会 (20)

PPT
Introduction to air for android 邱彦林
PPTX
Misato engine hugh_tsai-蔡浩宇
PPTX
Swf文件格式和abc代码混淆工具 黄珏坤
PPT
松耦合代码之开发方法与工具演示 刘争辉
PPT
Flash media server 开发经验谈 沈先彬
PPTX
程序接口的另类理解与使用 孙毅
PPT
Flash ria usability 刘轩飞
PPT
Web base 吴志华
PPTX
Flash 游戏应用框架和模块化开发 邱广钦
PPT
浅析Flash特效开发 陈勇
PPT
轻量级Flash服务器开发框架(刘恒)
PPT
Ghost cat 以皮肤为主体的ui框架(唐翎)
PDF
Flash 原型开发(刘磊)
PPTX
Avm2虚拟机浅析与as3性能优化(陈士凯)
PPTX
Actionscript中的元编程和开发流程解耦(谈熠)
PPT
在FLASH平台上开发大型MMO游戏
PPTX
Moshen Mochi Overview
DOC
多元件鼠标性能测试 鞠海深
PPT
Flex中的数据绑定和列表模式—徐哲
PPT
Flash物理引擎 王成
Introduction to air for android 邱彦林
Misato engine hugh_tsai-蔡浩宇
Swf文件格式和abc代码混淆工具 黄珏坤
松耦合代码之开发方法与工具演示 刘争辉
Flash media server 开发经验谈 沈先彬
程序接口的另类理解与使用 孙毅
Flash ria usability 刘轩飞
Web base 吴志华
Flash 游戏应用框架和模块化开发 邱广钦
浅析Flash特效开发 陈勇
轻量级Flash服务器开发框架(刘恒)
Ghost cat 以皮肤为主体的ui框架(唐翎)
Flash 原型开发(刘磊)
Avm2虚拟机浅析与as3性能优化(陈士凯)
Actionscript中的元编程和开发流程解耦(谈熠)
在FLASH平台上开发大型MMO游戏
Moshen Mochi Overview
多元件鼠标性能测试 鞠海深
Flex中的数据绑定和列表模式—徐哲
Flash物理引擎 王成

Recently uploaded (20)

PPTX
学校原版佐治亚大学毕业证UGA毕业证原版一比一
PPTX
3分钟读懂贵湖大学毕业证U of G毕业证学历认证
DOC
ATU毕业证学历认证,伍赛斯特大学毕业证毕业证书样本
PPTX
学校原版杜克大学毕业证Duke毕业证原版一比一
PDF
01_Course_Introduction(20210916課後更新).pdf
PPTX
学校原版加利福尼亚大学戴维斯分校毕业证UCD毕业证原版一比一
PDF
黑客技术,安全提分不是梦!我们采用最新的数据破解和隐藏技术,精准定位并修改你的成绩,同时采用深度隐藏技术确保你的操作不被发现。价格实惠,流程快速,事后无痕...
PPTX
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
PPTX
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
DOCX
孕經濟:月子中心產業發展現狀及未來策略探討 唯有與時俱進,不斷創新,才能在孕經濟浪潮中立於不敗之地。詹翔霖老師.docx
PPTX
3分钟读懂伦敦商学院毕业证LBS毕业证学历认证
PPTX
模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板
PPTX
3分钟读懂肯塔基大学毕业证UK毕业证学历认证
PPTX
3分钟读懂渥太华大学毕业证UO毕业证学历认证
PPTX
3分钟读懂拉夫堡大学毕业证LU毕业证学历认证
PPTX
3分钟读懂伦敦政治经济学院毕业证LSE毕业证学历认证
PPTX
3分钟读懂曼彻斯特大学毕业证UoM毕业证学历认证
PPTX
学校原版克莱姆森大学毕业证Clemson毕业证原版一比一
PPTX
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
DOCX
銀髮人才重返職場的心態調整與價值提升 銀髮再就業講座 掌握銀髮人才關鍵漸進式退休的運用-銀髮勞動力論壇 詹翔霖教授
学校原版佐治亚大学毕业证UGA毕业证原版一比一
3分钟读懂贵湖大学毕业证U of G毕业证学历认证
ATU毕业证学历认证,伍赛斯特大学毕业证毕业证书样本
学校原版杜克大学毕业证Duke毕业证原版一比一
01_Course_Introduction(20210916課後更新).pdf
学校原版加利福尼亚大学戴维斯分校毕业证UCD毕业证原版一比一
黑客技术,安全提分不是梦!我们采用最新的数据破解和隐藏技术,精准定位并修改你的成绩,同时采用深度隐藏技术确保你的操作不被发现。价格实惠,流程快速,事后无痕...
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
孕經濟:月子中心產業發展現狀及未來策略探討 唯有與時俱進,不斷創新,才能在孕經濟浪潮中立於不敗之地。詹翔霖老師.docx
3分钟读懂伦敦商学院毕业证LBS毕业证学历认证
模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板
3分钟读懂肯塔基大学毕业证UK毕业证学历认证
3分钟读懂渥太华大学毕业证UO毕业证学历认证
3分钟读懂拉夫堡大学毕业证LU毕业证学历认证
3分钟读懂伦敦政治经济学院毕业证LSE毕业证学历认证
3分钟读懂曼彻斯特大学毕业证UoM毕业证学历认证
学校原版克莱姆森大学毕业证Clemson毕业证原版一比一
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
銀髮人才重返職場的心態調整與價值提升 銀髮再就業講座 掌握銀髮人才關鍵漸進式退休的運用-銀髮勞動力論壇 詹翔霖教授

Flash mmorpg游戏引擎及工具开发概述-张明光