随笔分类 -  MMORPG游戏开发

摘要:从网上收集了帧动画的图片,或者自己制作的动画的图片,如何知道这个动画是否像我们预期的那样呢?在网上几乎找不到这种通用的动画测试工具。好在不是很复杂,可以自己动手制作一个。我选择了WPF来开发,因为WPF与Silverlight的语法几乎完全相同,移植起来相当方便,而且Windows平台下开发调试比Web平台也简单的多。以人物行走动画图片为例,第一行为向前走的一系列图片,第二行为向左走的一系列图片,以此类推,第三行向后,第四行向右。测试工具的代码很简单,直接看代码很容易懂,这里就不解释了。简要说明一下使用方法:点击“Open file”导入要测试的动画图片。项目文件夹中包含了一个动画图片(6.p 阅读全文
posted @ 2011-10-27 16:12 erichan 阅读(1051) 评论(0) 推荐(1)
摘要:由于网络延迟和轮询间隔的影响,在一个客户端操作精灵运动,其运动结果并不能马上反映到另外一个客户端上,时间上相对滞后一些,造成该精灵在两个客户端的运动不同步。本文试图寻找一个预测算法,从延迟的运动数据来预测真实的数据,从而解决运动不同步的问题。为方便讨论,我们假设以下环境。客户端把自己的精灵运动数据发送给服务器,然后另一个客户端从服务器取得数据。服务器不主动更新客户端数据,必须由客户端发起服务请求,获取数据。所有客户端的时间严格同步,即同时向服务器发送服务请求。设定轮询间隔为1秒,即客户端每隔一秒向服务器发送一次服务请求。忽略网络时间延迟(毫秒量级),假定两个客户端的时间延迟完全由轮询间隔造成。 阅读全文
posted @ 2011-06-23 18:32 erichan 阅读(744) 评论(9) 推荐(1)
摘要:简单的说,游戏中的实体对象指的是地图、精灵等。在设计实体类的时候,最直接的做法就是把所有与该实体相关的数据,方法,事件等封装到一个类中。当需要一个新的实体时,用该实体类创建一个新的实体的对象,然后初始化数据。该设计的主要问题是,实体数据与对象耦合太紧密,在以数据为中心的环境中,不利于实体对象的重用。举例来说,假设下面精灵类:[代码]当客户端从服务器得到精灵数据,需要创建一个精灵对象,并用该精灵数据... 阅读全文
posted @ 2010-08-06 18:18 erichan 阅读(781) 评论(3) 推荐(0)
摘要:服务器与客户端的数据交换涉及大量数据参数和数据类型。对于每次数据交换,数据参数的数量和类型可能都是不同的。举个简单例子,客户端从服务器端获得当前地图的精灵信息,假设某次通信得到10个精灵的信息。下次通信时,假设其中一个精灵被kill了,同时另外9个精灵只是部分信息变化了,我们希望只传输更新了的信息而不是传递所有信息。可以想象,这两次通信的数据参数变化极大。或者说,几乎每次通信的参数都是不同的。如果... 阅读全文
posted @ 2010-07-05 22:17 erichan 阅读(503) 评论(0) 推荐(1)
摘要:在Web环境(HTTP协议)下,服务器端的服务是被动方式的,无法通过定时器来主动处理游戏控制和逻辑。同时每次服务的时间不可以太长,否则将导致服务超时,产生不可预料的后果。Web环境的特殊性决定了其游戏设计与常规客/服环境下的设计完全不同。应该指出,Web环境并不是设计和发布MMORPG游戏的理想选择,独立主机可以提供更好的性能和更简单的逻辑。但是租用Web共享空间的价格远低于独立主机,可以大大降低... 阅读全文
posted @ 2010-06-19 05:31 erichan 阅读(698) 评论(0) 推荐(0)
摘要:上一节比较了Silverlight支持的几种通信方式,结论是:基于纯Web服务器环境,WCF Binary Encoding为首选的通信技术。接下来我们可能会问自己,Web服务器环境是否适合作为承载MMORPG游戏的服务器,能否承载大量的游戏逻辑运算,能否支持几千甚至上万的游戏者的连接以及逻辑处理?架设过私服的朋友可能有体会,在P4上运行传奇的服务器程序,cpu几乎全部被占用,程序切换明显延迟。而... 阅读全文
posted @ 2010-06-10 18:04 erichan 阅读(2675) 评论(13) 推荐(2)
摘要:互联网游戏当然离不开通信技术的支持,对于Silverlight,哪一种通信技术最适合开发MMORPG游戏呢?本文通过比较Silverlight支持的几种主要的通信技术的特性和适用环境,选择一款最适合我们的。1 Socket提到开发游戏,性能和速度当然是第一位的,Socket应该是首选的通信技术。因为所有的Silverlight通信技术都是基于TCP/IP的,Socket可以直接控制TCP/IP的连... 阅读全文
posted @ 2010-06-04 19:17 erichan 阅读(1819) 评论(14) 推荐(1)
摘要:由于Silverlight游戏内嵌在浏览器页面中,处理好浏览器的控制对于Silverlight游戏的表现十分重要。本节归纳总结了Silverlight游戏开发中可能遇到的一些浏览器相关的问题,并给出解决方案。这些问题包括:如何令浏览器文档窗口最大化,如何防止误关浏览器窗口,用户关闭浏览器时如何通知服务器,如何阻止用户从多个浏览器窗口登录游戏。本来打算用四篇blog来分别阐述,不过每部分内容都不多,... 阅读全文
posted @ 2010-05-28 15:45 erichan 阅读(968) 评论(2) 推荐(1)
摘要:上一篇文章介绍了用CompositionTarget_Rendering实现固定时间间隔定时器。本篇将继续这个话题,介绍该定时器的一个实际应用:用一个定时器实现多个帧频不同的动画,笔者正在开发的MMORPG游戏中使用了该技术。前文讨论了该定时器的优点之一,即动画帧只在即将提交UI前处理,可以根据silverlight程序的帧频的变化而自适应调整。本文讨论另外一个优点:不同帧频的动画可以共享同一个定... 阅读全文
posted @ 2010-05-13 04:27 erichan 阅读(1967) 评论(8) 推荐(2)
摘要:书归正传,继续讨论我们的MMORPG游戏。经过前面两节的技术铺垫,我们可以在这个基础上考虑如何实现游戏中动态下载和缓存资源了。针对不同的资源,不同的用处,我们将采用不同的策略。首先是确定资源部署的位置。根据前一篇文章讨论,我们可以把资源部署到web服务器上xap包所在的目录中,即ClientBin目录中。其次是考虑各种需要动态下载的资源。背景音乐和各种音效,策略最为简单,直接引用web服务器地址就... 阅读全文
posted @ 2010-03-25 05:01 erichan 阅读(695) 评论(1) 推荐(0)
摘要:上一节的演示改编于深蓝色右手的场景编辑器。深蓝色右手的设计思想是:"一切都源于我们这个真实的世界"。没错,人类的使命就是不断的认识这个世界,征服和改造这个世界。客观世界只有一个,但是每个人的主观感受和认识千千万万,表述也各自不同。很难说哪个世界观更正确,只能说每个人各自用自己的方式来实践这个世界,没有最好的,只有更适合自己的。这一节将解释上一节Xaml布局的三个基本的层。三个基本的层这里所说的层,... 阅读全文
posted @ 2010-03-22 05:40 erichan 阅读(465) 评论(1) 推荐(1)
摘要:前言 最近一直在关注深蓝色右手的系列游戏教程,突然发现制作游戏原来并不是那么遥不可及。感谢深蓝色右手的工作和无私的共享精神,心中久已埋藏的开发自己的MMORPG游戏的梦想又重新被唤起,决定用silverlight打造一款自己想要的MMORPG游戏。尽管深蓝色右手在教程中已经写了很多核心算法和技术,同时公布了源码,但是有些细节的地方还需要自己来琢磨,研究。作者的目的很明确,就是用silverligh... 阅读全文
posted @ 2010-03-21 06:08 erichan 阅读(783) 评论(1) 推荐(1)