C++ 游戏服务器需要特定于正在玩的游戏的服务器代码,还是只是在客户端之间交换IP地址?

C++ 游戏服务器需要特定于正在玩的游戏的服务器代码,还是只是在客户端之间交换IP地址?,c++,server-side,lan,C++,Server Side,Lan,如果我想把我的一台旧电脑变成游戏服务器,让我和我的朋友一起玩游戏(只有我和我的朋友,这不是任何玩在线游戏的人都可以使用的服务器)。服务器是否需要知道游戏是如何工作的,或者游戏服务器只是告诉客户端在哪里可以找到其他客户端 我可以用一些基本的UNIX套接字编程来实现这一点吗?或者这是一个比我预期的大得多的项目吗?答案当然取决于游戏本身,但有3种流行的选择: 游戏客户端结合了一些服务器代码,因此可以在服务器模式下运行(大部分是旧的FPP游戏,因为新游戏不允许玩家自己托管服务器) 服务器只是提供一个接口

如果我想把我的一台旧电脑变成游戏服务器,让我和我的朋友一起玩游戏(只有我和我的朋友,这不是任何玩在线游戏的人都可以使用的服务器)。服务器是否需要知道游戏是如何工作的,或者游戏服务器只是告诉客户端在哪里可以找到其他客户端


我可以用一些基本的UNIX套接字编程来实现这一点吗?或者这是一个比我预期的大得多的项目吗?

答案当然取决于游戏本身,但有3种流行的选择:

  • 游戏客户端结合了一些服务器代码,因此可以在服务器模式下运行(大部分是旧的FPP游戏,因为新游戏不允许玩家自己托管服务器)
  • 服务器只是提供一个接口来连接客户端,并让客户端应用程序负责数据包交换。这种方法主要用于小型的免费游戏,这些游戏大多基于某种合作,玩家不需要被控制
  • 游戏需要一个特殊的服务器端应用程序来处理玩家动作背后的逻辑。这在大多数PvP游戏中都是需要的,因为服务器可以处理作弊尝试

  • 第三种方法是最流行的方法,因为它让游戏创作者对他们的产品有一定的控制权——自动更新,更难获得在网络上工作的非法副本,等等。

    这可能取决于游戏的类型,但我要说的是,大多数需要服务器的游戏都会运行特定的服务器程序……否则,为什么有服务器?例如,Minecraft服务器实际上运行Minecraft游戏的服务器版本。服务器负责世界生成、暴徒移动等,而不仅仅是在客户端之间路由数据包。这可能需要移动到,因为它更多地是关于软件的“架构”而不是特定的编程问题?有些游戏,如一些赛车游戏,具有“局域网”模式,本地网络上的一台计算机可以充当本地网络上其他计算机的服务器。将其与VPN(虚拟专用网络)相结合,可以在互联网上玩这样的游戏,因为VPN模拟局域网。另一个极端是,有些人通过观察客户端代码和游戏使用的I/O数据包来复制服务器端应用程序。这是为一些游戏所做的,以替换原游戏制造商关闭的服务器。