回合制棋盘游戏服务器参考?[关闭]


12

关于如何构建回合制游戏服务器,有什么好的参考书/书可供推荐?就像是象棋服务器,用于将象棋玩家配对并保持游戏状态。过去,例如,IGS(for go,weiqi)是基于套接字的实现。有什么可借鉴的当代技术?谢谢!



:您可以从以下游戏服务器设计学习developers.google.com/games/services/android/...
tomash

Answers:


5

我认为没有关于这方面的书,因为该主题有点琐碎。

想象一下一个邮件服务器,玩家可以通过邮件发送其动作。服务器具有到目前为止执行的所有操作(如邮件),这意味着您具有游戏状态。如果您想重新加载游戏状态,只需按时间顺序执行邮件中的所有操作即可。您要做的唯一一件事就是确保它是谁的转弯……但这也很容易(例如转弯数字)。无需现代技术...经过修改的邮件服务器/客户端解决方案即可。

可以通过Elo完成ppl配对...但是我想你知道


鸡蛋,也许您可​​以再解释一下。我不知道'elo'–
叮叮当当

我编辑了帖子,以包含指向Elo系统的链接。
Kylotan 2012年

2

如果是我,我将使用套接字从头开始构建它。要发送的数据量非常小,并且基于回合的特性使一点延迟变得不明显。

我认为,真正的问题是您还需要哪些其他功能。游戏会话是否持久(有人可以退出并重新加入,可以保存游戏等)吗?如果您正在执行“文明”风格的保存,则可能要将保存数据推送到所有客户端,或者在保存完成的客户端上嵌入服务器提供的密钥以进行验证。

您是否需要任何类型的转间报告,例如“ Player 2正在移动一个单元”或“您的对手可能是AFK”?如果是这样,您可能最终想要保持套接字连接打开。

一般而言,除非有令人信服的理由使之偏离,否则我将使服务器尽可能的简洁明了。少调试。我也喜欢使用纯文本协议,因为我可以在没有实际游戏客户端的情况下使用telnet测试服务器(这可能会在给定的问题中引起怀疑),但这确实鼓励了Wireshark操纵数据(您可能会这样做)仍然检查)。

编辑:如果游戏仅支持一对一游戏,则点对点连接可能值得一看。


1

重要的是不要过多考虑服务器是什么以及它的职责是什么。在这种情况下,您的游戏性能相对较慢,因此服务器架构不会变得异常复杂(相对于节奏较慢的游戏,您有可能会做出推算)。您的服务器应该在TCP端口上侦听(如果仍然不需要速度,也可以跳过UDP),以使连接的客户端向其发送信息包。它接受数据包,根据游戏规则验证数据包,然后发送回响应。在您的特定情况下,您的服务器应该知道当前轮到谁了,并拒绝其他玩家执行任何动作的尝试,直到轮到他们了。

我不知道您打算使用哪种技术,但是使用Kyronet库在Java中进行此操作就足够容易了。只需将您的游戏动作发送到中央服务器(也可以是两个玩家之一),对其进行处理,然后将游戏更新发送回两个玩家。我确信.NET存在类似的东西。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.