历时半年之久如火如荼般的教程编写,在所有朋友的支持与帮助下,本教程的Silverlight移植版终于迎来了开源的日子。心理埋藏着太多牢骚想发泄,但是想想其实又何必呢。所谓内行人看门道,外行人看味道,前进的道路只有虔诚者能领悟。

开源序言:本引擎的所有素材均来源于网络,仅供学习与练习使用,不作任何商业用途。所有代码均为“深蓝色右手”编写,代码所有权归“深蓝色右手”所有,在作者批准范围内使用。目前本引擎的完成度为单机部分的50%功能,后面的教程将接着继续拓展功能,最终的目标是实现100%单机部分功能。到此,我想首先回答一些朋友对本引擎的几点疑惑:

1)Q:Demo动不动就10几M,全部资源都包装在XAP里,那么如果做成正式的商业游戏,岂不是要上百M了?和有端的游戏又有何区别?

A:你可以这样理解,由于作者本人一点都不会Silverlight的通信,包括WebClient,WCF和Socket,因此无法实现动态按需下载所需素材等资源,从而只能使用最原始的方式将所有资源打包到XAP里面向大家展示。

2)Q:《火炬之光》让《暗黑破坏神3》回炉再造,你这游戏引擎差距也太大了吧?

A:如果您着实对Silverlight感兴趣,真心想去学好这门技术,建议您可以从搭建VS2008+SP1+Silverlight Toolkits平台开始,慢慢的一步一个脚印的去学习它。接下来您将从中体验到什么叫C/S和B/S;什么叫有端什么叫无端;并从中总结出Silverlight的应用领域。如果您已经是这方面专家了,坚信C++永远是王者中的王者, 8G 的《永恒之塔》仍旧是您心目中的英雄,Silverlight仍旧欢迎您,VC++是专为您准备的集成在VS2008中的编程语言之一。

3)Q:Silverlight装机量太小了,比起Flash/Flex近90%的装机量差距太大,能为客户所接受吗?再说了,Silverlight目前的性能好象比Flash差很多吧?

A:一个新的技术发展需要一个过程,而这个过程的时间长短取决于这门技术是否将引领技术的革新且推动历史的进程。目前Silverlight最新的版本为3.0,我给它的一句评价是:它已经开始走向成熟。Silverlight开发者可以使用众多的编程语言进行程序编写,例如C#、F#、VB、VC等等,如果说潜在的能参与进来的开发者,比起AS会多太多。就目前的版本来说,Silverlight在内存管理方面已经超越了Flash/Flex,在图形处理方面由于原理不同,无法做出孰优孰劣的比较,特别要提的是Silverlight中的Storyboard由于使用大量的double,在平滑动画时消耗了过多的CPU,以及HLSL还无法激发GPU渲染(就好比您拔掉独立显卡玩魔兽—体验的是CPU的心跳)而暂时不能大规模使用等等因素的存在,Silverlight在图形处理方面的改进还有很长的路要走。

至于装机量方面,我们每天都会收到好消息, MS在做到不垄断市场的前提下,从多角度对Silverlight进行推广,MSN的首页即将改版了,Flash将从此消失在MSN平台上。用MS的国语讲:我高兴我爱。

4)Q:目前该引擎的性能是否算是Silverlight所有RPG类型游戏引擎里最好的?

A:Silverlight的RPG游戏引擎目前也仅看到几个相对比较完整的,当然有国外的也有国内的。而我觉得我QQ1号群里的很多高手,如nowpaper、goods、内裤超人、潮州人等还有几位都做了Silverlight RPG游戏,他们做的性能都不错,比国外的会好很多,而且图形方面的处理方式各不相同,构思巧妙,时常让我眼前一亮。在大家的帮助下,我用了近一个月的时间对此引擎进行优化优化再优化,重构重构再重构;直到今日,仍然还有几处是可以大幅提高性能的优化还没做,必须测试过是否会影响到游戏画面流畅度后才考虑相应改进。

5)Q:你这游戏也叫引擎,改名叫游戏基础教程好了,我学两天C#,然后再学两天PS,然后再学两天3DSMAX,然后再学两天网络通信,然后再学两天数学运算逻辑,有空再学两天数据库,花点时间再学两天网页和Javascript就会做了,简直小儿科一个。

A:这里有篇关于引擎的介绍资料我觉得写得非常详细,建议大家也能抽时间看看。里面有句话特别精辟,它概括了不论是运行在何种平台上的一个游戏引擎应该具备最直观的充要条件(第十四段):通过上面这些枯燥的介绍我们至少可以了解到一点:引擎相当于游戏的框架,框架打好后,关卡设计师、建模师、动画师只要往里填充内容就可以了。

小的填充我就不讲了,下面我将模拟实际开发过程,通过添加一个新魔法和一张新地图来论证QXGameEngine是否是引擎:

一、添加一个新魔法:

①设计师首先用工具绘制出魔法动画,然后导出序列帧,并按如下规律命名好这些图片:

②打开QXGameEngine项目,展开Image/Magic文件夹:

观察里面已经有6个魔法了,那么我们需要添加一个新的文件夹取名6来存放第7个新魔法素材,并将①中的新魔法序列帧图片添加进去,然后修改它们的属性如下:

③打开Config文件夹中的Setting.xml配置文件,为该代号为6的魔法添加如下一段配置信息,前面的教程已经对这些信息进行过详细讲解,具体包含魔法的类型、伤害半径、伤害值、附加属性、各种其他参数等数据(每个属性名都写得很清楚,大家可以从中明白这些属性的意义):

<Magic Code="6" Mode="" HasDirection="false" EndFrame="9" EffectiveFrame="1" BodyWidth="212" BodyHeight="220" Radius="110" CenterX="105" CenterY="145" AdditionalEffectCode="4" DecorationCode="-1" DecorationWidth="-1" DecorationHeight="-1" DecorationEndFrame="-1" DecorationType="">

<Level Value="1" ATK="70" Consumption="3" AdditionalEffect="10" AdditionalEffectTime="5"/>

<Level Value="2" ATK="80" Consumption="5" AdditionalEffect="20" AdditionalEffectTime="5"/>

<Level Value="3" ATK="90" Consumption="7" AdditionalEffect="30" AdditionalEffectTime="6"/>

<Level Value="4" ATK="110" Consumption="10" AdditionalEffect="40" AdditionalEffectTime="6"/>

<Level Value="5" ATK="130" Consumption="13" AdditionalEffect="50" AdditionalEffectTime="7"/>

<Level Value="6" ATK="150" Consumption="16" AdditionalEffect="60" AdditionalEffectTime="7"/>

<Level Value="7" ATK="180" Consumption="19" AdditionalEffect="70" AdditionalEffectTime="8"/>

<Level Value="8" ATK="210" Consumption="22" AdditionalEffect="80" AdditionalEffectTime="8"/>

<Level Value="9" ATK="250" Consumption="26" AdditionalEffect="90" AdditionalEffectTime="9"/>

</Magic>

④打开MainPage.xaml主界面文件,添加该魔法测试菜单选项:

其中Tag属性值对应该魔法的代号,Content即为该魔法显示的名字。

仅用这4步即实现了一个新的魔法添加,而且无须改动一句逻辑代码,简单吗?我已经将此新魔法的素材放到了开源的引擎源码压缩包中,强烈建议大家参照以上的步骤一步步尝试去做,从中您将体会到该游戏引擎给您的游戏开发带来的便利与快捷。运行效果图:

二、添加一张新地图:

①打开本教程的地图编辑器(您可以到本教程目录中下载,带源码),然后点击“载入地图”将设计师画好的地图(该地图尺寸1600*1200)导入进去,然后我们将切片的尺寸设置为400*300,并通过绘制障碍物功能描绘地图上的障碍物(这里我随便绘制了一些,仅作为实验用):

②点击“导出障碍物”按钮,编辑器将导出一个xml文件,里面记录着我们在该地图上描绘的障碍物位置信息:

再点击“导出地图切片”得到该地图的切片图片:

③打开QXGameEngine项目,打开其中的Config/Setting.xml文件,我们首先为主角默认出现的地图添加一个传送点,用于将主角传送到新地图(代号为3)上:

<Teleport Code="" FrameNum="8" Tip="荒野战场" Key="11" To="3" ToX="800" ToY="1015" ToDirection="3" X="4500" Y="3500" BodyWidth="128" BodyHeight="100" CenterX="64" CenterY="50"/>

然后添加该新地图(“荒野战场”)的切片到Image/Map/3/Surface/图片资源文件夹中:

接着为Setting.xml文件添加该新地图的配置信息:

<Map Sign="3" Obstruction="">

<Surface Width="1600" Height="1200" GridSizeX="10" GridSizeY="10" SectionNum="9" SectionWidth="400" SectionHeight="300"></Surface>

<Masks />

<Sprites />

<Teleports>

<Teleport Code="" FrameNum="8" Tip="长安郊外" Key="10" To="" ToX="4250" ToY="3400" ToDirection="7" X="600" Y="600" BodyWidth="128" BodyHeight="100" CenterX="64" CenterY="50"/>

</Teleports>

</Map>

这里要注意了,我们通过步骤②获取的障碍物信息写在第一行的Obstruction值里,那么最后的信息如下:

OK,完成了,同样没写一句逻辑代码,添加的仅仅是配置信息,测试效果截图:

至于其他对象的添加同样非常容易,比如如何添加新的怪物,这些内容在前面的教程中都讲烂掉了。添加新的特效,我们只需将特效序列动画帧图片放入对应的Image/Item文件夹中,然后通过实例一个QXDecoration控件即可,例如我只需要在角色升级时添加如下一段代码即可实现升级特效:

sprite.ParentCanvas.Children.Add(new QXDecoration() {

Code = 5,

EndFrame = 8,

BodyWidth = 200,

BodyHeight = 160,

CenterX = 100,

CenterY = 100,

Coordinate = sprite.Coordinate,

DecorationType = DecorationTypes.AutoRemove

});

当然,这些代码同样是可以通过Javascript脚本来实现,只需将逻辑封装进方法体内通过Silverlight与Javascirpt的交互来完成。

以上证据是否已足够证明QXGameEngine是一款游戏引擎。当然,它是不成熟的游戏引擎,为什么说不成熟呢?因为教程仍在继续,关注哦。 ^ ^

6)Q:此引擎何时能实现完整的MMORPG网络游戏功能,即包括通信部分;另外对该开源引擎的修改及使用需要符合何种条款?能否用作商业用途?

A:此引擎目前只实现了单机部分的50%功能,后续的教程将在此基础上不断添加新内容,直至实现100%纯2D MMORPG单机功能。至于网络通信部分,我暂不考虑写,这是出于不破坏Silverlight游戏市场而考虑的。

该引擎的所有代码均为本教程作者,即“深蓝色右手”编写,在此我郑重宣布,该引擎包括地图编辑器等的所有源码均可在不违反中华人民共和国法律的范围内使用,但必须在醒目的位置标注:基于QXGameEngine开发或转自深蓝色右手博客等字样,且为这些文字添加相应链接。小小的要求不为难吧?另外关于本引擎开源的目的只有两个:①我曾经的理想;②我希望借此鼓励更多的.NET人加入到Silverlight的开发行列,C#,你们的法宝呀,难道白学了,千万别浪费了呀。

最后,至所有还在Silverlight门外犹豫徘徊的朋友一句话:Silverlight永远不会让您失望,今天不会,明天也不会。

引擎源码下载地址:QXGameEngine

深蓝色右手

2009.11.10

作者: 深蓝色右手
出处: http://alamiye010.cnblogs.com/
教程目录及源码下载: 点击进入( 欢迎加入WPF/Silverlight小组 WPF/Silverlight博客团队)
本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面显著位置给出原文连接,否则保留追究法律责任的权利。

原文链接: http://www.cnblogs.com/alamiye010/archive/2009/11/10/1600011.html

转载于:https://my.oschina.net/chen106106/blog/43663

QXGameEngine:Silverlight – MMORPG游戏引擎开源相关推荐

  1. Silverlight MMORPG网页游戏开发课程[一期] 序言

    本课程Demo在线演示地址:http://silverfuture.cn/ (随课程进度不断更新,所有资源暂时放在xap) 2010年7月20日是一个不平凡的日子,应朋友的邀请在自己的家乡广西师范大学 ...

  2. 原创2D/3D游戏引擎源代码开源

    个人2D.3D游戏引擎开源 早期的作品代码结构较差,对大家造成的误导敬请谅解.我会不断的更新个人作品,请大家始终参考最新的源码.在此感谢热心网友给我提的宝贵意见. (2015.4.12修改:更新了2D ...

  3. 开源图形/游戏引擎的点评

    开源图形/游戏引擎的点评 什么是游戏引擎?举个简单例子,在某游戏中的一个场景中,玩家控制的角色躲藏在屋子里,敌人正在屋子外面搜索玩家.突然控制的角色碰倒了桌子上的一个杯子,杯子坠地发出破碎声,敌人在听 ...

  4. Silverlight MMORPG网页游戏开发课程[一期] 第十课:面向对象的重构

    引言 在游戏的基本功能大体实现后适当的回过头来,重新审视当下的游戏框架并做一些有利于下阶段功能延伸的结构改进,以达到精简代码,优化性能,提高拓展性的目的:这就是本节我将要为课程示例游戏做的一次内科大手 ...

  5. Silverlight MMORPG网页游戏开发课程[一期] 第十一课:战斗系统之脚本与精灵捕获...

    引言 整个游戏的推进工作显得异常顺利,或许之前我们所做的一切都是为了接下来的核心内容打基础:RPG之战斗系统.在踏入这块神秘而又让人的垂涎的领域前,我们迫切需要充实更多的相关知识以适应并更好的处理即将 ...

  6. Silverlight MMORPG WebGame游戏设计(六)-----Server和Client的婚后协议[附上完整15M游戏DEMO]...

    上回说到Server少爷和Client小姐好不容易踏入婚姻的殿堂,洞房花烛之夜,Client小姐却要Server少爷签下婚后协议.Server一脸不快:"都一家人还签什么协议啊?" ...

  7. 两大开源游戏引擎Cocos2d-x及OGEngine对比分析

    在近期的全球移动开发者大会上,触控发布了Cocos 3D引擎:而在差不多同时间,以安卓为主的OGEngine也发布了新版本,并宣布将支持跨平台. Cocos2d-x和OGEngine都是当前比较受开发 ...

  8. 历数2013年优秀的开源游戏引擎与开源游戏项目

    2013年是移动游戏爆发的一年,也是开源游戏爆发的一年!在这里,我们历数一下2013年都有哪些优秀的开源游戏诞生,还有哪些优秀的开源游戏技术解决方案诞生! 开源跨平台2D客户端引擎 Cocos2d-x ...

  9. 开源免费的HTML5游戏引擎

    青瓷引擎的成长 青瓷引擎自2015年4月项目启动开始,7月首次亮相2015年ChinaJoy,便得到业界的极大关注,随后开启限量测试,收到数百个开发者团队的试用申请及反馈,期间经历了18个内测版本,完 ...

最新文章

  1. k8s crd构建方法_告诉您正在构建没人想要的东西的8种方法(以及处理方法)
  2. 怎么使用html及jsp开发,jsp怎么用css
  3. Python基础语法学习笔记
  4. ignite学习笔记
  5. 用top方法查看内存消耗的方法
  6. 零c语言txt下载,C语言问题c-0是什么意思
  7. Chrome运行时性能瓶颈分析
  8. 什么样的程序员会让人讨厌?大家注意,千万不要成为这种程序员!
  9. mint linux qq,linuxmint系统下安装QQ
  10. Linux命令-文件处理命令:touch
  11. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解
  12. 蜗居6个月,苹果漏洞神猎手亮绝招:展示零点击 iOS exploit
  13. Orchard: module开发基础技术知识
  14. 一例JAVA多线程访问卡死的现象
  15. 开始学习docker
  16. Educoder jQuery 入门
  17. C盘快满了,处理一下pagefile.sys文件和hiberfil.sys文件
  18. CentOS 7下atime如何变化的问题(转)
  19. 无法直接在IE中打开PDF文件的解决方法
  20. 程序员眼中的中国传统文化-王阳明《传习录》5

热门文章

  1. Behance 大神推荐2019 年所有设计领域的最新趋势!
  2. php+条形码在线怎么生成,php实现生成code128条形码的方法详解
  3. 进程:system 的使用
  4. rpgmvp图片怎么看_木楼梯装修图片,告诉你怎么安装实木楼梯更好看!
  5. DeepLearning深度学习入门(视频笔记)
  6. 桌面计算机使用技巧,Windows的基本操作方法和技巧
  7. Java练习500题持续更新~
  8. win10+安装Python 3.9.0b4+anaconda3
  9. 宠物店小程序十大功能,让宠物店轻松获客业绩倍增
  10. 热补丁HotFix使用