

我所知道的Silverlight开发的在运营的商业网络游戏,貌似是一款都没有,当然,有个魔兽世界在做。还有其它好几款,不过都没有正式商业运营。这不能代表Silverlight比as3差。公平的说,Silverlight略胜 as3, 长远的说,大胜 as3.大部分情况下,使用silverlight 和 as3 开发的都是2d, 或所谓 2.5d 的等角游戏,在基本效率上,2者是半斤八两,如果有人说 silverlight 快过 as3 多少多少倍,那绝对是瞎说。在我看来,as3 的优势在于市面上不少成品,设计人员比较容易找(这里指UI设计)。劣势是相对as3程序员较少,并且开发工具实在是不如vs.silverlight的优势在于,有大量的.net开发人员,这些人如果有丰富的c/s开发经验,或wpf经验,学习silverlight非常快。另外,如果团队小,人员吃紧,还可以调用客户端的去开发服务端。as3 可开发不了游戏服务器啊。当然,劣势在于设计人员非常难找,会使用Blend的人设计人员太少。下面正式说客户端。我看过魔兽世界部分代码,我比较佩服其开发人员,的确很周到和仔细,可能之前有过相关经验。但是,我认为毛病也是非常明显的,魔兽世界是一个典型的面向对象设计,重重继承,跟踪1个类到其基类,竟然继承了10多级。如果是自己开发,并自己维护,可能无所谓,如果有天自己干累了,想让别人接接手,估计那人就痛苦了。一些游戏开发书籍上,以及很多游戏,比较流行的方式是组件式设计。颇有代表性的像游戏《孢子》。组件式,故名思意,就是像积木一样组合起来。有点插件系统的性质。这种好处是显而易见的,容易修改,还容易做相关编辑器。组件设计的原理是这样的,所有客户端里的游戏对象,有1个对象id,如果这个对象可视,就为这个对象增加1个可视组件,如果可被攻击,就为这个对象增加1个攻击组件。当然,我们有1个组件管理中心来负责游戏对象的功能注册。这种设计一个无法绕过的缺点是,需要频繁的进行组件功能查询。不过,作为1个客户端,实际上同一时间内没有太多对象,所以,这里完全没有性能上的忧虑。我的核心设计主要如下
额,比较臭美的用System结尾NetWorkSystem: 网络库,其内部结构为
有些臃肿,主要是我从服务端通讯模块里“扒”出来的。这个结构,要偷偷汗颜一下,大部分从某开源里学习的,内部做了一些改进。Silverlight MMO 游戏与传统的客户端游戏都是使用Socket进行通讯,通讯的过程就像用快递送东西。举个例子,你的公司如果是个游戏客户端,你是游戏里的英雄角色。如果有你的快递,会是个什么情况?------快递送东西送到前台,前台并不认识你。1。也就是说,你首先得告诉前台你是谁,那部门的,坐哪个位置,分机号多少。2。你的快递包裹到了,前台查了下人员名单,发现和你名字很像,于是打电话让你取掉。3。你获得包裹,拆开看看,发现是报销发票,于是你就送到财务去报销去了。 设计思路就是1 2 3 4 5 6 7 | /// <summary> /// 接收消息接口,所有需要从网络接收消息的对象需要继承此接口 /// </summary> public interface IReceive : IComponent { void OnNetMessageArrive(ushort MessageID, byte[] Message); } |

其代码为:



长按二维码,关注我们

新睿云,让云服务触手可及
云主机|云存储|云数据库|云网络







点击“阅读原文”参与活动
本文分享了一位游戏开发者的实战经验,详细介绍了使用Silverlight开发大型多人在线(MMO)游戏的过程,包括网络库、组件系统、渲染系统、资源管理、场景管理和脚本系统的设计思路。
1420

被折叠的 条评论
为什么被折叠?



