本课程Demo在线演示地址:http://silverfuture.cn/ (随课程进度不断更新,所有资源暂时放在xap)
2010年7月20日是一个不平凡的日子,应朋友的邀请在自己的家乡广西师范大学展开为期两周的Silverlight游戏开发课程培训。这是我为家乡做贡献的第一次尝试,看到二十多位同学牺牲暑假的时间与我一同学习感到无比欣慰,中国年轻人的激情并没有被这个和谐的社会所磨灭,在他们对知识与未来充满渴望的眼神中我激动的走上了人生中又一个讲台。是的,Silverlight新的探险之旅即将从这里起航!
未来的一段日子里,我会把讲课的流程教案(非详案)整理并公布于博客中(如有条件我争取将视频一同发布),希望能为广大的Silverlight爱好者们提供更多的学习资料。中国的IT技术不能总牵着世界的尾巴走,我们应该Show出自己独到的舞步,让世界昂首以望!
课程要求:
1、热爱游戏,对游戏开发有着极高热情,愿意投身于Silverlight游戏开发领域。
2、需要一定的编程基础,例如面向对象的知识。Silverlight运行于.NET平台上,因此本课程以C#为主要编程语言,同时还会用到Javascript、F#等等。
3、善于动手,特别是要多动手。本课程会有大量动手机会(每节都有Demo演练)。如果没有.NET相关编程经验,则需要您在课下多多学习多多练习,遇到问题学会上网查阅资料,提高自学与解决问题能力。当然课程中我也会告诉您涉及些什么知识,会告诉您明确的学习方向;并且,我会毫不吝惜的分享所有相关文档以及书籍等资料。
4、课程Level :200(中等难度)
课程简介:
1)开发平台
操作系统:Windows XP / Windows 7
语言:.NET 3.5/4.0
工具: Visual Studio 2010 + Silverlight 4 tools
3)涉及知识
C#、Silverlight、WCF、MSSQL、Javascript、HTML等
2)课程亮点:
本课程涉及的内容知识点均非常新,由浅入深,从多角度、广域面对Silverlight开发MMORPG网页游戏进行细致讲解。国外目前虽然有一些Silverlight游戏开发方面的初级教程,但涉及的知识相对基础,不适合向大型游戏项目拓展。而本课程建立在作者博客文字教程(C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial)及Silverlight游戏设计(Game Design))基础之上,所有内容均为原创,通俗易懂趣味性浓编写至今广受网友们的好评,是目前国内不可多得的游戏开发教程。本次课程又在原有引擎基础上做了大规模优化,所有代码重新编写,面向对象的思想贯穿始终;力求为广大热切希望向Silverlight转型的开发者们提供一部完美而优秀的入门教程,让Silverlight网络游戏开发更高效,更简单。
3)课程目标:
[第一期]
以实现传统RPG单机游戏所有基本功能为目标,在学习游戏开发过程中同时掌握Silverlight大部分相关编程语法、技术要点及技巧。
[第二期]
实现传统的MMORPG网络游戏基本功能,重点在于掌握Silverlight客户端与服务器端的通信技术(如WCF、Socket等等)。
4)课程安排:(见附件-课程表)
5)推荐书籍:
《Silverlight2完美征程》
《Silverlight3银光志》
引 言
一、什么是Silverlight
Silverlight是微软所发展的 Web 前端应用程序开发解决方案,是微软富互联网应用程序(Rich Internet Application,简称RIA)策略的主要应用程序开发平台之一,以插件的形式安装于浏览器上运行。
与Flash较类似,其主要特点有:
1)跨浏览器、跨平台技术。可以在所有流行的浏览器中运行,包括Microsoft Internet Explorer、Mozilla Firefox, Apple Safari 和Opera;同样也可以以独立窗口程序的形式(Out of Browser)运行于Microsoft Windows和Apple Mac OS X(跨浏览器、跨平台,可桌面化)。
2)无论在哪运行,都能提供一致的用户体验(多浏览器下无差别体验)。
3)只需一次性下载很小的插件文件安装以支持,耗时仅数十秒(V4.0的插件容量约 6M )。
4)读取数据且更新外观时,不会通过刷新整体页面而打断用户操作(无刷新体验)。
二、Silverlight技术优势
Silverlight在短短三年半的时间里更新了从1.0到4.0这4个版本,除暂时对3D方面的支持较弱些,在整体功能方面(无论企业级开发还是游戏开发)已全面赶超FLASH,是微软“三屏一云”计划(电脑屏幕、手机屏幕和电视屏幕以及云计算)的核心技术之一。
Silverlight相较于其他RIA技术如Flash、JavaFX、AJAX、HTML5等更加强大的优势在于:
1)一学两用:Silverlight与WPF(Windows Presentation Foundation)越来越趋于一致化(参阅WPF4 新特性),而两者代表着微软未来主流的B/S与C/S技术,精通其中任意一个就意味着两者都已掌握,这对于新技术的学习者来说非常具有吸引力(关于两者的适用情况可参考这篇文章:WPF与Silverlight:为项目选择最佳技术)。
2)多语言开发:可使用除VC++外(未来极有可能在一定范围内得到支持)的任何.NET平台语言如C#、VB、F#(F#现在已经支持Silverlight 4)等进行开发,在VisualStudio、Blend等强大开发工具的帮助下实现多语言代码无逢衔接。(例如:用VB写的函数可以在C#写的类中直接调用;FLASH用AS,JavaFX用JAVA,HTML5用Javascript,而Silverlight却可以同时使用多种主流语言协同编程;)
3)效率优势:Silverlight插件中集成精简版的.NET框架,在强大的类库支持下,企业能借此东风更高效率的研发一切应用程序。
4)性能优势:C#或VB强大的图形界面交互设计能力配合上F#并行计算特性可以打造性能一流的RIA应用程序,这也是Silverlight超越所有RIA的最大优势。
5)前途无量:就如同它的名字一样,Silverlight一路走来随伴随着波澜跌宕,却勇往直前;据最新消息显示,微软将破天荒的将Silverlight完全开源,这是传说中代码吝啬鬼微软前所未有的举措,然而我们更能从中看到微软对雄霸RIA界的决心!
综上,Silverlight在RIA界拥有力压群雄之势,优秀的开发效率和产品性能终有一天会引领它走向技术之颠!
三、Silverlight案例演示
在正式切入主题前让我们先来感受一下Silverlight技术现在&将来给我们带来的巨大震撼:
1)Silverlight官方网站:www.silverlight.net
官方网站里收录了海量的Silverlight应用展示Demo,教学视频以及全世界的Silverlight高手齐聚的论坛,你所需要的一切资源都可以从官方网站搜罗到。
2)基于Silverlight开发的Bing Map - 下一代的地图技术在微软而非Google
(引文:http://blog.sina.com.cn/s/blog_61fe7eac0100hipw.html)
在TED2010上,来自微软的Blaise Aguera y Arcas展示了全新的结合虚拟现实体验的Bing地图技术震撼了在场所有观众。如果你还在感慨Google街景,那么看看这个吧,看看他们怎样把流畅的街景技术和实时动态影像、天文景观结合在一起。让用户仿佛徜徉在异国他乡。街景也不再局限于街道,在一个小市场里,你可以看到你朋友拍的照片动态匹配到他曾经所看到的位置上。这种能够将影像和地图街景动态匹配的技术非常炫,不久的将来它将会出现在Bing里面。目前看来,整合了silverlight技术的Bing Map将会对Google Maps最终形成非常大的挑战。
3)WPF版QQ2010在Windows7的触摸技术下眩酷夺目
QQ 概念版是利用微软最新一代的客户端展现层技术--WPF,精心打造的创新型IM产品。
Silverlight QQ 测试版
4)国内第一款WPF开发的多触摸地理定位系统(GIS)
4)其他企业级应用
PPTV Sliverlight 版
新浪财经 使用地址
口碑网百宝箱
江苏卫视在线直播
以然胜甲 SE系统
……
5)网页游戏领域
①中游在线 国内最棒的Silverlight网游开发团队之一,目标:让中国的Silverlight技术领先世界1年!
②雷神之锤(演示) 3D方面在未来将得到极大支持
③Dark Ieign 堪比红色警戒2,效果一流
④54竞技馆
……
最后是作者本人编写的Silverlight游戏Demo,在线演示地址:http://silverfuture.cn/
四、Silverlight游戏开发前景
据相关统计,2010年或将是中国网游人才年,中国未来网游人才的缺口将越来越大,这对于网游开发者来说前景一片大好;未来需要敏锐的预测,而机遇则更离不开瞬间的捕获,识时务者为俊杰,唯做到者方能成功。
十多年来,国内网络游戏的发展如雨后春笋般迅猛,随着游戏画质与效果的不断提升,以往的有端网游(C/S)客户端容量都呈现几何上升趋势;例如国内经典的《大话西游》《梦幻西游》《剑侠世界》等系列2D网游的客户端都是上 1G 的,而玩家熟知的3D网游《永恒之塔》安装后客户端更突破 10G 大观;基于有端网游这一弊病,无端网页游戏在近些年来开始迅速串红,玩家只需打开浏览器即可玩到网络游戏,不用再耗费几小时甚至1天的下载等待,也无须在每台机器上都重复重复再重复的花上几十分钟进行拷贝、安装庞大的游戏客户端,因此无端网游必将成为现在乃至未来高节奏生活下人们的高效率娱乐模式之一,而《开心农场》之类的Web小网游就是最典型代表。伴随着各种RIA技术的不断更新、进步,多核高CPU配置的电脑逐渐普及,Web网游不再仅仅局限于小游戏或单调的策略类SLG;09年开始各种回合制、即时类Web-RPG网游逐步蓬勃发展,兼备即上即玩的原则,它们以更大的优势在侵蚀着有端网游的地盘;这并不是投机,而是顺应人类历史、科技进步的步调在成长壮大,而Silverlight就是在这样的环境下成长起来的。
预计,未来Silverlight网游将出现大规模井喷现象,因为有无数像我这样长期致力于深入研究Silverlight游戏开发的Fans们在为大家默默的服务着,我们有着共同的目标:用Silverlight打造性能一流Web网游。我们也有着同样的梦想:在亲手研发的网络游戏中驰骋沙场,真乃快哉!
接下来的几天,我将引领大家走进Silverlight MMORPG游戏开发这座华丽殿堂,一同体验那惊心动魄而又让人流连忘返的探秘之旅 – 当大家满载而归时,别忘了把Silverlight告诉你身边的朋友:其实游戏开发可以很简单的。
辅助资料:Microsoft Silverlight 4 脱机文档 (简体中文)
准备工作:创建游戏解决方案
1、新建Silverlight游戏项目
打开VisualStudio2010(以下简称VS2010),依次点击:文件->新建->项目,找到Silverlight节点并选中,然后在右侧的模板中选择“Silverlight应用程序”,设置好相应的项目创建路径并为该项目取名后点确定(这里我为该项目取名叫Game);此时VS2010还会提示我们选择Silverlight网站类型,直接点击确定使用默认配置即可。
2、解析Silverlight项目结构
在“解决方案资源管理器”中可以看到我们刚才新建的“Game解决方案”包含有两个字项目,分别为:Game和Game.Web。Game项目是Silverlight应用程序项目,默认包含两个文件:App和MainPage。App的作用是程序启动入口及全局资源配置管理,它继承自封装 Silverlight 应用程序的Application ,其中App.xaml.cs文件记载着程序的启动、离开及错误处理:
public App() {
this.Startup += this.Application_Startup;
this.Exit += this.Application_Exit;
this.UnhandledException += this.Application_UnhandledException;
InitializeComponent();
}
App.xaml则主要用于编写界面全局样式等(同学们可以查阅下Application.Resources还有其他什么作用):
<Application.Resources>
</Application.Resources>
MainPage是默认的程序主控件,在App.xaml.cs文件的启动事件中记录了整个项目是通过MainPage的实例来启动的:
private void Application_Startup(object sender, StartupEventArgs e) {
this.RootVisual = new MainPage();
}
MainPage就好比网站中的Index或Default,它是Silverlight程序的入口处(MainPage其实就是一个用户控件,我们可以通过在Game项目上点击右键->添加->新建项->Silverlight用户控件的方式创建一个一模一样的该对象)。
Game项目是Silverlight应用程序项目,那么Game.Web项目即是承载该应用程序的网站载体,Game项目编译后生成的Game.xap文件即保存于Game.Web项目中的ClientBin文件夹下。Game.Web是一个典型的ASP.NET网站,Web.config让我们倍感亲切。项目自动生成的模板中包含有Default.aspx、GameTestPage.aspx、GameTestPage.html这3个页面,其中Default.aspx是Code-Behind的ASP.NET网站页面,GameTestPage.aspx为单独的ASP.NET页面,而GameTestPage.html则是最简单的静态页面。不难看出微软想告诉开发者们:Silverlight作为网页插件,只需在页面代码(HTML)中通过<object>……</object>方式进行标记即可呈现而不论是动态的还是静态页面亦或是何种类型网页。大家可以根据自己项目的需要,在相应的页面文件上点击右键->“设置为起始页”即可。例如,我暂时不需要额外的动态功能,那么我可以选择通过静态页的方式去展示我的Silverlight应用,接下来我完全可以删除掉Default.aspx和GameTestPage.aspx,然后将GameTestPage.html改名为Index.htm并设置其为起始页一样是OK的:
接下来打开Index.htm文件,首先把代码最下面那个 “(&)”符号删除掉;接着找到<object>……</object>这段,其中表示Silverlight应用程序路径的关键代码就在其中:
<param name="source" value="ClientBin/Game.xap"/>
另外我们还注意到这么一段Js脚本:<script type="text/javascript" src="Silverlight.js"></script>,路径指向Game.Web中的Silverlight.js文件,其实Silverlight.js不过就是通过javascript脚本动态操作页面DOM结构,在指定的DOM节点处生成HTML元素来调用Silverlight ActiveX plugin,或者在该位置生成提示安装Silverlight plugin的HTML元素。说白了就是在网页中解析Silverlight用的。
3、小结
到此,包含两个项目的Game解决方案似乎已不再有任何秘密了,透析其每个部位对于我们后面更深入的进行游戏开发打下坚实基础,因此这个过程是非常必要的。
4、课后作业
在网上搜索Silverlight的发展史,了解Silverlight相比其他RIA的优势在哪?(并行计算、GPU高性能可控加速、强大的开发工具支持如VS系列、Blend系列等等)。