网站大量收购闲置独家精品文档,联系QQ:2885784924

Arpg设计思想-开发必看范例.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
整体结构 ? ?? ?图0 1.心跳机制 BigHeart心跳器,是游戏中统一的动力来源,提供游戏的动力驱动。心跳器会以一定的时间间隔跳动,感兴趣的监听者可以向心跳器注册。 心跳器驱动的有:每个游戏循环内场景的更新函数update(deltaTime)、定时对引用计数为0的动画资源、图标资源等做垃圾回收gc、活动以及领取奖励的倒计时等、向服务器发送心跳包。 因为游戏的动力都是来源于此心跳器,可以很好的解决flash插件的睡眠模式问题。即使自身丧失动力,也可以由外部容器定时调用心跳函数,来保证正常的游戏循环得以进行。 很多游戏都提供了对timer进行管理的功能,但职责更多的是创建timer,并按不同时间间隔存放timer。而不能像心跳器这样避免很多timer实例的存在。 2.资源管理 ? ? 加载器BoostLoader是单例类、全局唯一,游戏中所有的资源的加载都由加载器统一管理, Loader、URLLoader不再对用户可见(和php交互时用到的URLLoader,JS调用,封装的有HttpInterface类)。 加载器内部维护不同优先级的待加载队列,可以设置并发加载的最大数量,当前资源加载完成,或者正在加载的资源数量小于最大并发数量时,会从待加载队列中找出优先级最高的进行加载。当用户请求一个资源的时候,会首先查看其请求的资源是否已经在加载或请求队列中,如果已经存在,只需添加请求者信息到资源的请求队列中。资源加载完成后,通知所有的请求者进行处理。 为了明确职责,加载器只负责资源的加载,不负责存储,也不进行另外的解码等操作。已经下载完成的资源,交由其请求者处理后,加载器不再保存其引用。为了缓存游戏的地图区块图片、位图动画、图标、SWF皮肤资源,提供专门负责地图区块图片管理的MapDefManager、专门负责动画资源管理的管理器AnimationDefManager、专门负责图标资源管理的ImageDefManager、专门负责皮肤资源管理的SkinManager。有了这些资源管理器后,上层用户也不需要和加载器直接打交道,而是通过这些管理器请求资源。 具体的一个动画资源AnimationDef、图标资源ImageDef都保存有引用其的BmpAnimation、Image类的引用计数,会定时的清理计数为0的资源。 划分出不同类型的资源管理器,而不是一个统一的缓存管理器的目的也是为了明确职责,尽量使每个类只做一件事情,满足单一责任的原则。 3.网络 网络模块提供客户端与服务器间进行socket交互的功能。基本上每个游戏都会和服务器有两个连接以上的交互。一种就是先与账号服务器交互,账号验证后在整个游戏循环内一直保持与网关的连接交互。另外一种就是为了减轻网关的压力,在账号服务器验证过后,持有其发送过来的ticket,去直接分别连接场景服务器、聊天服务器、全局服务器,而不统一通过网关转发。 为了适用这些模型,提供一个ConnectionManager管理与服务器的各个连接Connection,每个Connection以ip+port作为key。每个Connection收到的数据统一交由Dispatcher类进行分发。对某个以cmd标识的消息感兴趣的用户,可以向Dispather进行注册接收。 如果想避免手动写消息结构的序列化以及反序列化的代码,可以利用类的反射机制,编写一个自动序列化器自动对消息结构进行序列化和反序列化的操作。例如使用技能的消息: ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? ? ? 图3.1 4.场景 4.1分层结构 图4.1 4.2 Terrain设计 ? ???Terrain的设计主要有三种思路,目前很火的arpg游戏处理方式也都是下面三种之一,都是分块加载,但是加载之后的处理上有所不同: 1)整个地图是作为一个位图(fp9位图最大为2880,fp10中位图最大为4096,超过限制则可分成多个)来移动, terrainData:BitmapData = newBitmapData(terrainWidth,terrainHeight); 但是加载采用切块的方法,当某个i_j位置的切块地图加载进来的时候,将此块地图数据通过copyPixel拷贝到terrainData的响应位置处。 2)地图是一个sprite容器,terrainSprite:Sprite = new Sprite().只将屏幕周围的区块给addChild进来。根据游戏主角的位置,调整terrainSprite的偏移。 3)地图是一个画布,terrainCanvas:Bitamp =new Bitmap();将屏幕周围的区块的位图数据画到这个画布上。根据游戏主角的位置,调整terrainSprite的偏移。 4.3场景元素

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档