在iphone的多人游戏 - 概念,战略,设计?

时间:2010-06-28 11:02:49

标签: iphone multiplayer concept

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

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

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

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

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

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

修改 我也按照Brad Larson和ChrisF的建议单独提出这些问题:

How the game will search for other online users and will display the list of all users ?

How one can request someone to join the game and then visible to other users ?

How the connection and session will work between players of a table ? (Sockets ?)

What sort of network programming is necessary as part of the server and client ?

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

谢谢。

2 个答案:

答案 0 :(得分:3)

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

您需要一台服务器,它会向您的iPhone客户端返回在线玩家列表,这是一种数据格式,可能是XML或JSON。

如何请求某人加入游戏然后向其他用户显示?

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

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

桌面玩家之间的连接和会话如何工作? (套接字?)

连接可以是连续流(UDP最好),也可以是客户端轮询。您需要考虑对两者进行缩放,因为可能有100人玩游戏可能会让您的服务器陷入困境。

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

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

我会扩大这个范围:

  • 深入了解字节和位操作,包括位移
  • 创建和读取UDP数据包的知识
  • C语言中的网络编程(Objective-C可能会简化很多这方面的工作)
  • 服务器:在Linux上编写守护进程,或在Windows上编写服务以侦听命令
  • 如果您不关心带宽和连接丢失,请了解SOAP,XML或JSON

答案 1 :(得分:1)

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

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

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