2009年7月30日
摘要:战斗即将开始!要实现MMORPG中的攻击系统,必须为精灵增加相关的参数及属性,这些内容及它们之间的牵连关系设计决定着游戏的新颖度与耐玩性;就好比当年的传奇,系统再普通不过了,但是却因为有着恰如其分的系统参数设定与完美的世界观定位,成就了一代不朽巨作。那么本节开始,我将首先对精灵控件进行属性完善,使之具传统经典游戏中的角色属性。 阅读全文
posted @ 2009-07-30 20:52 深蓝色右手 阅读(8492) 评论(27) 推荐(13) 编辑
  2009年7月24日
摘要:在标准的MMORPG中,每个精灵对象都占据着一块区域(脚底的一块小面积),该区域同样是障碍物系统中的一部分,并且它是动态的,随着精灵的移动而时时变化着。实现游戏中动态的障碍物构建使障碍物系统趋向完美是全面进军战斗系统的必要前奏,大家不想看着主角和怪物叠在一起打来打去吧? 阅读全文
posted @ 2009-07-24 09:58 深蓝色右手 阅读(7512) 评论(30) 推荐(10) 编辑
  2009年7月18日
摘要:希望热爱WPF/Silverlight技术的朋友能踊跃加入进来,为团队添砖加瓦,将您的优秀文章与我们分享。 未来是大家的!只有共同努力,才能丰富我们的明天。大家可以在本文的评论中留言申请加入,格式参考如下;前提是您必须为博客园用户,否则是无法加入的,同样也是无法发表文章的... 阅读全文
posted @ 2009-07-18 23:56 深蓝色右手 阅读(7035) 评论(233) 推荐(13) 编辑
  2009年7月16日
摘要:目前游戏的开发进度已经基本实现了精灵对象之间的普通交互,接下来我们需要朝着实现战斗系统的目标前行。而实现它的前提是必须完善精灵控件的基本属性,如添加生命值、魔法值、活力值、经验值等基本属性并通通过窗体界面进行完美体现,本节我将为大家讲解上述内容的具体实现。 阅读全文
posted @ 2009-07-16 19:47 深蓝色右手 阅读(8956) 评论(27) 推荐(22) 编辑
  2009年7月11日
摘要:怪物们都出现了,如何选中自己心仪的怪是主角目前首要做的事。HitTest功能强大到几乎无所不能,它是我们实现打怪与施放魔法的前提条件。为了进行鼠标状态区别,我首先对鼠标变化规则进行约束:当鼠标在屏幕上空旷地图区域移动时,鼠标光标形态表现为默认光标... 阅读全文
posted @ 2009-07-11 14:46 深蓝色右手 阅读(12863) 评论(20) 推荐(4) 编辑
  2009年7月9日
摘要:游戏的精灵框架到此为止算告一段落,让我们一同来体验它带来的神奇效应。 一个安静的黄昏,主角悠闲的甩着它帅气的毛发独跑于林阴大道。怎知天色已晚即将进入月亮的领地,嘿嘿,我们的故事就从这里开始:Be careful,前方怪物出没! 实在不忍心让主角空有一身武艺而无处施展,本节为了不再让它孤单,我将向游戏中加入可爱的妖精妹妹与之为伴 阅读全文
posted @ 2009-07-09 21:05 深蓝色右手 阅读(8055) 评论(24) 推荐(4) 编辑
  2009年7月7日
摘要:上一节中曾有提到,检测系统架构是否合理的评判标准之一就是系统的拓展性。在.NET网站应用中,一个优秀的架构可以在不同数据库之间相互转换,可以与不同的银行接口轻松对接,可以随意集成各种插件,而实现这些仅仅需要对局部进行小小手术而已;同样的,在游戏设计中,窗口化与全屏化的自适应完美切换同样是对游戏架构合理性的严肃考验,Are you ready? 阅读全文
posted @ 2009-07-07 22:29 深蓝色右手 阅读(9965) 评论(19) 推荐(5) 编辑
  2009年7月5日
摘要:上一节,我将游戏地图模式进行了一次重大的变动,这在实际开发中意味着项目大规模重置,虽然表面上显得游刃有余,仅仅一个AllMove()方法的改变即实现了完美转型,这全得归功于前20节所搭建起的相对高度可扩展平台。但是,随着开发不断深入,我慢慢的感到些许的不安,因为代码上的日益松散与结构的渐渐稀疏如同Windows系统的磁盘碎片与日俱增,未来维护时的烦琐与痛心疾首已历历在目。代码向我发出了求救信号,用什么来拯救你-我的代码?是时候亮剑了 –- 我的第一次亲密重构。 阅读全文
posted @ 2009-07-05 14:31 深蓝色右手 阅读(8928) 评论(19) 推荐(3) 编辑
  2009年7月4日
摘要:是否期待了很久?本节就来个重量级的做为开场白吧:主位式地图移动模式。何谓主位式地图移动模式,即以主角为中心,它的移动带动着所有对象包括地图、物体对象、其他玩家、怪物等等的相对移动,这些对象的移动都是以主角为参照物的。最典型例子莫过于当前流行的MMORPG了,你控制的角色在地图中永远是处于窗口正中心的位置(除了8个角落外),这就是主位式地图移动模式(如下图)。 阅读全文
posted @ 2009-07-04 12:41 深蓝色右手 阅读(9790) 评论(31) 推荐(4) 编辑
  2009年6月30日
摘要:写了20节,一路向追着鬼子打一样都没停过,索性也想暂时休息一下整理整理思绪好完成后面的第二部分更为精彩的内容:诸如跟随式地图移动模式、NPC & 怪物 与主角的互动、对象AI、攻击与魔法、各种类型伤害计算、完美的RPG游戏界面……等等等等,激动吗?讲实话:我很激动! 阅读全文
posted @ 2009-06-30 16:28 深蓝色右手 阅读(10348) 评论(64) 推荐(9) 编辑
  2009年6月27日
摘要:举个例子:当精灵在跑步的时候FrameCounter从5开始记数,然后以1为单位阶梯推进,目标是12,当到了12后再返回5继续重复前面的过程;当精灵在施法的时候,FrameCounter从20开始记数,然后以1为单位阶梯推进,目标是25,当到了25后再返回20重复前面过程。其他的以此类推…… 阅读全文
posted @ 2009-06-27 21:58 深蓝色右手 阅读(9942) 评论(30) 推荐(3) 编辑
摘要:紧接着上一节,首先得解释一下为什么需要将这272张图片合成为一张大图。因为如果游戏中还有装备、坐骑等其他设置,那么我们就需要对图片源进行时时的合成;同时对272张甚至更多的图片进行合成效率高还是对2张大图进行合成效率高这是显而易见的。在本节例子中,主角由身体(衣服)及武器两个部分组成;因此,我们还需要定义一个交错数组来保存已经加载的角色装备合成图到内存中: 阅读全文
posted @ 2009-06-27 13:59 深蓝色右手 阅读(9672) 评论(24) 推荐(4) 编辑
  2009年6月26日
摘要:通过第十四节、第十五节的学习,我们掌握了如何创建一个初具雏形的精灵控件。目前我已经赋予了它少量的属性,但是离完美还有很长的距离。因此,我打算在后面的章节中以辅助游戏设计为前提,对该精灵控件进行全方位的包装,使之更加趋于完美与和谐(^-^||) 阅读全文
posted @ 2009-06-26 20:11 深蓝色右手 阅读(13192) 评论(23) 推荐(6) 编辑
  2009年6月23日
摘要:精灵控件让游戏开发更美好!有了它,离完善牵引式地图移动模式可谓一步之遥。只剩下最后一个环节了,大家加油吧。 上一节,我在界面线程中通过时时设置Canvas.SetLeft(Spirit, mapleft + Spirit.X);和Canvas.SetTop(Spirit, maptop + Spirit.Y);来实现主角跟随着地图移动。从该公式我们可以分析出影响主角在窗口中显示位置的两个因素:第一个... 阅读全文
posted @ 2009-06-23 22:34 深蓝色右手 阅读(9786) 评论(7) 推荐(6) 编辑
  2009年6月21日
摘要:紧接着上一节,我们打开QXSpirit.xaml.cs文件。在游戏设计中,为了能够轻易控制及管理精灵的各项属性及功能等,我赋予每个精灵一个专属线程,它在精灵的使用中起到关键作用,DispatcherTimer线程的创建在前面的章节中见得不要太多,这里不再累述了。那为何要在精灵控件中配置一个线程呢?打这样一个比方吧:我们可以把精灵比做一个人,它的生命就好比这个线程,每个人只有一条命,在精子与卵子结合之后(控件的初始化中创建),生命即开始鲜活(创建后即启动)简单说就是“命悬一线”啦。汗一个…。 阅读全文
posted @ 2009-06-21 21:20 深蓝色右手 阅读(11236) 评论(16) 推荐(3) 编辑
摘要:如果有做过游戏开发的朋友,或者说有了解过游戏开发相关内容的朋友一定会发现,游戏中除了地图引擎外,最关键的莫过于精灵的创建。精灵是游戏中大家见得最多的对象物体,它可以是主角,可以是其他玩家,可以是NPC,可以是怪物及BOSS,甚至可以是坐骑、障碍物等等。很多初学的朋友往往在为如何使用外国人制作好的通用精灵而发愁(毕竟繁杂的英文专业术语及超量的对象属性及方法是大多数人无法轻易弄通的)。幸运的是,在WPF/Silverlight中我们可以找到强大且使用简单的相关支持,它就是下文中我将详细讲解的传说中的精灵控件! 阅读全文
posted @ 2009-06-21 16:31 深蓝色右手 阅读(14785) 评论(17) 推荐(5) 编辑
  2009年6月19日
摘要:在前面诸多的章节里,我就地图构造的实现做了讲解,至此还遗留着一个关键问题:在游戏中是角色在移动还是地图在移动?它们之间的移动(位移)关系是如何实现的?那么在接下来的章节中我将围绕这两个问题进行详细的分析解说。首先,还得从游戏模式开始说起。目前2D俯视游戏中以即使战略、SLG、RPG(ARPG)等类型的游戏为主流。在即时战略、SLG大地图中,地图的移动原理是:当鼠标处于游戏窗口的8个边缘时,地图即开始移动,我暂且称之为地图牵引移动模式... 阅读全文
posted @ 2009-06-19 22:39 深蓝色右手 阅读(13415) 评论(43) 推荐(6) 编辑
  2009年6月17日
摘要:前面几节详细的讲解了游戏地图的完整构造,比较有难度的就是关于地图内层如障碍物的实现了。A*算法往往能让众多的初学者望而止步,斜度α地图则更需要一定的几何知识及抽象思维。很多朋友就问了:什么年代了,现在都在说面向对象、提高开发效率,难道就没有大众化可以让各层次能力的朋友们都能轻松制作地图引擎的方法吗?大家是否还记得上一节中遗留的一个小悬念,杀手涧就是它了:神奇的副本地图 阅读全文
posted @ 2009-06-17 21:17 深蓝色右手 阅读(12832) 评论(31) 推荐(5) 编辑
摘要:通常来说,简单的游戏光有它就足够了;但是为了达到更加真实的光影效果,模拟真实的虚拟世界,我们还得继续在地图上下大工夫。本节将就如何实现地图中的遮罩层,即物体对角色的遮挡进行详细讲解。首先我们来看一张比较完善的地图应该包含哪些内容:我将一张地图引擎结构分成了3层(难道这就是传说中的地图三层架构?)... 阅读全文
posted @ 2009-06-17 21:13 深蓝色右手 阅读(13700) 评论(15) 推荐(7) 编辑
摘要:第一种我称之为伪斜度地图:该类型地图图片为斜度的,但地图基本构造块(障碍物等)则实为正方形。这样的地图可以使用简单直接的地图构造算法(上一节中有详细的讲解),同样也可以拥有漂亮的画面。但是,当大家将之运用到实际游戏运行中将会发现人物在饶过不规则障碍物时会很别扭。当然,如果您能制作出优秀的地图编辑器并且拥有与之默契匹配的地图的话,这些或许不会成为大问题。第二种即为真实的:斜度α地图。下面我将就该类型地图的构造基本原理及其在WPF中基本实现及算法进行讲解... 阅读全文
posted @ 2009-06-17 21:12 深蓝色右手 阅读(15716) 评论(45) 推荐(7) 编辑
摘要:本节将运用前两节的知识到实际的2D游戏人物在地图上移动中,同时也算是对前面八节的内容进行一次综合运用吧。那么我们首先从最底层的地图讲起,首先我们得将一张地图添加进游戏窗口中,这里我们同样使用Image控件... 阅读全文
posted @ 2009-06-17 21:11 深蓝色右手 阅读(19236) 评论(29) 推荐(8) 编辑
摘要:本节再上一节的基础上实现鼠标点击动态创建完美的A*寻路动画。(模拟游戏中人物的真实移动,这次可是有障碍物的,可以说基本上完成了人物移动引擎的一半了呢)首先,在上一节的代码前部分加入一个叫做player的圆形作为我们将要控制的对象(模拟游戏中的主角,下文均称之为“主角”... 阅读全文
posted @ 2009-06-17 21:10 深蓝色右手 阅读(18053) 评论(56) 推荐(15) 编辑
摘要:目前游戏中的寻路最经典的莫过于A*(A Star)寻路了,它是一种寻路思维的合集,那么基于它产生的算法则又有多种,例如曼哈顿启发式算法、对角线取径算法、欧几里德几何算法、最大取值算法等等,不同的算法产生的效果不同:如计算出路径需要的总时间,得到的路径长短优劣等,并且参数的不同也将导致结果的大异。我借助国外一位牛人的A*寻径工具分别通过对各种路径使用各种A*算法来寻径,最终通过花费时间和路径的优美性进行了横向与纵向的比较评分,得出速度最快的算法:曼哈顿启发式算法... 阅读全文
posted @ 2009-06-17 21:09 深蓝色右手 阅读(29070) 评论(59) 推荐(7) 编辑
摘要:经过前面的介绍和学习,我们分别掌握了如何点击鼠标让对象移动,并且实现2D人物的动作动画。那么,如何将两者完美的进行融合呢?这一节的内容将涉及到很多重要的技术及技巧,很关键哦。 那么同样的,前台xaml还是保持不变,接下来看后台C#第一部分... 阅读全文
posted @ 2009-06-17 21:08 深蓝色右手 阅读(23102) 评论(57) 推荐(14) 编辑
摘要:第二种方法我称之为图片截取法,准备工作:这里我以创建主角向右方向施法动画为例。首先需要将10帧150*150的图片通过Photoshop或其他方式合成为一张1500*150的大图。然后将这张图片保存到项目文件夹中的\bin\Debug\文件夹中,为什么必须放在这呢?因为后面的代码中BitmapFrame.Create()函数调用相对路径图片只认该文件夹,为什么?问MS。OK,xaml代码仍旧和前面章节的一样,那么接下来就是后台C#... 阅读全文
posted @ 2009-06-17 21:07 深蓝色右手 阅读(21767) 评论(39) 推荐(10) 编辑
摘要:我们掌握了如何动态创建物体移动动画,那么接下来我将介绍WPF中如何将物体换成2D游戏角色,并通过使用前面所讲的DispatcherTimer计时器来实现2D人物角色的各种动作动画。动态实现2D人物角色动画目前有两种主流方法,下面我会分别进行介绍。第一种方法我称之为图片切换法,准备工作:首先通过3DMAX等工具3D渲染2D的方法制作出角色,然后将角色每个动作均导出8个方向每方向若干帧的系列图片(如果是有方向的魔法图片,很多2D-MMORPG往往会导出16个方向的系列帧图片以求更为逼真),即将每个人物... 阅读全文
posted @ 2009-06-17 21:06 深蓝色右手 阅读(28188) 评论(56) 推荐(11) 编辑
摘要:第三种方法,DispatcherTimer动画,该类型动画与CompositionTarget动画类似,是基于界面线程的逐帧动画,但他与CompositionTarget动画不同,DispatcherTimer动画可以轻松的进行参数设置:xaml界面代码仍然沿用第一节的,那么接下来我们在后台代码中创建相关对象... 阅读全文
posted @ 2009-06-17 21:05 深蓝色右手 阅读(22547) 评论(22) 推荐(12) 编辑
摘要:第二种方法,CompositionTarget动画,官方描述为:CompositionTarget对象可以根据每个帧回调来创建自定义动画。其实直接点,CompositionTarget创建的动画是基于每次界面刷新后触发的,与窗体刷新率保持一致,所以频率是固定的,很难人工介入控制。那么如何使用它?xaml的界面代码还是和上一篇中描述的一样,这里不累述了。那么接下来就是创建对象并注册事件... 阅读全文
posted @ 2009-06-17 21:04 深蓝色右手 阅读(27493) 评论(56) 推荐(5) 编辑
摘要:序:自从QXGame(WPF GAME ENGINE)游戏引擎公布以来,受到很多朋友的热切关注,于是乎有了写教程的想法。那么从今天开始,我将带领大家一步一步的学会如何使用纯C#开发WPF/Silverlight游戏引擎,过程中我会尽量的开源,并对相关小技巧进行解释和介绍,比较复杂的算法原理我会给大家一条绝对可行的思路,至于如何处理这些复杂的算法,那是仁者见仁,智者见智了,或许您写的算法比我的更好呢。 多余的话不多说了,最后来句发自肺腑的话吧:本系列教程的书写编辑花费作者很多心血,没有功劳也有苦劳哇,所以请需要转载的朋友们用突出的字体或颜色标明在您的文章开头,您的大力支持是鼓励我不断写下去的动力... 阅读全文
posted @ 2009-06-17 21:03 深蓝色右手 阅读(58647) 评论(124) 推荐(37) 编辑
摘要:如果您想精通WPF/Silverlight,无论是打算用它来做桌面程序、网站、WP7软件;异或是动画及游戏开发,本教程均非常值得一看。它将颠覆世俗的动画、游戏技术开发理念,由浅及深的引领您在一个全新的银光世界里遨游。 阅读全文
posted @ 2009-06-17 21:02 深蓝色右手 阅读(129177) 评论(166) 推荐(126) 编辑
摘要:花了一个月夜晚时间,就为了自己儿时的一个理想。最近比较看好WPF,所以就用WPF开发了个A·RPG游戏引擎,先发几张截图吧:(特别申明一下,游戏里面用了很多其他网络MMORPG的素材,如地图是金庸的,主角是破天一剑的,怪物是剑侠世界的,技能是轩辕剑5的,此软件只做练习用。嘿嘿,目前完成度20%,但是只要您安装有.NET3.0+理论上应该都可以运行,我的开发环境是.Net3.5) 阅读全文
posted @ 2009-06-17 21:00 深蓝色右手 阅读(28343) 评论(107) 推荐(11) 编辑