iPhone游戏的在线玩法可能性?

3
你们如何为iPhone游戏创建在线游戏功能?显然,人们可以每隔一段时间询问服务器,但考虑到设备的能力,这是现实的吗?假设你每秒或两秒询问一次服务器并检索100字节的数据...是否可能在游戏进行的同时在后台检索数据,还是会被服务器查询所阻塞?
提前致谢, BCH
4个回答

5
你需要制作一个多线程应用程序。然后你可以有一个后台线程轮询服务器(或更好的方式是在服务器上进行异步请求)。
请查看NSOperation和NSOperationQueue类。你将使每个后台任务被表示为NSOperation类的实例。这个类负责启动操作,确保它们按适当的顺序运行,并考虑您设置的任何优先级。
使用NSOperation的最常见方法是编写自定义子类并重写main方法。当NSOperationQueue安排其运行时,主要方法被调用以执行操作。
如果你不想要子类的开销,请查看NSInvocationOperation类。这是NSOperation的具体子类,它使附加操作到现有方法变得容易。NSInvocationOperation对象可以添加到NSOperationQueue中(就像NSOperations一样),因此你可以获得多线程而无需子类化。

1

你可以进行异步请求。但是你在这里提出了一个非常非常困难的问题。只是想确保你知道这一点。


是的,我意识到这是一个困难的问题,但我想StackOverflow是寻求解答的好地方。我更关心的是可行性,而不是源代码。 - user21293
是的,这是可能的。真正困难的部分是在投票之间保持游戏运行,当您不知道服务器何时响应需要多长时间时。 - Alex Wayne
是的,没错。我想到的这个应用程序即使数据延迟了几秒钟也不会出问题,因为它更多的只是查看其他玩家的棋盘。 - user21293

1

看一下 WiTap 示例(在 xcode 中进行全文搜索 witap)。它使用 NSStreams 来获得异步行为,而无需您自己管理线程或轮询。


0
使用OpenFeint。它可以让你轻松开发基于互联网的全球非实时回合制多人游戏。
我不确定GameCenter现在是否支持类似的功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接