1

我想为 iphone 开发一个在线多人游戏。

我开发了两个 iphone 应用程序,但它们不是游戏。

所以这是我的第一场比赛。

所以基本上我对在线多人游戏如何在 iphone 上运行一无所知。

我只是想知道有助于我理解iphone多人游戏的策略、初学者的注意事项和其他设计元素。

例如:如果有一个在线赌场游戏(不是蓝牙),所有玩家之间的连接和会话如何工作。他们如何管理回合,结果。

编辑 我也按照 Brad Larson 和 ChrisF 的建议分别提出了这些问题:

游戏将如何搜索其他在线用户并显示所有用户列表?

如何请求某人加入游戏然后对其他用户可见?

桌子的玩家之间的连接和会话将如何工作?(插座?)

作为服务器和客户端的一部分,需要什么样的网络编程?

请告诉我所有这些是如何工作的?(只是概念)

谢谢 。

4

2 回答 2

3

游戏将如何搜索其他在线用户并显示所有用户列表?

您将需要一个服务器,该服务器将在线播放器列表返回给您的 iPhone 客户端,它是某种数据格式,可能是 XML 或 JSON。

如何请求某人加入游戏然后对其他用户可见?

最简单的方法是想要加入游戏的人将该命令发送到服务器,服务器告诉其他人他们想加入。等待回复。如果玩家二说“是”,则返回转发给第一玩家的服务器。

它基本上是发送到服务器和从服务器发送的一系列命令。这就是所有多人游戏的工作方式——例如,Quake 引擎发送非常紧凑的命令,只有 4 个字节用于“让我在服务器上的所有玩家”之类的事情。鉴于 iPhone 连接的脆弱性,这将是一个很好的复制模型,因为 Quake 网络代码是为 56k 调制解调器设计的。

桌子的玩家之间的连接和会话将如何工作?(插座?)

连接可以是连续流(最好使用 UDP),也可以是来自客户端的轮询。您需要考虑两者的扩展,因为有可能 100 人玩可能会使您的服务器瘫痪。

如果一名玩家失去连接,会话将被丢弃。或者,由于它是基于回合的,每个玩家可以在他们在线时简单地发送一个命令,而另一个客户端在他在线时选择这个 - 在这个模型中不需要会话,并且命令存储在服务器上的数据存储中。

作为服务器和客户端的一部分,需要什么样的网络编程?

我将扩大范围:

  • 深入了解字节和位操作,包括位移
  • 创建和读取UDP数据包的知识
  • C 中的网络编程(Objective-C 可以简化很多)
  • 服务器:在 Linux 上编写守护程序,或在 Windows 上编写服务以侦听命令
  • 如果您不关心带宽和连接中断,请了解 SOAP、XML 或 JSON
于 2010-06-29T08:03:14.277 回答
1

您可能需要一个服务器来存储游戏状态,因为您不能保证两个(所有?)玩家都会同时在线。这将存储的一件事就是轮到谁了。

然后,当玩家打开他/她的手机或开始游戏时,他们会看到一条消息说轮到他们了。

您也可以使用此服务器来存储高分和表格。

于 2010-06-28T11:07:23.350 回答