Silverlight网游可媲美客户端的核心组件之一便是资源动态下载。Silverlight为我们提供了稳健且丰富的WebClient,虽然它本身无法实现并发操作,然而凭借其强大的特性我们可轻松编写出一款资源下载器,满足网游设计中各式各样的资源获取需求。

如何构建这条资源下载通道是游戏设计之初我们应该考虑的问题。你希望它是一条普普通通的马路人来车往随意穿行游走;还是希望它是一条标示清晰、分道合理、次序井然的高速公路?

当然,你会说越快越好,最好永远不堵车,路窄时就一个挨一个慢慢走;路宽了便分道扬镳。

我们不妨将下载通道比作道路,能并排几辆车通过即为“并行模式”;只能一辆一辆的通过则为“串行模式”。很明显,并行的速度要比串行快得多,不过消耗和设计方面则要比串行多且复杂,各有利弊。另外,下载通道如果仅是单纯的串行,则速度太慢且浪费资源;而如果仅是单纯的并行,过多的并发时快时慢、有大有小极易导致UI卡死以及下载堵塞。

再次回到我们的高速公路上,不知你是否有过这样的体会,行驶时常会见到很多大货车以60公里/小时的速度顺次行驶在慢车道上,而小车们则通常会以80-100公里/小时不等的速度在快车道与超车道上彼此间穿行。

人类自身的活动规律来检验理论的合理性非常具有参考价值,由此可见兼具“串行”与“并行”的游戏资源动态下载器才是我们所追求的设计目标。比如游戏中随时可能大量涌现的动画(animation)资源,我们可将它们放在串行队列中依次获取;而角色装备、地图区块等更迫切需要呈现给玩家的资源则可放在并行通道中并发下载。

依据以上分析,思路清晰后仅仅只需百来行代码便可轻松编写出一套完整的资源动态下载组件- SerialDownloader和ParallelDownloader,它们共用一个完成资源表,且串行下载集成了优先机制(DownloadPriority),并行下载也根据需要封装了并行队列模式(QueueParallelDownloader):

DownloadBase
SerialDownloader
ParallelDownloader

经过测试,它们的运行非常稳健,当然这也少不了WebClient的功劳,尤其体现在其中的抗网速阻塞、抗断网处理机制(5秒重试)。大家不妨在游戏资源下载过程中打开迅雷并全速全线程下载上传一堆东西,或者直接将网卡禁用,此时观察游戏中资源下载状况;然后关闭迅雷并启用网卡再观察所有的一切下载均立刻恢复正常。同时也证明了,规划合理的串行和并行如同设计一条完美的高速公路,它是成就高性能Silverlight网游引擎所不可或缺的功能模块之一。

没错,Silverlight在网游开发中拥有如此优越的特性,不久的将来大家将看到更多的网游奇迹因Silverlight而诞生,一起见证。

本节源码请到目录中下载

在线演示地址:http://silverfuture.cn

Silverlight 2.5D RPG游戏技巧与特效处理:(十三)资源动态下载组件相关推荐

  1. Silverlight 2.5D RPG游戏技巧与特效处理(Game Effects):目录

    以当下主流的2.5D RPG客户端品质游戏特效为借鉴,以最大程度控制性能损失为前提,将Silverlight游戏资源占用最小化,综合效果及用户体验最优化,即本系列作者想要向大家讲解的核心技术知识. 本 ...

  2. Silverlight 2.5D RPG游戏技巧与特效处理:(二十一)自定义路径动画

    一直在想应该用什么作为<Silverlight 2.5D RPG游戏技巧与特效处理系列教程>的终结,既要实用而不拖泥带水:又要通用而不哗众取宠.于是一不小心便成就了我一个未了心愿:一切基于 ...

  3. Silverlight 2.5D RPG游戏技巧与特效处理:自定义路径动画

    一直在想应该用什么作为<Silverlight 2.5D RPG游戏技巧与特效处理系列教程>的终结,既要实用而不拖泥带水:又要通用而不哗众取宠.于是一不小心便成就了我一个未了心愿:一切基于 ...

  4. Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统

    Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统 作者: 深蓝色右手  来源: 博客园  发布时间: 2011-04-19 11:18  阅读: 1282 次  推荐: 0 ...

  5. Silverlight 2.5D RPG游戏技巧与特效处理:(五)HLSL渲染动画

    或许大家依旧对上一节中的"黑夜"及"梦回过去"记忆犹新,追问下去HLSL到底是何方神圣能实现如此炫酷之效果?HLSL(高级着色器语言)作为微软的独门兵器,仅供D ...

  6. Silverlight 2.5D RPG游戏技巧与特效处理:HLSL渲染动画

    或许大家依旧对上一节中的"黑夜"及"梦回过去"记忆犹新,追问下去HLSL到底是何方神圣能实现如此炫酷之效果?HLSL(高级着色器语言)作为微软的独门兵器,仅供D ...

  7. 一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(五)圣赞之HLSL渲染动画...

    或许大家依旧对上一节中的"黑夜"及"梦回过去"记忆犹新,追问下去HLSL到底是何方神圣能实现如此炫酷之效果?HLSL(高级着色器语言)作为微软的独门兵器,仅供D ...

  8. Silverlight 2.5D RPG游戏技巧与特效处理:(十二)魔法系统

    全球首款Silverlight – MMORPG:<<窝窝世界>>震撼登场!伴着与XNA合体后的Silverlight 5 强势发布,一波Silverlight网游研发海啸即将 ...

  9. 一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(十二)魔法系统

    世界首款Silverlight – MMORPG:<<窝窝世界>>震撼登场!伴着与XNA合体后的Silverlight 5 强势发布,一波Silverlight网游研发海啸即将 ...

最新文章

  1. js中的new file_深受 Pandas 启发的 JavaScript 开源库 — Danfo.js 现已推出!
  2. python2 x与python3 x_python2.x 与 python3.x的不同
  3. php单表查询语句,单表查询
  4. geotrellis使用(三十)使用geotrellis读取PostGIS空间数据
  5. Linux/Unix/Mac 系统GIT密码存储
  6. (十四)【RecSys 2016】Personalized Recommendations using Knowledge Graphs: A Probabilistic【看不懂】
  7. Lines(HDU-5124)
  8. Halcon的应用程序 打开后 弹出没有帮助文件错误提示
  9. SpringMVC : SpringMVC注解
  10. ios11+html5偏移20pt,iOS tableView内容向下偏移20pt或向下偏移64pt的问题?
  11. 使用 Python+Selenium + 第三方库实现的简单的 web 自动化测试框架 源码
  12. java泛型中的通配符 extends与super
  13. WinForm开发(36)——WinForm开发微软官方最全综合详解指南(包括bug出现的可能原因分析及解决方法)
  14. jep在java的SpringBoot中的使用
  15. vsftp乱码问题解决
  16. 自动驾驶横向控制 LQR 算法推导及仿真学习笔记
  17. 组合优化中的P问题,NP问题,NP-complete问题和NP-hard问题
  18. macOS 安装postman 中文语言包
  19. Java后端工程师面试自我介绍
  20. 制作纯净的U盘启动盘(避免纯净系统安装后却内置垃圾软件)

热门文章

  1. 如何利用亚马逊买家秀和亚马逊红人视频关联竞品流量,帮助产品曝光抢流量和店铺引流
  2. 亚马逊红人视频和普通买家秀有什么区别?
  3. 遇见这4种领导,赶紧辞职,越快越好!
  4. 偷偷告诉你......
  5. AFG与AWG的比较
  6. PCB中,Solder Mask与Paste Mask有啥区别呢?
  7. 2014年中国十大电容器企业排名
  8. 游戏数据逆向分析系列课程之64位篇
  9. 无处不在的流计算到底是什么?终于有人讲明白了(附导图)
  10. php 系统模版_原生PHP模板系统:Plates