DirectPlay分组功能

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

现在网络游戏的网络功能很大一部份是居于WinSock/Socket之上的。但Microsoft的游戏开发包DirectX SDK同样提供了网络的功能----DirectPlay.

当然,WinSock/Socket与DirectPlay相比较,都存在着优缺.

而这个"优"与"缺"不是一两句话可概括的(本文重点也不是讲它们的区别).

DirectPlay的优点:Microsoft的工程师们已把它的网络功能写好了,这样可以为您节省下不少的泡MM时间.如:网络初始化、网络通信的函数功能、网络分组功能等等等("网络分组"是本文的中心)

DirectPlay的缺点:他的服务端只能运行在Windows平台上;只能支持较少数量的玩家(好现没有哪个公司或个人证明过,在MSDN论坛上我问过之类的问题,但MicroSoft说这主要是靠你写的程序的类型和你的服务器有关而且他们过去也在内部做过有10000名玩家的试验,我在Microsoft的帖子详见: http://communities.microsoft.com/newsgroups/previewFrame.asp?ICP=msdn&sLCID=us&sgroupURL=microsoft.public.win32.programmer.directx.networking&sMessageID=%253CObG98IsTCHA.1640@tkmsftngp10%253E )

萝卜青菜各有所爱,关于谁优谁劣就留给各位讨论吧。

好了,现在进入主题。

先给大家介绍DirectPlay中"组"的功能.

我们知道,在网络中要给某人发送消息,就要知道他的地址,也就是说要给一群人发送,就是要知道他们每个人的地址.这样,一个一个轮着发不会很麻烦吗?还好,DirectPlay引入了组的概念.只要你把这些人加入某组,以后给这个组发一条消息,他们每人就都会收到这个消息.怎么样?很爽是吧~~

爽是爽,但问题来了,DirectX SDK 8.1 与 DirectX SDK 7.0 有了相当大的改变,而这些改变SDK Help中又只是用几句话带过(有的甚至没有讲).比如有几个函数在8.1中就消失了,如:AddGroupToGroup()、RemoveGroupFromGroup()、CreateGroupInGroup()、CreatePlayer()等等等...

而我们要用这些函数时要怎么办?SDK`s Help中又没说清楚~~

且现有的函数最多只是给你这个函数的类型是什么、参数是什么、返回值是什么、而没有具体用法......

这所有的一切的一切将在本文章所附带的范例中一一给您展现,且例子中的代码有详细的中文注解.

注:

本例子在以下编译环境中通中通过:VC6.0、DirectX 8.1 SDK、WinXP

正文完

附件:

说明:本范例下载 Engine2.zip

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航