Unity3D网络游戏实战(第2版)
上QQ阅读APP看书,第一时间看更新

1.1 藏在幕后的服务端

一款网络游戏分为客户端和服务端两个部分,客户端程序运行在用户的电脑或手机上,服务端程序运行在游戏运营商的服务器上。如图1-2所示,多个客户端通过网络与服务端通信。图1-2中间的TCP连接指的是一种游戏中常用的网络通信协议,与之对应的还有UDP协议、KCP协议、HTTP协议等。

图1-2 典型的网络游戏架构

客户端和客户端之间通过服务端的消息转发进行通信。例如在一款射击游戏中,玩家1移动,玩家2会在自己的屏幕中看到玩家1的位置变化,这个过程称为“位置同步”,它会涉及表1-1和图1-3所示的5个步骤。

表1-1 位置同步涉及的步骤

图1-3 位置同步的5个步骤

图1-4 服务端分区

一款流行的网络游戏,可能有数百万玩家同时在线。为了支撑这么多玩家,游戏服务端通常采取分布式架构。图1-4所示的是一组分区服务端,由2个区组成,每个服务端负责不同区的玩家。

服务端与服务端之间通常使用TCP网络通信,如图1-5所示,各个服务端相互连接,形成服务端集群。

图1-5 服务端的分布式架构

客户端和服务端之间、服务端和服务端之间都是使用TCP网络通信的。网络编程是开发网络游戏的基础,那么,我们就从最基础的Socket开始吧!