我正在构建一款多人实时社交游戏,我正在考虑实现何种架构以跟踪游戏状态并将正确的套接字发送给连接的玩家。
我的游戏有 4 个状态 round start
,check players
,matching state
,round result
。这些状态有超时 10 秒
,并且在房间有玩家时重复循环。
我的状态如下所示:
var stateDoc = {
type: 'round start',
uid: uid,
timeout: 10000
};
我的问题是我应该如何存储状态并更新这些状态?
最佳答案
您可以拥有一个名为游戏的 json 数据。您可以将其作为二进制文件或 json 存储在 redis 列表中。如果将其作为 json 传递,则可以执行 toJson before 和 fromJson after。
//游戏数 伦游戏
//读取游戏#0
LINDEX 游戏 0//在列表末尾写游戏
RPUSH 游戏“{...}” RPUSH games.roundstart 1您最好使用 5 个列表:一个用于每个州,一个用于所有游戏 状态列表(例如 games.roundstart)将仅存储此状态的游戏的 key 。
更新逻辑应该存储在服务器端(而不是在 redis 中) 在更新过程中,您将查找每个列表并根据该列表执行操作。
关于node.js - 检查游戏状态并向连接的客户端发送套接字的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719727/