gpt4 book ai didi

iphone - 适用于 iOS 5/6 的在线实时多人游戏

转载 作者:行者123 更新时间:2023-12-03 16:17:20 25 4
gpt4 key购买 nike

我知道已经有一些关于这个主题的帖子,但我找不到我需要的答案,而且我不知道从哪里开始。

我想为 iPhone 创建一款在线多人游戏,玩家可以通过互联网一起玩游戏。例如,在 2 人赛车游戏中,一旦 2 名玩家匹配并连接,他们就可以实时控制自己的汽车并相互对抗。例如像马里奥车。

我知道游戏套件可以这样做,但只能通过蓝牙或同一 WiFi 网络。我希望这是通过互联网(仅限 WiFi)进行的,世界各地的玩家可以互相对战。

我知道已经有一些框架可以做到这一点。但它们成本高昂,并且取决于连接数量。有没有一种便宜的或者我敢说免费的方法来做到这一点?就像让游戏套件进行匹配,然后通过其他方式完成连接和发送数据一样?就像让 iPhone 来主持游戏一样?而不是拥有专用服务器。我没有预算,也没有知识和经验来创建专用服务器。

搭配很简单。有 30 个级别,任何 2 个想要玩同一级别的玩家都会匹配。

欢迎任何链接或书籍推荐。我的网络知识非常有限,不知道从哪里开始。

我可以阅读和学习这些技术,即使它们是技术性的,但我需要正确的资源来让我开始

提前致谢。

最佳答案

实际上,您可以使用 Game Kit API 完全满足您的需求。基本上,您使用 GKMatchMakerViewController 创建匹配。为了进行匹配,您可以使用 GKMatchMakerViewController 开始寻找其他玩家,一旦找到其他玩家,它就会通知 GKMatchMakerViewControllerDelegate 已找到匹配并将传递 GKMatch 对象。然后,您需要一个实现 GKMatchDelegate 协议(protocol)的对象来处理实际数据。您将委托(delegate)对象设置为所传递的 GKMatch 的委托(delegate),然后使用 GKMatchDelegate 协议(protocol)中的方法(例如 – match:didReceiveData:fromPlayer:)以及 GKMatch 中的方法来发送数据。

这里有一些示例代码来帮助解释。这只是最基本的要求,您当然需要实现游戏玩法以及一些错误处理。

此外,您可以在这四个链接中找到所需的文档

GKMatchMakerViewController GKMatchMakerViewControllerDelegate GKMatch GKMatchDelegate

- (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID{
if(matchStarted){
Packet *msg = (Packet *)[data bytes];
//do whatever you want with the data received from other people
}
}

-(void)sendPosition{
//call this to update the other players devices (should be self explanatory)
NSError *error;
Packet msg;
//Here the msg object is actually a typedefed struct name Packet. I use this to send and receive data
NSData *packet = [NSData dataWithBytes:&msg length:sizeof(msg)];
[myMatch sendDataToAllPlayers: packet withDataMode: GKMatchSendDataUnreliable error:&error];
if (error != nil)
{
// handle the error
}
}

#pragma mark MatchSetup

- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match{
[self dismissModalViewControllerAnimated:YES];
self.myMatch = match; // Use a retaining property to retain the match.
self.myMatch.delegate = self;
if (!matchStarted)
{
// Insert application-specific code to begin the match.
}
}

关于iphone - 适用于 iOS 5/6 的在线实时多人游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11040263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com