2009-12-07 51 views
0

最好是通过使用SQL表格创建云来模拟电路板,从而在不同计算机上的两个拼图板之间进行通信。我每次移动都会让您联系服务器并更新本地主板?拼图板登录

+3

我可以推荐为每次更改插入新行,而不是更新现有行吗?通过这种方式,您可以根据需要恢复功能。 – 2009-12-07 22:59:00

+0

我认为这会变得复杂一点。我总是可以复制并在一个循环中重复该过程。 – 2009-12-07 23:28:33

+1

我认为诺拉的想法非常好。您可以用它来显示游戏重播或显示最近的几次移动来帮助玩家思考他们的移动。根据您期望游戏占用的时间范围(例如,分钟与日期),这可能非常有帮助。 – Chris 2009-12-08 14:31:27

回答

1

听起来不错。拼字游戏不需要实时的毫秒精度,所以使用数据库事务来完善棋盘游戏听起来像是一个好方法。

0

将电路板状态存储在中央数据库中是很好的 - 而且设计很好。目前还不清楚你是如何在具有每个客户端处理通信的规划,你有两个选择:

  1. 客户1做出的举动,发送信息到服务器(在DB持续状态)
  2. 服务器ping客户端2通知他们说这是他们的举动(使用远程技术来ping)
  3. 同步骤1,但对于客户端2.

或者

  1. 客户端1进行移动,将详细信息发送到服务器(持久保存在数据库中)
  2. 客户端2轮询服务器,直到它发现它已经轮到。
  3. 同步骤1,但对于客户端2.

所以,你必须要考虑是否要2路客户端服务器通信(客户端调用服务器,服务器调用客户端),或者是否要1路客户端服务器通信(客户端调用服务器,包括轮询以确定状态何时发生变化)。

1

在你的鞋子里,我会尽量正式化我的状态。如果你想起来了,一个拼字游戏包括:

  • 一个板
  • 上板,发奖金的坐标(X2信,X3字,等人)
  • 一组可用字母,每个字母的数量可用,点的得分每个字母
  • 一种每个玩家
  • 该组中的每个球员的控球字母
  • 的话每个球员都有出场,并在他们的个人资料板
  • 玩家的当前得分
  • 的许字的字典(用于挑战)

很多本可以存储在SQL数据库中 - 例如,一个玩家的名字和分数。但是一个SQL数据库可能太重,比如棋盘坐标以及各种奖金如何映射到各种坐标。如果你想到它,这些是静态的,只读的属性,永远不会因游戏而改变。将它们表示为序列化的二维数组或类似的东西可能是有意义的。允许词的字典也一样。在你的鞋子里,我试图从服务器启动时的文本文件中读取字典,将字符串存储到一个不可变的数组中,并手动编写超快速二进制搜索,而不是忍受数据库的开销调用一个索引表。

同样的信件的抓包:你真的需要一个数据库吗?也许你会。也许你认为,由于抓包表示将在所有连接的客户端之间共享的可变状态,因此您希望利用数据库的锁定机制。或者,也许速度成为一个问题,所以你发现一个数组或列表可以更好地为你服务,而且你可以自己管理线程状态。

问题是,除非你以某种程度的精确度来说明你在做什么,否则你将不知道该选什么。然后你可以开始考虑折衷。

+0

当然需要更多计划,我会这样做。谢谢你的建议。 – 2009-12-07 23:27:34

0

这里有一些很好的答案,但我会说这一切都取决于你有什么可用。如果您可以假设有一个中央服务器可用,那么使用它来跟踪游戏状态将是一个好主意,因为它不会将客户端锁定到任何特定的机器上 - 他们可以在游戏中从一个到另一个如果他们愿意。这里还会有一些额外的安全措施,因为您可以检测到试图进行非法移动的客户。我相信还有其他的好处。最明显的缺点是需要服务器(即第三块硬件,以及网址和主机等)。

如果你不能做出这样的假设,那么让一个客户端成为'服务器'真的没什么问题。它只是带有不同的优点和缺点。

至于使用SQL表,rtperson做了一些非常好的观察。

+0

服务器是一个非问题,所以我非常肯定这是我将走的路。 – 2009-12-07 23:26:58