目前,HTML5的话题很热,Flash及Silverlight的未来会不会因为HTML5而变得无所事事?我的个人看法是,HTML5仍有很长的路要走,即使将来标准成熟了,Flash与Silverlight也将仍有它们的用武之地,它们各自将在自己适合的领域发挥作用,各自会得各自开发群体的支持,很难说谁能取代或消灭谁。
谈到网络多人游戏的开发,游戏中客户端与服务端需要频繁的信息交流,本人对WCF只有初步了解,感觉用来做大型游戏的通讯似乎有点免为其难,别担心,Silverlight为我们准备了Socket. 从网上搜了一下,关于介绍Silverlight Socket的文章并不少。如:
在silverlight中利用socket发送图片或文件
Silverlight的socket通信实例源码
朋友们可以以此来构建自己的通讯方式,但要做好一款大游戏的后台通讯模块,并不是一件容易的事,本人也没有构建大型游戏后台的经验,但只要我们已经出发了,只要努力就一定能够达到胜利的彼岸。
在多人网络游戏中,NPC的驱动全是由服务器端来完成,由服务器端传到客户端的信息,再驱动客户端相关元素的动作,在通讯进程中操作界面元素,我们可以使用Dispatcher对象的BeginInvoke方法,如下:
ShowChat_("我来了,大家好")
Private Delegate Sub Dele_ShowChat(ByVal strChat As string)
Private Sub ShowChat_(ByVal strChat As string)
Me.Dispatcher.BeginInvoke(New Dele_ShowChat(AddressOf ShowChat), strChat)
End Sub
Private Sub ShowChat(ByVal strChat As string)
txtDisplay.text &=vbcrlf & strChat
End Subs
这样,使用Silverlight开发多人网页游戏基本上问题不大了,当然开发大型游戏不是件简单的事,其中有太多的细节需要去做。
在前面单人游戏的基础上,我加了个服务端,构成了一个简单的多人游戏实例。有兴趣的朋友可以点击查看多人游戏在线演示
(因服务端程序是放在朋友的主机上,不一定所有时候都是通的。如果不通,那此演示也就无法查看了. )
另考虑到一些原因,这个多人游戏的演示源码就不提供了。朋友们可以参考上面的链接设计通讯模块。