游戏状态的单一真实来源
Single source of truth on game state
我是游戏开发的新手,我想用 node.js 创建一个多人游戏服务器
我想知道,在服务器上保持和更改游戏状态的最常用技术和模式是什么
我的游戏状态尺寸不大,所以我觉得最好的地方是内存来存放它
我想扩展和扩展我的服务器游戏,这样每个玩家都可以连接到不同的服务器
我担心同时发生的事件会改变不同服务器的游戏状态,因此拥有单一的真实来源在某种程度上很复杂,因为每个服务器上的状态可能会不同步
简而言之,构建多人回合制游戏的常用方法是什么,服务器必须实施一些逻辑来控制游戏流程,例如改变回合、在玩家不活动的情况下改变游戏状态,.. .
我也不知道如何保护状态不被重启服务器,可能是redis可以保存状态,但是失去控制器后如何控制游戏流程
首先,我认为最好从带有中央服务器的小模型开始,“在不同服务器中更改游戏状态”可能不适合您的游戏,甚至如果合适,您可以在简单尝试后进行。第一件重要的事情是按照您的意愿制作游戏运行,并且尽可能简单。
然后我们将重点介绍如何构建多人回合制游戏。对于这样的游戏,你至少需要以下几样东西
- 球员信息
- 静态总信息(玩家人数,回合数,玩家顺序,玩家位置,本回合现在的 运行ning 玩家)
- 每个玩家的信息(姓名、ID、金钱、其他)
- 地图管理器
- 每个格子都会有事发生
- 特殊事件或其他一些游戏机制
接下来就是server的核心逻辑了。我们至少需要以下功能:
- ProcessNetwork() 接收包并向其他人发送信息
- 玩家操作结束
- 事件发生在 one/many 玩家
- 几个玩家的互动
- CheckEnd() 查看游戏是否结束
- CheckPlayer() 检查我们是否需要将操作交给下一个玩家或是否在下一个回合。
void run()
{
while (!bGameEnd)
{
ProcessNetwork();
CheckEnd();
CheckPlayer();
}
}
而且就是一个最简单的中央控制器模型,你可以改成其他的,只要能用就行。之后,你可以让你的游戏变得越来越复杂。
在数据库中保存游戏状态,您可以根据负载启动多个应用程序服务器。
我是游戏开发的新手,我想用 node.js 创建一个多人游戏服务器 我想知道,在服务器上保持和更改游戏状态的最常用技术和模式是什么
我的游戏状态尺寸不大,所以我觉得最好的地方是内存来存放它
我想扩展和扩展我的服务器游戏,这样每个玩家都可以连接到不同的服务器
我担心同时发生的事件会改变不同服务器的游戏状态,因此拥有单一的真实来源在某种程度上很复杂,因为每个服务器上的状态可能会不同步
简而言之,构建多人回合制游戏的常用方法是什么,服务器必须实施一些逻辑来控制游戏流程,例如改变回合、在玩家不活动的情况下改变游戏状态,.. .
我也不知道如何保护状态不被重启服务器,可能是redis可以保存状态,但是失去控制器后如何控制游戏流程
首先,我认为最好从带有中央服务器的小模型开始,“在不同服务器中更改游戏状态”可能不适合您的游戏,甚至如果合适,您可以在简单尝试后进行。第一件重要的事情是按照您的意愿制作游戏运行,并且尽可能简单。
然后我们将重点介绍如何构建多人回合制游戏。对于这样的游戏,你至少需要以下几样东西
- 球员信息
- 静态总信息(玩家人数,回合数,玩家顺序,玩家位置,本回合现在的 运行ning 玩家)
- 每个玩家的信息(姓名、ID、金钱、其他)
- 地图管理器
- 每个格子都会有事发生
- 特殊事件或其他一些游戏机制
接下来就是server的核心逻辑了。我们至少需要以下功能:
- ProcessNetwork() 接收包并向其他人发送信息
- 玩家操作结束
- 事件发生在 one/many 玩家
- 几个玩家的互动
- CheckEnd() 查看游戏是否结束
- CheckPlayer() 检查我们是否需要将操作交给下一个玩家或是否在下一个回合。
void run()
{
while (!bGameEnd)
{
ProcessNetwork();
CheckEnd();
CheckPlayer();
}
}
而且就是一个最简单的中央控制器模型,你可以改成其他的,只要能用就行。之后,你可以让你的游戏变得越来越复杂。
在数据库中保存游戏状态,您可以根据负载启动多个应用程序服务器。