Gameserver的线程体系结构



我开始制作我的2D游戏/引擎,但不知道在服务器端处理客户端的最佳线程架构。

最初,我考虑的是按映射线程设计,而不是按用户线程设计。但还有另一种理想的方法吗?

在我的地图线程概念中,线程只会在地图上玩家的入口处创建,并且在清空后不久就会被销毁。但有了这个概念,玩家太多的地图(例如玩家商店)可能会导致严重的滞后。

使用用户线程方法,将会有大量的线程,从而分配大量的内存。

那么,还有其他更好的方法吗?

问题的答案是只使用一个线程模拟多个游戏实例。由于游戏编程的复杂性以及以任何有意义/安全/有益的方式划分内存访问的困难,很少有游戏从多线程中受益。即使是你听说过的最大游戏的服务器,在整个游戏逻辑中也是单线程的。例如,一款暗黑破坏神风格的游戏每个核心有一个线程,每个线程负责数百个游戏,其中有一点点跨线程(真正的跨机器)逻辑来启动游戏。

当您的服务器有几个CPU核心时,您将从mulithreading arch中获得一些好处。所以,如果你的游戏架构是纯事件驱动的(你从不在事件处理程序中等待任何事情),那么最好的性能将是线程数等于CPU核心数。

最新更新