摘要:
从网上收集了帧动画的图片,或者自己制作的动画的图片,如何知道这个动画是否像我们预期的那样呢?在网上几乎找不到这种通用的动画测试工具。好在不是很复杂,可以自己动手制作一个。我选择了WPF来开发,因为WPF与Silverlight的语法几乎完全相同,移植起来相当方便,而且Windows平台下开发调试比Web平台也简单的多。以人物行走动画图片为例,第一行为向前走的一系列图片,第二行为向左走的一系列图片,以此类推,第三行向后,第四行向右。测试工具的代码很简单,直接看代码很容易懂,这里就不解释了。简要说明一下使用方法:点击“Open file”导入要测试的动画图片。项目文件夹中包含了一个动画图片(6.p 阅读全文
摘要:
由于网络延迟和轮询间隔的影响,在一个客户端操作精灵运动,其运动结果并不能马上反映到另外一个客户端上,时间上相对滞后一些,造成该精灵在两个客户端的运动不同步。本文试图寻找一个预测算法,从延迟的运动数据来预测真实的数据,从而解决运动不同步的问题。为方便讨论,我们假设以下环境。客户端把自己的精灵运动数据发送给服务器,然后另一个客户端从服务器取得数据。服务器不主动更新客户端数据,必须由客户端发起服务请求,获取数据。所有客户端的时间严格同步,即同时向服务器发送服务请求。设定轮询间隔为1秒,即客户端每隔一秒向服务器发送一次服务请求。忽略网络时间延迟(毫秒量级),假定两个客户端的时间延迟完全由轮询间隔造成。 阅读全文
摘要:
简单的说,游戏中的实体对象指的是地图、精灵等。在设计实体类的时候,最直接的做法就是把所有与该实体相关的数据,方法,事件等封装到一个类中。当需要一个新的实体时,用该实体类创建一个新的实体的对象,然后初始化数据。该设计的主要问题是,实体数据与对象耦合太紧密,在以数据为中心的环境中,不利于实体对象的重用。举例来说,假设下面精灵类:[代码]当客户端从服务器得到精灵数据,需要创建一个精灵对象,并用该精灵数据... 阅读全文
摘要:
服务器与客户端的数据交换涉及大量数据参数和数据类型。对于每次数据交换,数据参数的数量和类型可能都是不同的。举个简单例子,客户端从服务器端获得当前地图的精灵信息,假设某次通信得到10个精灵的信息。下次通信时,假设其中一个精灵被kill了,同时另外9个精灵只是部分信息变化了,我们希望只传输更新了的信息而不是传递所有信息。可以想象,这两次通信的数据参数变化极大。或者说,几乎每次通信的参数都是不同的。如果... 阅读全文
摘要:
在Web环境(HTTP协议)下,服务器端的服务是被动方式的,无法通过定时器来主动处理游戏控制和逻辑。同时每次服务的时间不可以太长,否则将导致服务超时,产生不可预料的后果。Web环境的特殊性决定了其游戏设计与常规客/服环境下的设计完全不同。应该指出,Web环境并不是设计和发布MMORPG游戏的理想选择,独立主机可以提供更好的性能和更简单的逻辑。但是租用Web共享空间的价格远低于独立主机,可以大大降低... 阅读全文
摘要:
上一节比较了Silverlight支持的几种通信方式,结论是:基于纯Web服务器环境,WCF Binary Encoding为首选的通信技术。接下来我们可能会问自己,Web服务器环境是否适合作为承载MMORPG游戏的服务器,能否承载大量的游戏逻辑运算,能否支持几千甚至上万的游戏者的连接以及逻辑处理?架设过私服的朋友可能有体会,在P4上运行传奇的服务器程序,cpu几乎全部被占用,程序切换明显延迟。而... 阅读全文
摘要:
互联网游戏当然离不开通信技术的支持,对于Silverlight,哪一种通信技术最适合开发MMORPG游戏呢?本文通过比较Silverlight支持的几种主要的通信技术的特性和适用环境,选择一款最适合我们的。1 Socket提到开发游戏,性能和速度当然是第一位的,Socket应该是首选的通信技术。因为所有的Silverlight通信技术都是基于TCP/IP的,Socket可以直接控制TCP/IP的连... 阅读全文
摘要:
由于Silverlight游戏内嵌在浏览器页面中,处理好浏览器的控制对于Silverlight游戏的表现十分重要。本节归纳总结了Silverlight游戏开发中可能遇到的一些浏览器相关的问题,并给出解决方案。这些问题包括:如何令浏览器文档窗口最大化,如何防止误关浏览器窗口,用户关闭浏览器时如何通知服务器,如何阻止用户从多个浏览器窗口登录游戏。本来打算用四篇blog来分别阐述,不过每部分内容都不多,... 阅读全文
摘要:
前两节简要介绍了Silverlight和浏览器的交互技术,本节将例举一些这方面的实际应用。1 访问Query StringHttp Get协议中URL可以利用Query String传递参数给Web服务器。从Silverlight也可以访问Query String,例如:[代码]在上面代码中,Silverlight读取URL的Query String中name参数,并显示在text block中。... 阅读全文
摘要:
尽管我们无法决定下个版本Silverlight有哪些新特性,但是可以发出我们自己的呐喊,为我们希望的新特性投上一票。http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/不知道这些建议是否最终被Silverlight开发团队所采纳,不过可以肯定的是他们也在倾听用户的建议和需求,大牛Tim Heuer(开发成员... 阅读全文