0

这是我的第一个问题,所以当我需要澄清一些事情时请告诉我。

在局域网内制作多人游戏很容易,因为您不必处理插值、客户端预测等。但是您应该如何在客户端和服务器上实现客户端预测的逻辑呢?实现两次,或者在课堂上为客户端和服务器创建一种包装器?

此外,是否通常共享所有数据以使客户端完全同步,或者您是否应该只发送一些变量,例如对象是否为实体、其位置和形状......?

所以我基本上有两个问题:

  1. 通常在客户端和服务器上使用完全相同的类吗?还是他们在客户端和服务器上以两种不同的方式编写代码?(如果相同的代码,如何?)
  2. 类之间应该共享哪些数据?仅您将始终需要的部分,或者只是在服务器和客户端上的相同类之间同步所有数据?

旁注:我说的是客户端对您控制的角色的预测。我将对其他实体使用插值。

4

1 回答 1

0

经过大量阅读和一些经验,我得出了一些结论:

在许多情况下,可以使用完全相同的类。处理同步的一种流行方法是让这些类继承自 Realizable 类。此类将提供(纯)虚函数来读取和写入数据到流中。如果程序托管服务器,它将请求对象将其数据写入流,否则它将读取从服务器接收到的流。

通常,您只会在读取或写入流的函数中同步所需的数据。

客户端预测的一种解决方案似乎是在客户端上创建一个 PlayerHandler 来处理输入等。客户端应该知道哪个是他们控制的玩家。然后,处理程序可以临时覆盖对象的位置等。您将需要编写一些特定于您的游戏的自定义代码来处理其余部分。

于 2014-01-28T20:04:16.997 回答