【问题标题】:iPhone Game center reconnectiPhone 游戏中心重新连接
【发布时间】:2010-10-04 17:47:35
【问题描述】:

我有一个四人乒乓球游戏,当一个玩家断开连接时(由于任何原因,来电,无聊,赶公共汽车)其他玩家可以继续玩。但是我希望那个人在他的通话结束后能够重新连接,有没有人知道我如何才能做到这一点?

当两个玩家进化时,我会重新邀请那个人,但在这种情况下我该怎么做?

编辑: 我忘了提到我正在使用 Game Center API。所以我使用 match 对象向玩家发送数据,但是在玩家断开连接后,比赛是否仍然有效,如果没有,是否有办法重新加入比赛?

【问题讨论】:

  • 该死我忽略了这个部分:
  • 将球员添加到现有比赛中 有时,您可能已经有一场比赛,并且只想向其中添加球员。例如,如果您的游戏需要四名玩家并且一名玩家断开连接,您可能希望提供寻找替代者的选项,而不是中止正在进行的比赛。为此,您使用类似于清单 5-7 中的代码,但不是调用 findMatchForRequest:withCompletionHandler:,而是您的应用程序调用 addPlayersToMatch:matchRequest:completionHandler 方法,为比赛添加附加参数以将玩家添加到.

标签: iphone center


【解决方案1】:

1) 创建一个将这个用户定义为这个游戏的一部分的密钥(可能是一个与这个游戏的所有玩家共享的 UUID 以及一个用户 x 的 y 组件?)

2) 搜索中断后重新启动应用的方法

3) 重新启动,发送唯一密钥到服务器,重新加入游戏

【讨论】:

  • 首先凯文,感谢您的回复。其次,这是关于 Game Center,我正在使用 Match 对象,我可以存储这个对象,但我不确定它是否足以重新加入比赛。我现在就试试。
【解决方案2】:

也许您的游戏有用户名?因此,如果玩家断开连接,然后在连接到服务器时再次出现,请检查该用户名是否在任何以前的游戏/房间中?注意:这意味着用户名应该是唯一的。

否则,做某种用户 ID 系统,每个新用户注册到您的游戏,都会获得一个从前一个用户注册的数字递增的数字,以便在客户端保存该数字,就像浏览器中的 cookie 一样,并在断开连接的玩家加入时将该数字发送到服务器再次。

例如,通过对保存的文件进行逆向工程或挑选在另一部手机上断开连接的用户名,这两种方法都可以很容易地被利用。

最好的方法是使用某种用户名/密码系统,使所有用户名都是唯一的。

如果用户第 2 次/第 3 次连接,那么服务器应该发出某种消息,说明此人当前已登录?

如果那个人被打断了,那么要么发送一个断开数据包,或者如果你不能,服务器可以处理这个问题。与服务器的连接将丢失,因此用户的状态变为断开连接。或者以某种方式连接仍然存在?也许是UDP套接字?如果没有响应,服务器将尝试发送 ping-pong 类型的数据包,那么显然用户已与该应用断开连接,因此将状态设置为断开连接等。

【讨论】:

  • 当用户再次登录(第 2 次,第 3 次,...)时该怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多