我在游戏编程问题系列中的一个小部分提出这个问题。
请参考这个问题作为主要问题。
现在假设我想在iPhone上开发游戏 - 一个简单的在线多人棋盘游戏。
假设它是一张赌场桌子。
在主问题中,ChrisF告诉我iPhone在线多人游戏的客户端 - 服务器架构。
我想知道我必须为此类型的应用程序执行什么样的网络编程。
客户端和服务器将承担哪些责任和活动。
您可以为我提供链接、教程或简洁明了的答案,任何帮助都将是巨大的帮助,并且将受到真正的赞赏。
谢谢
我在游戏编程问题系列中的一个小部分提出这个问题。
请参考这个问题作为主要问题。
现在假设我想在iPhone上开发游戏 - 一个简单的在线多人棋盘游戏。
假设它是一张赌场桌子。
在主问题中,ChrisF告诉我iPhone在线多人游戏的客户端 - 服务器架构。
我想知道我必须为此类型的应用程序执行什么样的网络编程。
客户端和服务器将承担哪些责任和活动。
您可以为我提供链接、教程或简洁明了的答案,任何帮助都将是巨大的帮助,并且将受到真正的赞赏。
谢谢
考虑到iPhone并不总是连接互联网,您可能需要一个服务器来存储状态。或者您可以规定,如果一方失去连接,游戏结束。
对于后者,客户端到客户端会是显而易见的选择。两个客户端都有一个监听端口,并根据棋盘状态向另一个客户端发送命令。几乎所有在线游戏的显而易见选择都将使用UDP,因为它快速且紧凑。
对于服务器架构,当然需要某种服务器来侦听命令和游戏编号。它会在服务器上存储您的状态,例如mySQL数据库。这里,UDP甚至SOAP或JSON over HTTP都是两个显而易见的选择。
使用JSON/SOAP路线的第二种方法会更容易入手,假设iPhone有一个不错的JSON或SOAP库,但这不太可能实现。我不知道Objective C中的UDP,但在C中需要一定的知识水平,这不会让您快速获得可玩性。
服务器只能作为玩家之间连接的网关:它的两个用途是列出正在运行的游戏和列出玩家的 IP 地址,以便每个客户端都可以读取 IP 地址并连接到它们。这将需要更少的带宽和处理能力用于 Web 服务器,更多的处理能力用于托管游戏的客户端。在此配置中,其中一个客户端将充当服务器,并向其他客户端发送数据。如果你的游戏一次只有一个玩家玩,而不是很多玩家,那么这就是你应该使用的,因为你所支付的是服务器的能力。
服务器还可以存储所有游戏的状态:这可能需要更多的处理能力和/或带宽,具体取决于你的游戏。
无论如何,大多数时候你只需要一个机器(可以在游戏过程中更改,如第一种情况)来进行处理,其他机器只需接收计算出的数据即可。
要编写网络游戏,你需要了解套接字(在第一种情况下需要深入了解,因为你将不得不处理 NAT 问题、路由器阻止客户端之间的通信等问题)。关于这方面的指南是 Beej's Guide to Network Programming,这是这个主题上的头号资源,尽管它并不专注于游戏。