简单游戏服务器的代码示例

Bea*_*red 6 iphone client-server

我想为游戏中心构建一款iPhone游戏,目前我正在研究服务器的一部分.我通过示例学到了最好的东西,我很难找到任何简单的游戏服务器示例...

  1. 如何格式化数据并将其发送到服务器以及如何接收数据
  2. 如何验证正在发送/接收的数据以避免玩家作弊等.
  3. 游戏服务器代码如何与DB一起构建

我想使用Ruby on Rails构建游戏服务器,不过我会解决使用任何框架的任何示例,只是为了理解这些概念是如何工作的.有没有人知道任何书籍或在线资源,或者显示一些关于如何构建游戏服务器的示例代码?

我不得不认为iPhone上的大多数多人游戏都需要游戏服务器,但我似乎找不到任何讨论如何构建游戏的资源.我发现讨论构建多人游戏(包括Apple的文档)的资源说过同样的事情,"开发游戏服务器超出了本书的范围,但我们将专注于连接到这种服务器所需的客户端代码. "

非常感谢您的帮助!

编辑:关于我正在努力完成的更多细节......

我正在尝试开发一种双人(可能更多)游戏,用户在竞争中比其他玩家更快地解决难题.比赛制作将由游戏中心处理,但我需要一个游戏服务器来启动/管理游戏并将结果存储在数据库中.整个过程将类似......

  1. 游戏中心配对两名玩家
  2. 播放器数据被发送到服务器以初始化新游戏
  3. 游戏的开始由服务器同步
  4. 游戏开始,每个玩家都试图解决这个难题
  5. 当任一播放器完成时,将通知服务器
  6. 一旦两个玩家完成,服务器就会响应结果并将结果存储在服务器上.

Ivo*_*zel 4

好的,在阅读您的编辑后,我认为 Node.js 应该可以很好地完成这项工作。

关于你的观点:

  1. 我不知道配对到底是如何工作的(猜猜你会得到一对密钥左右来验证请求),但无论使用哪种编程语言,它都应该很难实现。

  2. 简单:设置服务器,处理连接,保存正在运行的游戏列表,为每个游戏跟踪状态(玩家,时间等),最大应该是(取决于您使用的消息协议..) 150 -200行

  3. 当您认为游戏已准备就绪时,只需向给定游戏中的每个玩家发送某种就绪事件(就像每个人都触摸了“我准备好了”按钮左右)

  4. 好的,这里有一些提示:

    1. 跟踪服务器上剩余/已过的时间并将其发送给玩家,计时器很快就关闭了(我在大约 3 分钟内关闭了 4-5 秒)

    2. 为了防止作弊,请验证服务器上的动作,这对于益智游戏来说应该相当容易。您还可以检查每次移动之间的时间,所有低于 50 毫秒的内容都应该是可疑的,但这主要取决于谜题的难度。

  5. 通过检查服务器上的动作,这也很容易,您不必依赖客户端向您发送“看我完成了”消息。

  6. 同样简单,只需发送带有随附数据的事件并将点记录到数据库中。

最重要的一点显然是防止作弊,对于一款电脑就能轻松解出答案的益智游戏来说,想要完全杜绝作弊是不可能的。不过,通过上面的技巧,你可以让它变得更难。

但请记住,当游戏很简单时,你无法阻止人们在高分上作弊,在游戏中建立越来越多的保护是没有意义的。专注于游戏玩法,使其对人类而言有趣且简单,但对计算机而言则复杂且不可预测

对于数据库,呃...我想你可以使用 MongoDB,但我还没有在 Node 下使用它。

哦,如果您想了解一下 Node.js 可以做什么,这是我构建的游戏: http:
//github.com/BonsaiDen/NodeGame-Shooter

所有逻辑都在服务器上运行,客户端只需绘制他们知道的东西,我在两个晚上内就建立并运行了一个可玩的原型。