Ios 构建基于回合的多人游戏服务器
我开始制作多人游戏,但由于我没有到期日,我尝试了不同的方法,但我觉得有些不对劲。 所以,我真的需要一个关于我应该最好使用哪些平台/工具/语言/技术的建议。 我必须说,我不相信光子、AppWrap、Skiller、Gamooga和其他东西。我不相信它们的规模会很大,也不会太贵,或者它们对于我的需求来说太大(我不是指尺寸,我是指它们有多少我不需要的东西) 首先,我将描述简化的游戏会话过程Ios 构建基于回合的多人游戏服务器,ios,mobile,multiplayer,high-load,Ios,Mobile,Multiplayer,High Load,我开始制作多人游戏,但由于我没有到期日,我尝试了不同的方法,但我觉得有些不对劲。 所以,我真的需要一个关于我应该最好使用哪些平台/工具/语言/技术的建议。 我必须说,我不相信光子、AppWrap、Skiller、Gamooga和其他东西。我不相信它们的规模会很大,也不会太贵,或者它们对于我的需求来说太大(我不是指尺寸,我是指它们有多少我不需要的东西) 首先,我将描述简化的游戏会话过程 三名球员开始比赛 每位玩家收到一个问题,应在10秒内回答 当玩家回答时,他应该能够看到任何其他玩家已经给出的答案
- 游戏应该在iOS/Android/Web上运行。这让我别无选择,只能基于HTTP
- 我寻找谷歌云端点,我非常喜欢它。它有iOS/Android/JS SDK,谷歌云平台有谷歌BigQuery,还有许多其他很棒的东西但是因为我需要实时回答,我不知道这是否合适(有通道API,但没有iOS客户端SDK,人们说它不太好)
- 然后我寻找Node.js和长轮询(客户端的AFNetworking),但这很难管理。我需要为客户端提供游戏状态更新(并且我需要发送delta)。这样,我需要跟踪每个玩家的所有变化。当玩家连接时,我应该检查是否有任何变化;如果是,请立即发送;如果不是,则侦听“更改”事件,然后发送。最后,代码看起来很难理解,很难理解,我不知道如何使它正确。有socket.io可以让服务器端的情况变得更好,但同样没有用于客户端的iOS SDK
我不知道从这里到哪里去。任何帮助都将不胜感激。基于Turn的体系结构实际上并不太复杂,因为滞后确实不是一个很大的问题,而且数据也不是经常发送的 我将创建两个web服务,一个用于配对,另一个用于处理实际游戏 配对只是让玩家排队,当有足够的玩家参加比赛时,服务会挑选一组玩家,给他们分配一个sessionID,并将玩家传递给游戏服务 对于游戏服务,区分客户端和服务上可以处理的内容是很重要的 游戏服务将存储每个sessionID(包括客户端)的所有游戏信息。这将允许单个服务轻松地同时管理数百个游戏。当一个玩家回答一个问题时,它会用sessionID向服务器发送一个请求。服务器将在会话中迭代客户端并将信息发送给它们 在用户回答之前,客户端可以处理隐藏问题。(如果您担心黑客攻击,您甚至可以加密其他问题信息)
服务器还将跟踪会话的计时器,当计时器过期时,它将向所有客户端发送响应,并忽略任何稍后的应答。一个整数可以存储在会话中,并封装在与sessionID的通信中,以便区分过去问题的答案。您可以在客户机上设置一个计时器进行预测,但服务器需要是计时器的权威,以避免作弊。基于回合的体系结构实际上并不太复杂,因为延迟确实不是一个大问题,而且数据也不是经常发送的 我将创建两个web服务,一个用于配对,另一个用于处理实际游戏 配对只是让玩家排队,当有足够的玩家参加比赛时,服务会挑选一组玩家,给他们分配一个sessionID,并将玩家传递给游戏服务 对于游戏服务,区分客户端和服务上可以处理的内容是很重要的 游戏服务将存储每个sessionID(包括客户端)的所有游戏信息。这将允许单个服务轻松地同时管理数百个游戏。当一个玩家回答一个问题时,它会用sessionID向服务器发送一个请求。服务器将在会话中迭代客户端并将信息发送给它们 在用户回答之前,客户端可以处理隐藏问题。(如果您担心黑客攻击,您甚至可以加密其他问题信息)
服务器还将跟踪会话的计时器,当计时器过期时,它将向所有客户端发送响应,并忽略任何稍后的应答。一个整数可以存储在会话中,并封装在与sessionID的通信中,以便区分过去问题的答案。您可以在客户端上使用计时器进行预测,但服务器需要是计时器的权威,以避免作弊。使用安全ssl https协议,使用您自己的身份验证令牌将作弊者拒之门外 客户需要跟踪每个玩家的时间跨度,而不是实际时间。在每个客户机上的回合结束后,将各个时间跨度发送到服务器 这样想吧。共有3个客户端,它们在开始这一轮时都会轮询服务器。因为这三个可能有不同的网络速度,你不知道谁会首先启动。那么什么时候