2010-10-08 74 views
6

我想为Game Center构建iPhone游戏,并且目前正在研究它的所有服务器部分。我通过学习最好的例子,我有一个很难找到的演示简单的游戏服务器的任何实例...简单游戏服务器的代码示例

  1. 如何数据进行格式化和发送到服务器,它是如何获得
  2. 如何认证/接收,以避免玩家作弊正在发送数据等
  3. 如何游戏服务器代码与DB
结构沿

我想建立使用Ruby游戏服务器on Rails的,尽管我会解决任何使用任何框架的例子,以了解这些con接受工作。有谁知道任何书籍或在线资源已经涵盖了这个或显示了一些如何构建游戏服务器的示例代码?

我不得不认为大多数iPhone上的多人游戏需要玩家服务器,但我似乎无法找到任何讨论如何构建游戏的资源。我发现讨论构建多人游戏(包括苹果公司的文档)时说的同样的东西,“开发一款游戏服务器超出了本书的范围,但我们将重点关注连接到这种服务器所需的客户端代码“。

非常感谢您的帮助!

编辑:一些什么,我试图完成更多的细节......

我想发展两个球员(可能更多)的游戏,当用户竞争解决比其他玩家更快。比赛制作将由Game Center处理,但我需要一个游戏服务器来启动/管理游戏并将结果存储在数据库中。整个过程将是这样的......

  1. 游戏中心对两个玩家
  2. 玩家数据被发送到服务器初始化一个新的游戏
  3. 游戏的开始是由同步服务器
  4. 游戏开始时每个玩家试图解决这一难题
  5. 当任一玩家完成,服务器一旦双方球员完成通知
  6. ,服务器的响应结果,结果存储在服务器上。
+1

你能给我们多一点细节吗?你在开发什么样的游戏?你只需要配对?整个游戏是否处于服务器状态,还是iPhone需要计算一切?同步如何重要你需要每10ms更新一次吗? 1000毫秒?或者它甚至是一个全面的游戏?还要记住,RoR仍然是一个面向请求的框架,而不是通常用于长期套接字连接的东西。我最近在Node.js中构建了一个,效果很好。 – 2010-10-08 17:30:31

+0

谢谢伊沃,我只是补充了一些细节。我会研究Node.js,因为我一直想用这个框架来玩。你能否给我一些建议,让你知道如何去做你所做的事情? – BeachRunnerFred 2010-10-08 18:27:28

回答

4

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

关于你的观点:

  1. 我不知道配对工程究竟是如何(猜你得到一对密钥左右来验证请求),但它应该不难实现,无论编程语言。简单:设置一个服务器,处理连接,保存一个正在运行的游戏列表,为每个游戏记录状态(玩家,时间等),这应该是最大的(取决于你的消息使用..)150-200线

  2. 只需发送某种准备事件的每个玩家在特定游戏中,当你认为那场比赛做好准备(像其他人感动了:“我已经准备好”按钮左右)

  3. 确定,一些提示这里:

    1. 跟踪服务器上剩余的/时间的流逝,并将其发送给玩家,定时器下车很快(我有4-5秒关在短短约3分钟)

    2. 为了防止cheati ng,验证服务器上的移动,这在应用益智游戏时应该相当容易。你也可以检查每次移动之间的时间间隔,所有低于50ms的应该是可疑的,但主要取决于难题的难度。

  4. 通过检查服务器上的移动。这是很容易的事,你不必依靠客户端上送你一个“看我做”的消息。

  5. 再简单一点,只需发送事件与随附的数据并将点记录到数据库。

最重要的一点是明显的预防作弊的,在益智游戏,该解决方案可以通过计算机来容易解决的情况下,这是不可能的,以防止它完全。虽然,上面的提示可以让它更难。

但请记住,当游戏很简单时,无法阻止人们在高分上作弊,因此在游戏中构建越来越多的保护措施是没有意义的。专注于游戏玩法,使其对人类有趣且简单复杂和不可预测的电脑

在数据库的情况下,呃...我想你可以用MongoDB来做这件事,但是我还没有在Node下玩过。

哦,如果你想有一个印象,你可以用Node.js的做什么这里是我建立的游戏:所有的逻辑在服务器上运行
http://github.com/BonsaiDen/NodeGame-Shooter

,客户只需画出的东西他们知道,我有一个可玩的原型,并在两个晚上跑步。

+0

这就是我喜欢的原因!我非常感谢你的努力,我现在要开始挖掘! – BeachRunnerFred 2010-10-08 23:44:26

0

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

0

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