Silverlight开发MMORPG游戏研讨(2):同一个世界,不同的认识

上一节的演示改编于深蓝色右手的场景编辑器。深蓝色右手的设计思想是:"一切都源于我们这个真实的世界"。没错,人类的使命就是不断的认识这个世界,征服和改造这个世界。客观世界只有一个,但是每个人的主观感受和认识千千万万,表述也各自不同。很难说哪个世界观更正确,只能说每个人各自用自己的方式来实践这个世界,没有最好的,只有更适合自己的。这一节将解释上一节Xaml布局的三个基本的层。

 

三个基本的层

 
这里所说的层,可以理解为容器或载体。通过参考深蓝色右手的设计,作者根据自己的理解在上文提出了游戏布局的三个基本的层:游戏窗口(gameWindow),游戏地图(gameMap)和游戏坐标系(gameCoordinateSystem)。除了这三个层,当然还有一些其他的层,例如浮动窗口,地图遮罩等,但只是辅助或装饰作用的。游戏的主要表现和逻辑,都是以这三个基本层来实现的,待作者一一道来。
 
首先是游戏窗口,实际上就是游戏者能够看到的游戏的部分。游戏的地图可能很大,但是游戏者永远只能看到游戏窗口大小的一部分。所以说,游戏窗口定义了游戏的可视部分,它只是一个窗口,仅此而已,除了高度和宽度,不需要任何其他属性和方法,它永远在布局框架的最底层,把游戏地图的一部分展示给外界。在实现上,Canvas就足够了。虽然简单,意义绝对重大。
 
游戏地图顾名思义承载着某个场景的全景地图,也就是给玩家带来视觉冲击和享受的部分。这一层存在的意义主要有三。其一已经说了,是全景地图的载体。其二通过游戏地图层相对于游戏窗口移动,实现地图的滚动效果,即玩家可以通过游戏窗口看到游戏地图的不同部分。其三,它还是游戏坐标系的载体。
 
游戏窗口和游戏地图属于游戏表现方面,而游戏逻辑方面主要由游戏坐标系层来实现。游戏坐标系和游戏地图是绑定在一起的,游戏精灵在游戏地图上移动,对于程序代码而言,真正有意义的实际上是脚下的坐标。游戏地图再美轮美奂,很遗憾,程序员是不需要看到的,知道坐标就足够了。所以说,游戏坐标系层是开发者大展手脚的地方,游戏的逻辑几乎全部在这里进行。精灵,魔法等游戏实体的动画逻辑都在这一层来实现。
 
理解了上面的三个基本层,游戏布局的大致骨架就清晰了,后面的工作也就明确了。
 

类的关系

 
针对游戏中的每个实体(Entity),例如各个层次,精灵等,都需要一个类来表达,各个类之间又存在着继承的关系。面向对象编程,需要先定义出这些类来。作者思维比较追求简单,不太习惯复杂的方式。优点是解决问题直来直去,简单明确。缺点是对付一些小项目还可以,对复杂项目缺乏掌控能力。
 
首先定义游戏的基类GameObject,继承于Canvas。游戏框架中每个实体都有一个物理坐标,或者称为窗口坐标。这个坐标是三维的,不但有x,y,还有z (Index)。游戏是多媒体的,图片和声音当然是需要的,虽然不是每个实体都会用到这两个属性,但是定义到GameObject里还是很方便的。唯一一个例外不是继承GameObject的就是游戏窗口,前面已经讲过,因为它太简单, Canvas就足够了。
 
游戏地图类(GameMap),游戏坐标系类(GameCoordinateSystem)和浮动窗口类等容器类都是直接继承自GameObject,具体就不说了。
 
另外一个重要的类是GameCoordinateObject,继承自GameObject。它是游戏坐标系层上所有实体的基类。比较重要的属性包括定时器,游戏坐标(或逻辑坐标)。精灵等类就是继承自GameCoordinateObject。
 
这里需要说明的是游戏坐标和物理坐标的关系。深蓝色右手已经在他的教程中介绍了很多,并给出了转换公式。作者只是再稍稍多解释一些。物理坐标的作用是确定游戏中各个实体的物理位置,就是相对于游戏窗口的位置,属于游戏表现范畴,或者说是玩家实际看到的位置。而游戏坐标是精灵运动的算法和动画依赖的逻辑坐标,属于逻辑范畴。举个例子,当鼠标点击到地图的某个位置,首先得到的是地图上的物理坐标,必须把这个坐标转换为精灵寻径算法需要的游戏坐标。通过寻径算法,计算出精灵动画的路径。注意这个路径的坐标是游戏坐标,如果需要在窗口中显示出来,必须要转换回物理坐标才行。也许有朋友要问:为什么费这么大力气用两套坐标系,转来转去多麻烦?作者偷 个懒,看看深蓝色右手的教程就明白了。
 
除了实体类,还定义了一些静态帮助类,例如两套坐标的转换方法,动态下载等。当然有些可以直接定义到实体类里。不过作者更倾向于把一些关系不是很紧密,功能相对比较独立的方法剥离出来,让实体类苗条一点,好看一点。
 
 
读者看到这里,可能会有疑问:没有看出你的东西跟 深蓝色右手有本质的不同啊?没错,作者只不过是参考深蓝色右手,并根据自己的理解重新表述出来。作者想要强调的是,别人的东西再好还是别人的,只有消化吸收了,用自己的方式表达出来,才能成为自己的东西,为自己所用。这也许是北冥神功跟吸星大法的根本区别吧! 

转载于:https://www.cnblogs.com/erichan/archive/2010/03/22/1691319.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值