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

时间:2010-10-08 17:13:09

标签: iphone client-server

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

  1. 如何格式化数据并将其发送到服务器以及如何接收数据
  2. 如何验证正在发送/接收的数据以避免玩家作弊等。
  3. 游戏服务器代码与DB一起构建的方式
  4. 我想使用Ruby on Rails构建游戏服务器,不过我会解决使用任何框架的任何示例,只是为了理解这些概念是如何工作的。有没有人知道任何涵盖此书的书籍或在线资源,或者展示了一些关于如何构建游戏服务器的示例代码?

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

    非常感谢您的帮助!

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

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

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

3 个答案:

答案 0 :(得分:4)

好的,在阅读完你的编辑之后,我认为Node.js应该做得很好。

关于你的观点:

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

    < / LI>
  2. 简单:设置服务器,处理连接,保持正在运行的游戏列表,为每个游戏跟踪状态(玩家,时间等),这应该是最大的(很好地取决于消息procotol你使用..)150-200行

  3. 当你认为游戏准备就绪时(比如每个人都触及'我已经准备好'按钮左右),只需向给定游戏中的每个玩家发送某种准备好的事件

    < / LI>
  4. 好的,这里有一些提示:

    1. 跟踪服务器上的剩余/通过时间并将其发送给玩家,计时器很快下车(我在短短3分钟内完成了4-5秒)

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

  5. 通过检查服务器上的移动,这也非常简单,您不必依赖客户端向您发送“我已完成”消息。

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

  7. 最重要的一点是显然可以防止作弊,如果是益智游戏,解决方案可以通过计算机轻松解决,则无法完全阻止它。虽然,通过上面的提示你可以使它变得更难。

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

    对于DB,呃......我想你可以选择使用MongoDB,但我还没有在Node下玩过它。

    哦,如果你想要一个印象,你可以用Node.js做什么,这就是我建立的游戏:
    http://github.com/BonsaiDen/NodeGame-Shooter

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

答案 1 :(得分:0)

我最近构建了一个客户端服务器应用程序,服务器端基于Netty。有许多很好的例子可以说明事情如何在他们的网站上运作。事实证明它也表现良好。对于游戏,你也可以考虑使用谷歌ProtoBuffers - 这个例子也在Netty网站上。

答案 2 :(得分:0)

您知道,GameKit API包含的功能可让您将数据发送给游戏中的其他玩家。您可能需要考虑使用它,因为它将为您节省大量从头构建游戏服务器的工作,并且您可以使用Apple经过良好测试的网络基础架构。