Darkstar: The Java Game Server(2)

本文介绍了一个通用的多人游戏体系架构,重点讲解客户端-服务器模型的工作原理。客户端负责收集用户输入并将其发送到服务器,服务器则执行游戏逻辑并广播更新后的游戏状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.2 多人游戏的体系结构<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

乍一看,网络多人游戏貌似是一个极度复杂的软件系统。其实不然,事实上多人游戏就相当于一曲由许多相互有关连的简单组件有机组成的管弦乐曲罢了。本章将要讨论的是,一个针对多人游戏的通用的、高级的体系架构。 虽然每个游戏的各自实现都会有些许不同,但是这个通用的框架提供了一个统一的体系,适用于理解多人网络游戏。本章描述了计算机游戏经典的客户端-服务器架构。尽管点对点(P2P)游戏已经成为了许多学术研究的课题,然而这些技术至今未得到广泛的应用,并且它们也不被Darkstar所支持,因此它们不在本手册的讨论范围内。

多人网络游戏存在着不同层次的抽象。最高层的抽象概念即为客户端与服务器。每个客户端维护单独的游戏中各玩家间的交互信息。服务器作为所有客户端进行交互的中间媒介并且担当游戏的规则仲裁者的角色。在任何一个多人游戏中,都存在着许多不同的角色(即“多人游戏”中的“多人”)。每一个角色都至少对应着一个现实生活中的玩家,他们通过运行在他们电脑上的客户端应用,以键盘、手柄及鼠标等各种方式进行交互。这些客户端把各自的交互信息(即行为)轮询提交给所在网络中(本地网或Internet)的服务器。游戏服务器通过维护整个游戏世界中的当前的、完全的游戏状态来管理这个游戏。

在游戏的单次轮询中,游戏服务器接收来自每个客户端的行为,并根据游戏规则对这些行为进行仲裁和应答,同时将游戏的状态更新返回给客户端。一收到新的游戏状态,客户端将立即显示它们同时准备接收新的用户行为。因此,一个游戏循环的基本算法流程是这样的:

1、 客户端连接服务器

2、 客户端 从服务器接收游戏状态

3、 客户端 向用户显示游戏状态

4、 客户端向服务器发送用户输入行为

5、 服务器接收客户端的行为,通过游戏规则处理后更新游戏状态

6、 服务器发送新的游戏状态给客户端

7、 重复步骤2-6,直到客户端断开连接

客户端具有四个基本的功能特性:

1、 用户输入

2、 向服务器发送用户行为

3、 接收来自服务器的游戏状态

4、 图形显示

服务器具有三个基本的功能特性:

1、 用户输入

2、 运行游戏逻辑

3、 广播游戏状态

上述部分的相互关系见下图。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 334.5pt; HEIGHT: 187.5pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/%E9%9B%A8%E7%AB%A5/LOCALS~1/Temp/msohtml1/01/clip_image001.png" o:title=""></imagedata></shape>

服务器在一个单独的逻辑位置来聚集游戏的信息并维护整个游戏的运行状态。这项特性最为关键的地方在于,它简化了来自客户端一系列动作所导致的游戏状态更新的相关过程。它同时也消除了客户端与服务器之间游戏状态可能存在不同步的隐患。因为作为仲裁者的游戏服务器总是正确的。这样的集中式管理也极大减少了客户端/玩家通过各种手段进行的可能性。因为是游戏服务器来执行游戏的相关规则和逻辑的,它能确保每一个玩家都要服从于既定的规则之下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值