asp+php+mysql+aspx环境搭建与6种网站安装2,网站域名怎么起,sem对seo的影响有哪些,安卓软件开发需要学什么软件页游资源管理 现在页游的规模越来越来大#xff0c;游戏内容丰富#xff0c;资源管理变得很重要。现在一款SNS页游的所有资源可达50M#xff0c;MMO页游更高达几百M#xff0c;不可能把资源放到一个文件里面、也不可能一次性加载完所有资源。按200kb/s的下载速度来算#… 页游资源管理 现在页游的规模越来越来大游戏内容丰富资源管理变得很重要。现在一款SNS页游的所有资源可达50MMMO页游更高达几百M不可能把资源放到一个文件里面、也不可能一次性加载完所有资源。按200kb/s的下载速度来算50M的资源需要4分钟这是绝对不能忍受的事情更何况大部分人网速比这慢。 页游资源通常有以下几种格式图片jpg、png等、xml配置文件、swf资源、声音文件。通常有以下手段来管理资源并解决进入游戏慢的问题 l 配置文件压缩打包 l 资源细化分离按需加载 l 模块化编程按模块加载 l 资源缓存 l 资源预加载 l 使用CDN部署资源 1. 配置文件压缩 页游需要10几20几个配置文件这是很常见的配置文件现在流行使用xml格式。可以通过压缩软件打包flash通过二进制方式加载压缩包之后解压使用。这样一方面减少连接请求数另一方减少了流量。 2. 资源细化分离按需加载 分离各类模块和素材图片、swf文件方便实现按需加载。整个游戏的资源size很大但是进入游戏往往并不需要所有的资源。这样我们可以分离各类模块和素材所有资源通过配置文件管理。整理出进入游戏需要的必加载资源剩余资源只在需要的时候再加载以减少进入游戏的时间。分离各类模块和素材还要一个好处就是减少单个资源的size降低资源下载失败的情况。 按需加载的流程如下 l 判断资源是否可用是否已经加载过 l 如果已经加载直接使用即可 l 否则加载资源下载完成后才使用。 这里有点需要注意 – 如何判断一个资源是否已经加载过一般加载过的资源我们会缓存在内存中这样下次使用资源无需再次加载加载过的资源使用一个Dictionary管理以资源url为key资源内容为值。注意不用使用数组保存资源使用字典会比遍历数组查找名称快很多通过资源url就可判断资源是否已经加载过。或者通过applicationDomain.hasDefinition(className)查找资源中的链接类是否可以在应用程序域中找到因为加载通常会制定一个应用程序域加载过的资源可以直接从域中读取。 我做过的几个游戏进入游戏必加载资源必须尽量小这样可以保证玩家可以快速进入游戏这也是一个硬性指标按需加载是必须的 3. 按模块加载 模块细化按照程序逻辑游戏可以拆分出多个模块如“登陆模块”、“副本模块”、“任务模块”、”关系链模块“等等按照游戏中的关卡或场景可以拆分出不同的“场景模块”。这些模块不是主程序运行必须的只在需要的时候加载。 这点其实跟第二点“按需加载”是一样的这里更关注游戏如何进行模块划分使得程序可以按需加载。模块划分主要包括“核心模块划分”和“子模块划分”。核心模块的划分思路是这样的它们是游戏启动所必须的相互之间是紧密联系的还要经常的被子模块调用而相对的子模块的划分思路是他们在游戏启动过程中不是必须的可以在游戏过程中再加载子模块相互之间基本上完全没有联系一个子模块的增加和删除不会影响到任何其他子模块子模块可能需要调用主程序的接口或者获得主程序的数据但主程序绝对不应该依赖某个子模块。 明确了模块划分思路再具体看看哪些部分应该划分为核心模块哪些部分应该划分为子模块。一般情况下核心模块按照游戏启动顺序大致包括 加载壳SWF → 登录注册SWF → 灰度控制文件 → 主程序SWF → 配置文件包 → 公共素材包 → 主UI需要的资源 。 注 l 加载壳SWF一般很小50K左右小于100K只包含2个功能1登录注册、灰度控制2加载主程序swf。加载完主程序swf加载壳就完成自己的工作主程序swf接管程序控制权。尽量最小化加载壳的功能以保证调整或增加功能不用修改加载壳。 l 接入第三方平台时如腾讯”登录注册SWF“不需要统一使用页面登录框。 l 公共素材包除了抽取的普通资源swf包还可以是共享库的形式UI共享库、Font字体共享库。 l 把公告素材包、主UI需要的资源放在”注程序SWF“之后否则需要把配置文件包、加载公共资源等工作放到加载壳中去做。如果其中使用到的公用类被修改、项目运营中频繁运营造成修改配置文件和资源管理方式加载壳就得重新编译发布违反了”最小化加载壳的功能“规则。 4. 资源缓存 Flash页游可用的缓存有以下几种形式内存、浏览器缓存、ShareObject flash特有的。游戏查找资源通常按照内存 ShareObject / 浏览器缓存 服务器的顺序检查。缓存的使用可以给玩家非常好的体验只在第一次加载时耗时久这样整体游戏会感觉流畅不会每次切换场景等都要等待从服务器加载资源的时间。 前面介绍过一般加载过的资源我们会缓存在内存中这样下次使用资源无需再次加载加载过的资源使用一个Dictionary管理。但是内存资源是有限且宝贵的通常只驻留常用的资源。对于其他资源这时ShareObject / 浏览器缓存就很有用比从服务器拉取速度快、并且节省流量。 4.1. 浏览器缓存 关于浏览器缓存可以参考文章浏览器缓存机制。http://goo.gl/SaHt0 4.2. ShareObject 这里需要理解下为什么有了浏览器缓存as3还搞个ShareObject虽然有浏览器缓存但实际上这种缓存持续不了几天因为浏览器一向都有最大缓存限制。一般你看几个视频这个缓存空间就消耗得差不多了。为了不让Flash加载的文件缓存被冲洗掉你可以将加载的文件的二进制数据Loader是contentLoaderInfo.bytesURLLoader则要用二进制方式加载获取其data属性保存在ShareObject里并添加版本号以便更新下次加载就直接取这个数据。这个操作会请求大量ShareObject空间因此FLASH会弹出提示让用户确认ShareObject默认是100K的大小超过这个大小需要用户确认。如果你担心用户不确认可以在游戏其他地方向用户说明情况并要求他们点击确认按钮现在已经有很多MMO页游这么做了。 Shareobject示意 var so:SharedObject SharedObject.getLocal(resName_v1); if (so.size 0) { // 共享对象不存在。 trace(created...); so.data.res bytes; so.data.ver “v1”; } trace(SharedObject is so.size bytes); so.flush(); 5. 资源预加载 空闲的时候预加载核心资源或者根据玩家特点预加载需要的资源。 l 根据玩家的操作预判下一步要做的操作预加载相应资源这个要具体游戏具体分析。 l 帮核心玩家预加载所有核心资源。如核心QQ农场玩家同时会玩QQ牧场并经常在这2个模块之间切换在玩家进入QQ农场空闲时预加载牧场的资源。 资源预加载技术上不难关键是要找到合适的时间加载对的资源。 6. 使用CDN加速 关于CDN-内容推送系统可以文考文章CDN-内容推送系统http://goo.gl/H7Llw。 现在我所在公司所有的页游都使用CDN技术。CDN技术也在各大门户网站实践使用。 关于CDN加速页游其实和加速网站差不多参考方案《网页游戏加速解决方案交流》百度文库。 你可能感兴趣的还有 ü 走在网页游戏开发的路上一 ü 走在网页游戏开发的路上二 ü 走在网页游戏开发的路上三 ü 走在网页游戏开发的路上四 ü 走在网页游戏开发的路上五 ü 走在网页游戏开发的路上六 ü 走在网页游戏开发的路上七 ü 走在网页游戏开发的路上八 ü 走在网页游戏开发的路上九 本文转自吴秦博客园博客原文链接http://www.cnblogs.com/skynet/archive/2012/12/20/2827236.html如需转载请自行联系原作者