【发布时间】:2011-01-15 20:04:27
【问题描述】:
我正在用 javascript 编写一个游戏,为了防止作弊,我让游戏在服务器上玩(这是一个棋盘游戏,就像一个更复杂的跳棋)。由于游戏相当复杂,我需要存储游戏状态以验证客户端操作。
是否可以将游戏状态存储在内存中?这很聪明吗?我应该这样做吗?如果是这样,怎么做?我不知道那会怎样。
我也可以存储在redis中。这种事情对我来说很熟悉,不需要解释。但是如果我确实存储在 redis 中,问题是在每一步中,游戏都需要从 redis 获取数据并解释和解析这些数据,以便从头开始重新创建游戏状态。但是由于动作频繁发生,这对我来说似乎很愚蠢。
我该怎么办?
【问题讨论】:
-
这与 JavaScript 没有任何关系。您基本上只需要一个可以处理所有不同连接客户端的服务器,并且由于程序在内存中执行,它会很快!仅当您需要“保存”游戏时,才将游戏状态保存到数据库中。用代码表示你的游戏状态!
-
@Marcus 谢谢,我正在寻求有关实施的建议,因为这对我来说并不那么明显。如何在代码中表示游戏状态?
-
@expressnoob 变量和类。这些是工具,使用它们来表示游戏中的对象,例如
Game、Player、Piece等。设计取决于您并针对您的游戏。 -
@Marcus 如何让它们在每个单独游戏的服务器上持久存在?
-
@expressnoob 为服务器可能正在编排的每个游戏创建一个单独的
Thread,并为每个游戏提供一个Game的实例,然后如果持久性意味着在服务器关闭后,您可以序列化您所有的对象并将它们保存到文件(或数据库)或以更定制的方式将其转换为数据库表。
标签: javascript database node.js