01_服务器设计基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

在线游戏架构1服务器端设计基础预备知识C++语言Windows编程Direct3D参考书目《Windows网络编程》《C++网络编程》《VisualC++网络游戏建模与实现》etc.网络游戏体系结构网络游戏是一个广义上的概念。网络游戏大多采用客户/服务器(Client/Server)的体系结构,游戏的功能结构由服务器和客户端组成,根据客户端和服务器端的不同,又可以分为以下三种功能结构。•对等的Client/Server•基于大厅(Lobby)的网络游戏•真正的Client/Server体系网络游戏体系结构在这种游戏里,其中一个玩家的机器既充当客户端又充当服务器的角色,通常情况下服务器是由创建游戏的玩家担任的,称之为主机,其他的玩家通过网络查询到相应的游戏,并加入其中。很多的对战类网络游戏都是基于这种模式,比较著名的如:CS,星际争霸。1对等的Client/Server客户端客户端客户端客户端客户端(主机)客户端网络游戏体系结构这种网络游戏的特点:1)周期通常很短,以一局为一个周期,完成一局之后,玩家可以选择退出游戏,重新开始新的游戏。2)游戏的所有核心逻辑算法独立的在每个玩家的客户端上运行,不依赖于服务器而存在,其设计理念与单机游戏相仿。3)这种游戏通常基于局域网,由玩家在小范围内建立游戏并加入其中(例如小于5个),通信迅速。每个玩家保存一份游戏世界的拷贝,都以同样的方式发送/接受数据。连接数目通常依据公式(C)=(N*(N-1))/2呈指数级增长:(其中N指玩家数目,C指玩家间通信连接数目)1对等的Client/Server网络游戏体系结构大厅是会话的集散地。在聊天服务器里,正在进行的话题被称为会话(Session),聊天服务器被称为大厅。用户可以加入别人的会话,也可以创建自己的会话。游戏中的大厅的概念与聊天服务器中大厅的概念相似。大厅就是一个中介,相当于一台专门的服务器,它的作用是为不同位置的玩家牵线搭桥,给他们提供机会在一起进行游戏。这种游戏也很多,比如:暴雪的battle.net,联众的联众游戏大厅。2基于大厅(Lobby)的网络游戏游戏房间二游戏房间三数据库大厅游戏房间一网络游戏体系结构这种网络游戏的特点是:1)进行游戏中,玩家可以与大厅保持连接,也可一断开连接,游戏完成后再重新连接。2)在数据库里存放着玩家的帐户信息以及分数等情况,因此,玩家的游戏分数可以保存。3)大厅不包含游戏的核心运算逻辑,它更象是独立于游戏之外的一个辅助性软件,作用只是提供多个游戏服务房间的连接供玩家选择。而每个游戏房间的结构则类似于上一种网络游戏结构,由一个玩家的客户端既担当客户端,又充当服务器的角色。2基于大厅(Lobby)的网络游戏网络游戏体系结构真正意义上的服务器/客户端结构的网络游戏,可以容纳成千上万的玩家同时在线,玩家在游戏世界里持续存在并且玩家的信息被存储下来。在这种结构里,为了保证所有客户端都具有相同的游戏画面和游戏结果,关键的数值计算和逻辑判断必须放在服务器端,因此服务器上必须具备完整的游戏世界模型。客户端更相当于一个窗户,玩家通过自己的窗口去观察这个世界并与之互动。流行的网络游戏,如传奇,魔兽世界等都是这种结构。3Client/Server结构数据库服务器网络游戏体系结构这种网络游戏的特点是:网络游戏严格划分为服务器端和客户端,两者的开发及运行分开进行。这种游戏的核心逻辑运算都放在了服务器端,而客户端只负责画面的显示和一些非核心的运算。游戏世界具备良好的持续性,可以不断的进行扩充。3Client/Server结构网络游戏体系结构客户端/服务器端功能划分通信模块通信模块客户管理积分等级系统战斗系统游戏管理工具场景管理器场景服务器场景N脚本引擎等服务器端动画处理系统多媒体处理系统聊天系统输入输出系统客户端3Client/Server结构网络游戏通信无论是那种网络游戏,都需要客户端和服务器端的通信,这些连接和数据传输操作大部分是基于TCP/IP协议,TCP/IP协议是网络上一组完整的、应用广泛的网络协议。所有的通信网络就其实现技术可以分成两种:线路交换:传输时在发送端和接收端之间建立一个特定的线路连接,数据在这个线路上传输,他人不能使用这条线路。包交换:发送端要将传输的数据分割成块,每一块经处理后形成一个包(packet),每个包在网络上单独传输。包中除了有要传输的数据之外,还要有一些通信资料,如发送端地址、接收端地址和其他必要的信息。网络游戏通信国际标准化组织ISO在1977年提出了OSI(OpenSystemInterconnection)标准,就是著名的七层通信协议标准。1OSI通信协议标准七层模型网络游戏通信应用层:应用层是最接近用户的一层。一般是构架在各种通信协议上的网络应用软件,与用户直接交互。表示层:表示层的功能是用标准的编码方式统一数据格式。表示层还完成一些对数据的处理加工。会话层:控制传输连接时的数据交换,如传输方向,中断处理等。传输层:使数据能正确无误地传输,控制数据流,向上屏蔽网络硬件的变动和差异。网络层:在发送端和接收端之间建立一个虚拟的路径,实现数据包到接收端的路由。数据链路层:对底层传来的数据进行封包,将上层的数据分割成帧。物理层:控制数据按位在媒介上传输,关注的是机械、电气、程序等层面。1OSI通信协议标准七层模型网络游戏通信TCP/IP是美国在研制ARPANET时开发的一系列协议,后来将TCP/IP协议正式规定为正式的网络标准,逐渐成为使用最广泛的协议。许多操作系统如BSDUNIX和Linux都支持TCP/IP协议,TCP/IP协议主要分为四层:2TCP/IP协议族网络游戏通信应用层:向用户提供应用服务。如FTP,TELNET等。相当于OSI模型的应用层、表示层和会话层。传输层:提供可靠的面向连接的传输层协议TCP和不可靠的非连接传输层协议UDP。相当于OSI模型中的传输层。网络层:提供非连接的分组交换功能。相当于OSI模型中的网络层。网络访问层:在TCP/IP模型中很少提及。相当于OSI中的数据链路层和物理层。2TCP/IP协议族相同点:都是基于独立的协议栈概念。两者都有功能相似的应用层、传输层、网络层。不同点:OSI模型支持非连接和面向连接的网络层通信,但在传输层只支持面向连接的通信;TCP/IP模型只支持非连接的网络层通信,但在传输层有支持非连接和面向连接的两种协议可供用户选择。TCP/IP模型中不区分、甚至不提起物理层和数据链路层。网络游戏通信网络游戏通信实际上所谓TCP/IP,并不是单纯指TCP和IP这两个协议,而是包括很多其他协议的一个网络协议的集合,称为协议族。2TCP/IP协议族网络游戏通信网络中广泛应用的TCP/IP的协议族中的协议很多。IP:(网间协议(InternetProtocol)):负责主机间数据的路由和网络上数据的存储,同时为ICMP、TCP、UDP提供分组发送服务。用户进程通常不涉及这一层。ARP:((地址解析协议(AddressResolutionProtocol)):此协议将网络地址映射到硬件地址。RARP(反向地址解析协议(ReverseAddressResolutionProtocol)):此协议将硬件地址映射到网络地址。ICMP:网际控制报文协议(InternetControlMessageProtocol),此协议处理信关和主机的差错和传送控制。2TCP/IP协议族IP协议将给定数据封装到数据包(packet)中,利用IP地址试图通过网络路由该数据包。IP地址:是一个32位的二进制数,由网络(Network)部分和主机(Host)部分组成。网络部分用于将数据包路由至主机所在的网络。主机部分表示在Internet中唯一的计算机。一台主机可以有多个IP地址,但一个IP地址只属于一台主机。IP地址是一个逻辑地址,可以被动态分配。IP地址可以用两种形式表示:点分十进制表示法(Dotteddecimalnotation)和二进制表示法(Binarynotation)。例如同一个IP地址,可以用点分十进制表示法表示为:144.214.2.1也可以用二进制表示法表示为:10010000110101100000001000000001网络游戏通信2TCP/IP协议族网络游戏通信2TCP/IP协议族TCP:传送控制协议(TransmissionControlProtocol):这是一种提供给用户进程的可靠的面向连接的全双工字节流协议。它要为用户进程提供虚拟电路服务,并为数据可靠传输建立检查。大多数网络用户程序使用TCP。UDP:用户数据报协议(UserDatagramProtocol):这是提供给用户进程的无连接协议。用于传输数据而不执行正确性检查。网络游戏通信FTP:文件传输协议(FileTransferProtocol):允许用户以文件操作的方式(文件的增、删、改、查、传送等)与另一主机相互通信。SMTP:简易邮件传送协议(SimpleMailTransferProtocol),SMTP协议为系统之间传送电子邮件。TELNET:终端协议(TelnetTerminalProtocol),允许用户以虚拟终端方式访问远程主机。HTTP:超文本传输协议(HypertextTransferProtocol)。TFTP:简易文件传输协议(TrivialFileTransferProtocol)。2TCP/IP协议族虽然IP指定了在Internet上的唯一的主机,数据包将根据IP到达该主机,但是无法确定将数据送入到该主机中哪一个正在运行的进程中。我们通常利用一个被称为的16位整数,来指定在主机上运行的一项网络服务/进程。很多端口都已经被指定给一些常见服务,例如:–http使用80端口–ftp使用21端口–telnet使用23端口–smtp使用25端口–nntp使用119端口–……我们创建自己的网络应用程序时,必须指定一个端口,并且需要避免与这些常见服务的端口发生冲突。为此,我们指定端口号时,常常选择大于1024的端口。网络游戏通信2TCP/IP协议族网络游戏通信TCP和UDP协议都是用于数据通信的协议,在网络游戏中也广泛的应用这两种协议。TCP与UDP协议网络游戏通信TCP协议(传输控制协议,TransmissionControlProtocol):是一个面向连接的协议,提供了可靠连接,并且是全双工的。它提供了以下服务:•保障数据到达。•错误检测与纠错•数据顺序传送•无冗余数据传输•对话/服务的管理对可靠性要求高的数据通信系统往往使用TCP协议传输数据。TCP与UDP协议网络游戏通信UDP协议(用户数据报协议,UserDiagramProtocol):UDP被被用于轻量级应用程序消息传送。它是无连接、单向的传输协议,不与对方建立连接,而是直接把数据包发过去。它提供了以下服务:•提供数据检测,但无纠错与数据重传,只是简单的将UDP数据报抛弃掉•如果IP丢失了UDP数据报,UDP无法检测到该丢失UDP适用于一次只传输少量数据、对可靠性要求不高的应用环境。TCP与UDP协议网络游戏通信TCP协议和UDP协议的差别如下表所示:TCP与UDP协议

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功