随笔分类 -  Silverlight

摘要:由于网络延迟和轮询间隔的影响,在一个客户端操作精灵运动,其运动结果并不能马上反映到另外一个客户端上,时间上相对滞后一些,造成该精灵在两个客户端的运动不同步。本文试图寻找一个预测算法,从延迟的运动数据来预测真实的数据,从而解决运动不同步的问题。为方便讨论,我们假设以下环境。客户端把自己的精灵运动数据发送给服务器,然后另一个客户端从服务器取得数据。服务器不主动更新客户端数据,必须由客户端发起服务请求,获取数据。所有客户端的时间严格同步,即同时向服务器发送服务请求。设定轮询间隔为1秒,即客户端每隔一秒向服务器发送一次服务请求。忽略网络时间延迟(毫秒量级),假定两个客户端的时间延迟完全由轮询间隔造成。 阅读全文
posted @ 2011-06-23 18:32 erichan 阅读(744) 评论(9) 推荐(1)
摘要:简单的说,游戏中的实体对象指的是地图、精灵等。在设计实体类的时候,最直接的做法就是把所有与该实体相关的数据,方法,事件等封装到一个类中。当需要一个新的实体时,用该实体类创建一个新的实体的对象,然后初始化数据。该设计的主要问题是,实体数据与对象耦合太紧密,在以数据为中心的环境中,不利于实体对象的重用。举例来说,假设下面精灵类:[代码]当客户端从服务器得到精灵数据,需要创建一个精灵对象,并用该精灵数据... 阅读全文
posted @ 2010-08-06 18:18 erichan 阅读(781) 评论(3) 推荐(0)
摘要:在Web环境(HTTP协议)下,服务器端的服务是被动方式的,无法通过定时器来主动处理游戏控制和逻辑。同时每次服务的时间不可以太长,否则将导致服务超时,产生不可预料的后果。Web环境的特殊性决定了其游戏设计与常规客/服环境下的设计完全不同。应该指出,Web环境并不是设计和发布MMORPG游戏的理想选择,独立主机可以提供更好的性能和更简单的逻辑。但是租用Web共享空间的价格远低于独立主机,可以大大降低... 阅读全文
posted @ 2010-06-19 05:31 erichan 阅读(698) 评论(0) 推荐(0)
摘要:互联网游戏当然离不开通信技术的支持,对于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)
摘要:前两节简要介绍了Silverlight和浏览器的交互技术,本节将例举一些这方面的实际应用。1 访问Query StringHttp Get协议中URL可以利用Query String传递参数给Web服务器。从Silverlight也可以访问Query String,例如:[代码]在上面代码中,Silverlight读取URL的Query String中name参数,并显示在text block中。... 阅读全文
posted @ 2010-05-22 06:13 erichan 阅读(1436) 评论(3) 推荐(1)
摘要:尽管我们无法决定下个版本Silverlight有哪些新特性,但是可以发出我们自己的呐喊,为我们希望的新特性投上一票。http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/不知道这些建议是否最终被Silverlight开发团队所采纳,不过可以肯定的是他们也在倾听用户的建议和需求,大牛Tim Heuer(开发成员... 阅读全文
posted @ 2010-05-21 19:22 erichan 阅读(303) 评论(0) 推荐(0)
摘要:上一节(http://www.cnblogs.com/erichan/archive/2010/05/18/1737862.html)总结了Silverlight访问HTML DOM的技术,这一节来讨论JavaScript。我们可以在Silverlight中调用JavaScript,也可以在JavaScript中访问Silverlight。在Silverlight中调用JavaScript在Sil... 阅读全文
posted @ 2010-05-20 06:09 erichan 阅读(634) 评论(0) 推荐(2)
摘要:Silverlight是浏览器的一个插件,运行在浏览器的Sand Box中。Silverlight与浏览器之间的访问,有时会给编程带来很大便利。本系列的目的是总结Silverlight与浏览器互访的技术及应用,作为实际开发时的参考。首先来看Silverlight如何访问HTML DOM。 HTML DOM(Document Object Model)定义了标准的方法来操作HTML文档,它是树形结构... 阅读全文
posted @ 2010-05-18 06:08 erichan 阅读(777) 评论(1) 推荐(0)
摘要:Silverlight本地化很多朋友可能不感兴趣,因为很多时候都是针对一国语言(母语或英语)编程,很少考虑多国语言的支持。不过既然Silverlight是基于互联网的,多国语言支持有时候很有必要,尤其是对一些企业应用。当然对游戏来说也有用处,多国语言支持可以吸引更多的不同国家和文化背景的人参与,影响力远比只有本国人玩大啊。目前Silverlight在国外的装机率和热度比国内高,支持多国语言还是很有... 阅读全文
posted @ 2010-05-14 22:32 erichan 阅读(760) 评论(3) 推荐(1)
摘要:上一篇文章介绍了用CompositionTarget_Rendering实现固定时间间隔定时器。本篇将继续这个话题,介绍该定时器的一个实际应用:用一个定时器实现多个帧频不同的动画,笔者正在开发的MMORPG游戏中使用了该技术。前文讨论了该定时器的优点之一,即动画帧只在即将提交UI前处理,可以根据silverlight程序的帧频的变化而自适应调整。本文讨论另外一个优点:不同帧频的动画可以共享同一个定... 阅读全文
posted @ 2010-05-13 04:27 erichan 阅读(1967) 评论(8) 推荐(2)
摘要:Silverlight技术研讨(3):用CompositionTarget_Rendering实现固定时间间隔定时器Silverlight提供了大致五种定时方式,这篇文章比较了各种定时方式的特点和应用环境。限于篇幅,本文就不赘述了。本文主要讨论实现游戏动画的定时器应用,当然还是针对正在开发的MMORPG游戏。一般来说,除非是很特殊很复杂的应用,storyboard,dispatcher timer... 阅读全文
posted @ 2010-05-12 06:48 erichan 阅读(2441) 评论(9) 推荐(3)
摘要:书归正传,继续讨论我们的MMORPG游戏。经过前面两节的技术铺垫,我们可以在这个基础上考虑如何实现游戏中动态下载和缓存资源了。针对不同的资源,不同的用处,我们将采用不同的策略。首先是确定资源部署的位置。根据前一篇文章讨论,我们可以把资源部署到web服务器上xap包所在的目录中,即ClientBin目录中。其次是考虑各种需要动态下载的资源。背景音乐和各种音效,策略最为简单,直接引用web服务器地址就... 阅读全文
posted @ 2010-03-25 05:01 erichan 阅读(695) 评论(1) 推荐(0)
摘要:上一节介绍了Silverlight资源文件动态下载的必要性,同时介绍了用于动态下载的关键技术WebClient。这一节将总结归纳Silverlight中图片资源引用的几种方法,着重介绍动态下载及缓存。还是考虑我们的应用:MMORPG游戏,都需要哪些资源呢?主要有两类,音频文件和游戏图片。其实各类资源的引用方法大同小异,这里仅以图片资源为例,讲述一下各种引用方法。1 图片直接编译到silverlig... 阅读全文
posted @ 2010-03-24 05:04 erichan 阅读(2046) 评论(1) 推荐(2)
摘要:对于小型的Silverlight应用程序,可以把所有内容,包括资源,都包含在一个Xap包中发布。对于开发者来说,是个很便利的选择,可以把更多的精力和时间用到程序的功能方面,提高开发效率。但是对于使用者来说,如果xap文件过大,需要下载几分钟或者更长时间才能看到实际效果,可能是一个很糟糕的用户体验,一定需要很大的勇气和决心才会再次访问。为了解决初始下载主包时间太长的问题,开发者一般会把比较大的音频,... 阅读全文
posted @ 2010-03-23 05:05 erichan 阅读(1485) 评论(3) 推荐(2)
摘要:上一节的演示改编于深蓝色右手的场景编辑器。深蓝色右手的设计思想是:"一切都源于我们这个真实的世界"。没错,人类的使命就是不断的认识这个世界,征服和改造这个世界。客观世界只有一个,但是每个人的主观感受和认识千千万万,表述也各自不同。很难说哪个世界观更正确,只能说每个人各自用自己的方式来实践这个世界,没有最好的,只有更适合自己的。这一节将解释上一节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)