Welcome

首页 / 软件开发 / Silverlight / Silverlight网页游戏设计思想(WebGame Essence):(一)动态资源

Silverlight网页游戏设计思想(WebGame Essence):(一)动态资源2012-07-08 博客园 深蓝色右手即开即玩是网页游戏相比传统客户端游戏的最大优势。如果说在每台电脑安装上G的客户端是一种资源浪费及时间污染;那么 Silverlight作为RIA界的新宠儿,在继承祖辈优秀血统的前提下拥有更加卓越的性能及更为曼妙的动态表现,势将引领网络未来世界进入那 令人神往的低碳空间。

笔者学习Silverlight开发1年有余,在写第一部Silverlight游戏系列教程时为了尽快的实现目标而将所有素材资源打包进XAP中。与其 他Silverlight初学者一样,这或许是我们所必须会经历的一个过程。QXGameEngine最终完成时,它的体积已经达到了18M有余,功能需求满 足了预期,可是却让大量还未接触过Silverlight的朋友产生巨大困惑:难道Silverlight仅仅是镶嵌于网页中的游戏客户端?

QXGameEngine作为教程示例再贴切不过;但如果说要将之商业化,首先就违背了RIA的初衷:即开即用。漫长等待是对用户体验的无情扼 杀,不仅随时可能造成用户流失,毫不客气的尊称其为失败品亦不为过。

针对Silverlight资源配置问题,国外很多朋友首先想到且用得最多的莫过于独立存储(Isolated Storage)。比如Dark Ieign -- 最近 在网站上看到的Silverlight2D即时战略大作。虽然其等待资源下载过程中我们可以通过欣赏游戏宣传动画短片打发时间,但本质却与 QXGameEngine如出一辙,将所有的资源必须性的一次性下载完,不管会不会用到,这样的形式仍旧十分糟糕。是的,Silverlight才刚起步 ,毕竟Dark Ieign让我们看到的是一款大作风范。历史中新生事物的起源都必然会经历一个适应期,不久的将来一旦Silverlight完美动态 技术普及开后,堪比星际争霸2之类大作终有一天会出现在Silverlight平台上,拭目以待!

8个多月过去,第一部游戏教程全部完成了。其后QXSceneEditor在笔者思考如何实现Silverlight游戏快速开发的同时孕育而生。其搭建 于一个兼具静态资源及动态资源混合使用的游戏框架下,XAP包存放的不再是一切资源,而仅仅是一些常用的小图片、图标及场景、精灵等 配置文件;相对于前作,该场景编辑器动态参数及动态配置的灵活结构可以轻松拓展出任意类型的各式游戏,而不仅仅再局限于RPG。

又是3个月,第二部教程伴随着3个全新Demo的完成落下帷幕。此时再次重温QXSceneEditor,仔细琢磨又一次感到其结构仍不完美:一开 始就加载所有场景及所有精灵的xml配置信息,假想一下如果有100个场景,而玩家或许从注册到对游戏失去兴趣也走不到10个场景,那剩下 的90个场景的配置文件容量不是白下载了?林林种种……。于是,在中游在线的《WOWO世界》的感悟下触使我决定再次去探求Silverlight -WebGame的极至框架,理想中它应该贯穿着“一切动态”,“按需加载”的搭建理念,秉持“体验至上”,“优异性能”的整体特性,于是 诞生了想要从头来过的全新思路。

这是一次真正的从零开始,技术的革新让我决心从游戏的开始制作到游戏的结局,不在乎这个结局是喜是悲;我将在此第三部作品中倾 注更多关于自己领悟的Silverlight-Web游戏设计思想。同以往一样,如果朋友们觉得有不对之处,恳请善意指正。这三个系列的诞生与发 展不光是我一个人的努力,没有大家的支持、建议和批评,也不会坚持到今天。

以上抒情。

接下来将进入本节的主要内容:Silverlight WebGame中的动态资源配置。

从Javascript的var到F#的lambda,C#在取之精华,去其糟粕的同时让自身发展得更为完美,趋势中弥漫着“动态”给我们编程带来的无 限芳香。“动态”,不论在任何场合都是一种优秀表现;与“动态” 相呼应的是“自适应”,从布局的“自适应宽高”到游戏资源的“自 适应按需下载”,这些均可以从当下诸多优秀的软件架构中得到充分体现。

在Silverlight学习之初大家已意识到动态下载的重要性,从最初的探讨dll动态下载、xaml动态加载、xap动态获取到数据传输的序列化 与反序列化以及资源的压缩与解压。直到今天,笔者在反复尝试下终于完成了个人感觉目前效果还算较好的资源结构布局模式:独立于对象 的配置布局体系。

何谓独立于对象的配置布局体系?我们不妨先看张图: