iPhone在线多人游戏需要什么类型的网络编程?
我问这个问题是关于游戏编程问题系列的一小部分 把问题作为主要问题 现在假设我想在iphone上开发一个游戏——一个简单的在线多人棋盘游戏 假设这是一张赌场的桌子 ChrisF的主要问题是告诉我iphone在线多人游戏的客户机-服务器体系结构 我想知道对于这种类型的应用,我必须做什么样的网络编程 客户机和服务器的职责和活动是什么 你可以提供我的链接,教程或到点的答案,任何东西都会对我有很大的帮助,将是非常可观的iPhone在线多人游戏需要什么类型的网络编程?,iphone,network-programming,client-server,Iphone,Network Programming,Client Server,我问这个问题是关于游戏编程问题系列的一小部分 把问题作为主要问题 现在假设我想在iphone上开发一个游戏——一个简单的在线多人棋盘游戏 假设这是一张赌场的桌子 ChrisF的主要问题是告诉我iphone在线多人游戏的客户机-服务器体系结构 我想知道对于这种类型的应用,我必须做什么样的网络编程 客户机和服务器的职责和活动是什么 你可以提供我的链接,教程或到点的答案,任何东西都会对我有很大的帮助,将是非常可观的 谢谢您需要编写一个在服务器上运行的套接字应用程序。当您访问wifi接入点或edge/3
谢谢您需要编写一个在服务器上运行的套接字应用程序。当您访问wifi接入点或edge/3g时,您可以从iphone应用程序向其发送数据。然后,该服务器可以处理传入的数据,并向连接的人员发送适当的回复 对于服务器套接字编程,请参阅本指南- 对于特定于iphone的套接字编程,请查看随iphone SDK提供的示例。还有一些基本信息。一个简单的在线多人棋盘游戏 考虑到iPhone并不总是连接到互联网,您可能需要一台服务器来存储状态。或者,你也可以规定,如果一个人失去了联系,游戏就结束了 客户对客户是后者的明显选择。这两个客户端都有一个端口,它们监听该端口,并根据板状态发送其他命令。像几乎所有的在线游戏一样,显而易见的选择是使用UDP,因为它快速且紧凑 对于服务器架构,您当然需要某种服务器来监听命令和游戏编号。它会将您的状态存储在服务器上的数据存储中,例如mySQL数据库。UDP甚至HTTP上的SOAP或JSON将是两个显而易见的选择
假设iPhone有一个像样的JSON或SOAP库,那么使用JSON/SOAP路由的第二种方法将更容易入门。我不知道Objective C中的UDP,但是在C中它需要一定程度的知识,这并不能让您快速地玩一些东西。正如您已经说过的,您将需要一个服务器,但您可以有两种设计:
- 服务器只能作为玩家之间的网关来连接彼此:它的两个用途是,第一,列出正在运行的游戏,第二,列出玩家的IP地址,以便每个客户端读取IP地址并连接到它们。这将减少web服务器的带宽和处理能力,并增加游戏主机的带宽和处理能力。在此配置中,其中一个客户端将充当服务器,并向其他客户端发送数据。如果你的游戏一次只有一个玩家在玩,而不是很多玩家,这就是你应该使用的,因为你支付的是服务器的力量
- 服务器还可以存储所有游戏的状态:它可能需要更多的处理能力和/或带宽,具体取决于您的游戏
对于你想做的事情来说,这可能有点太多了,但你也可以使用众所周知的方法。嗨。首先,你并不总是需要一个服务器:如果你的项目是一个由用户在同一个房间里玩的游戏,你可以使用蓝牙,因此,你不需要连接到互联网的网络。因此,你也许应该通过回答来明确你的问题:球员们会在同一个房间吗?因为如果你使用蓝牙或者使用互联网上的服务器,设计会有很大的不同。嗨,FIfifox,我在上面的问题中只留下了一个词,那就是“在线”,我正在编辑这个问题来更正它嘿,chaoz,谢谢你的回答,但我想知道客户端的部分,也就是iPhone。什么样的事情适用于iPhone网络编程?谢谢@克里斯我从你的答案得到很多东西你应该考虑的事实,你可能无法获得你需要的性能时,使用HTTP;如果您需要快速响应但高可靠性,请使用TCP套接字。SQLite是MySQL的轻量级替代品。