您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Flash项目架构书
FlashFlashFlashFlash游戏项目---------------------------------------《XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX》故事背景:500年前,一个村庄里面住了一个很平凡的人,这个人叫平凡。有一次,平凡在外旅途的时候见到一个村民被欺负,平凡出手相助了这个村民,但是恶龙不服气,心里面要挟村庄里面的村民。这时候,平凡为了拯救这村庄跟恶龙进行激烈的打斗。但是在打斗的时候,被一个村民人暗算了。这个村民叫背叛,平凡和恶龙进行了500回合的打斗,最后牺牲了。恶龙消失了,人们为了感谢纪念这个人,作了一个纪念碑叫勇士,勇士一直收获村庄。但是恶龙从黑暗中醒来了,村庄也遭受到恶龙的继续破坏,这时候有一群自发组织的人,叫勇者,他们无谓恶龙的邪恶,和这恶龙进行一场激烈的打斗。主角群:主角属性勇士:技能:左踢勇士:技能:右踢怪物群:勇士:技能:一起踢怪物黑心的邪恶老板,特点黑色的心,黑色的容貌,黑色的脸,武器:黑心刀技能:杀无赦丑陋的黑心猫:黑心老板的打手特点,黑色的宿根,邪恶的容貌。武器:黑心一激技能:啥无邪开发项目类型:一款基于多人同时玩的在线大型Flash游戏开发平台:Flexbuilder3。基本系统:消息处理系统、场景显示及行走系统、打斗系统三大主要部分。其中又以消息处理系统为核心模块,其余部分紧紧围绕它运行。消息系统:处理游戏中不同的状态,游戏根据不同的状态作出不同判断。场景显示:行走系统:打斗系统:打怪物的系统其他系统:职业系统,操作系统,世界系统,,,,角色系统,AiAiAiAi系统;职业系统:游戏中有不同的职业选择,会分派不同的技能。这些时候需要我们去考虑到职业系统。操作系统:游戏中玩家的操作流程。是玩家与用户交互的一种手段世界系统:讲述游戏文化内涵角色系统:玩家操作游戏人物进行游戏的人物;Ai系统:游戏中的大脑中心;是宏观控制每一个角色进行活动的上帝;职业系统与能力世界系统:角色系统游戏主类(GameMainGameMainGameMainGameMain类):GameMain是游戏主入口:1.初始化窗口:设置窗口风格2.进入系统消息循环WndProgress(message:int){Switch(messgae){caseWM_Init://初始化窗口;breakcaseWM_Paint://渲染窗口break;caseWM_Close://退出系统break;caseWM_KEY_DOWN://键盘事件break;}Return0;}项目开发主要类和类库包:游戏主类(GameMain类):是游戏主程序入口地图管理(MapManager包):用于加载和卸载地图等物品管理(ItemManager包):用于管理道具物品,武器,套装等声音管理(SoundManager包):用于管理声音,包括加载音乐,设置音乐特效等角色管理(CharacterManager包):包括常见用于创建主角和配角事件管理(EventManager包):每一个情节作为一个类进行管理对白管理(WordManager包):用于管理语言,读取一些基本通知信息,npc说话场景管理(SenceManager包):用于场景切换,更新场景,加载场景,卸载场景通信管理(communionManager包):socket通信,连接服务器的操作管理(ControlManager包):用于设定游戏的操作键盘,和鼠标游戏管理(GameManager包):包括游戏设定,音乐,背景默认设定。游戏Ai管理(AiManager包):设定怪物一些Ai,NPC一些行为游戏效果管理(EffectManager包):管理一些招式效果类以及动画游戏错误管理(ErrorManager包)管理一些错误的情况一地图管理:(MapManager包)这个包下有很多的类用于地图上的管理。包括基础类Map,功能加载地图,Map类下有以下的方法:实现方案::::方案1.1.1.1.元素构成的地图将一些地图区分不同图片元件,将它绘制在场景里面。图片切割的大小按实际需要而定。例如:主窗口是640x480分辨率,切割每一块单元图片32x32大小。那么图片单元数目为20x15=300块。如下面:myMap=[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]];那么在这个数组里面其中“1”代表图片1.“0”代表图片0同样的话,为了使某一些障碍物和主角进行碰撞,在数组里面myMap可以进行改变某一项的数值,这样可以用图片单元的隐含的信息进行判断。省去使用hittstobject带来的计算量。带来的影响:优点:可以重用很多的图片单元模块,减轻内存的占有率。由于地图上的许多区块是共用的,因此需要另外建立一组资料来些元素的排列顺序,这个排列顺序的资料列,我们通常都将之称为地图资料。重复使用元件,减轻内存占有。缺点:切割的图片单元如果过多会对游戏产生一些效率性的问题?至于这些效率性的问题在切割图片的时候需要注意考虑。基类:ClassMap{基本属性:MapName地图名称或者索引号MapPath地图路径Speed为地图加入移动的属性值,这个值受英雄移动速度影响,因此制作时候需要特别处理基本方法LoadMap(path:String);//加载地图UnLoadMap(MapID:Map);//卸载地图ChangeMap(path:String);//切换地图DrawMap(map:Array)://画制地图}二.道具管理((((ItemManager包))))这个包是负责角色的使用物品包括道具(),武器(攻击),装备(防御)2.12.12.12.1基类CCCClasslasslasslassitemitemitemitem{{{{ItemName物品名:基本属性基本方法://可以返回一些属性值,可以是}}}}////////道具类ClassGoods{基本属性:ItemName://道具名或者索引道具附加的属性,包括火,冰,风,水土,木等附加属性基本方法://返回物品附带的属性(get)}例如可以是书:增加智力可以是草药(当hp低于最大值的时候可以增加hp属性),可以是有钱的宝石:增加金钱可以是增加血量的石头:Maxhp////////(攻击)武器类ClassWeapon{基本属性:WName//武器名WDamage//武器所带的属性DamageValue//武器所带的附加效果基本方法:Damage():int//返回武器的破坏属性值(get)returnWDamage}武器中分为很多的武器,有它的共性,同样也有它的区别,同样可以呈现出不同的状态问题集如何解决武器切换问题?程序实现(实现的时候是需要更改不同的动画来达到更换武器的效果)////////(防御)装备基类这里带有一点防御类classEquip{基本属性:EquipName装备名称:基本方法://装备带来的是返回一些属性值的(get)}装备可以有很多种的装备如衣服,首饰,鞋子,但是装备都有一定共性。如名字,返回属性值的方法。(ReturnReturnReturnReturn)如增加一些防御值,防御逃避几率。衣服:增加防御值Armor:int首饰:增加某一些防御Armor:int鞋子:增加移动性能,Speed:int三.声音管理(SoundManager包)这个包负责声音的特效,加载,卸载,场景音乐播放停止暂停,调整音量大小,获取音量大小,还有一些显示的问题;问题集:1.解决声音缓冲处理问题?令游戏更加流畅2.错误的处理机制?怎样设立?加载成功和加载失败的时候处理方式如何?3.循环播放背景音乐?以及设置动作打斗的音效?ClassGameSound{基本属性:varVolumeValue:int//声音响亮的值的大小//Posion:int//声音的播放位置LoadMusic()//加载音乐UnloadMusic();//卸载音乐StartMusic();//开始音乐StopMusic();//停止音乐PauseMusic();//暂停音乐SetMusicvolume//设置音乐的音效大小(set)intGetMusicvolume//获取音乐音效大小(get)intGetMusicName//获取音乐的名字(get)string}四.角色管理(CharacterManager)这个包负责创建不同的主角和配角,包括创建角色,设置角色属性,获取角色属性,删除角色,分派角色的常见行为和技能等,设置怪物Ai。写一个接口或者建议基类共享角色中的属性和方法(当创建主角和创建怪物的时候,也一样可以使用这样方法);制作使用的设计模式:Strategy模式;工厂模式;单例模式;外观模式.Decorator模式:4.04.04.04.0角色的不同职业(职业系统)注意:角色分为不同的职业,不同的职业会有不同的技能和行为。因此我们需要设计一种方式去动态分派不同职业的不同行为和技能属性。1:准备一套技能的类,封装这些每一个技能类(一个基类,派生不同的子类,但实现方法不同)2:设计一种可以更换武器的方式的模式,让角色可以更换自己的装备例如:有一个种职业叫法师,他会放魔法,但是如果一种职业是斧头工,他只是会使用武器攻击,但是法师是不会使用那个方法的。4.1.4.1.4.1.4.1.CCCCharacterharacterharacterharacter角色类的基类ClassCharacter//为一个基础类,包括基本的Speed属性,Hp属性,包括站,走,攻击,跳跃,跑等这些共性是可以由主角类和怪物等继承。定义角色接口:PublicinterfaceIIIIcharactercharactercharactercharacter{{{{functionfunctionfunctionfunctionStand():void//Stand():void//Stand():void//Stand():void//站functionfunctionfunctionfunctionWalk():void;Walk():void;Walk():void;Walk():void;////////走functionfunctionfunctionfunctionRun():void;Run():void;Run():void;Run():void;////////跑functionfunctionfunctionfunctionAttack();//Attack
本文标题:Flash项目架构书
链接地址:https://www.777doc.com/doc-752878 .html