标签: multiplayer

游戏中心 - 发送和接收数据

编辑:我已经做了一个干净的,新的项目,但仍然无法让它工作.请下载它,有一些代码可供查看,可能很容易让专业人士或任何人远程体验,看看我做错了什么.只是试图发送整数.

http://www.2shared.com/file/fPOCLlg5/gkTest.html

你好

我正试图在我的iphone游戏中实现Game Center多人游戏,并且无法理解Apple Docs和第三方有关发送和接收数据的样本.

有人可以请在官方Apple文档中解释代码示例:http: //developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/GameKit_Guide/MatchesandVoice/MatchesandVoice.html#//apple_ref/doc/uid/TP40008304-CH10-SW4

或者帮我弄清楚我提供的示例代码.它是一个预先构建的类,用于处理所有游戏中心任务,以及用于发送和接收数据的样本将是:

- (void) sendPosition
{
    NSError *error;
    PositionPacket msg;
    msg.messageKind = PositionMessage;
    msg.x = currentPosition.x;
    msg.y = currentPosition.y;
    NSData *packet = [NSData dataWithBytes:&msg length:sizeof(PositionPacket)];
    [match sendDataToAllPlayers: packet withDataMode: GKMatchSendDataUnreliable error:&error];
    if (error != nil)
    {
        // handle the error
    }
}
Run Code Online (Sandbox Code Playgroud)

接收:

- (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID
{
    Packet *p = (Packet*)[data bytes];
    if (p.messageKind == PositionMessage)
        // handle a position message.
}
Run Code Online (Sandbox Code Playgroud)

关于此代码形成官方文档的重要问题是:

哪里PositionPacket/ Packet …

iphone multiplayer objective-c game-center

6
推荐指数
1
解决办法
8103
查看次数

使用Google App Engine的实时多人游戏是否可行?

我目前正在开发一款实时多人游戏,并且一直在评估各种基于云的托管解决方案.我不确定App Engine是否符合我的需求,并会对任何反馈表示感谢.

从本质上讲,我希望系统能够像这样工作:玩家A计算第n轮,并在该轮结束时生成游戏状态的哈希.然后,他将该轮的命令和散列作为http POST发送到服务器.玩家B同时做同样的事情.

服务器在处理来自播放器的POST时,首先将收到的哈希码写入内存缓存.如果来自其他播放器的散列还没有在memcache中,它会等待并定期检查memcache以查找其他玩家散列.只要两个哈希都在memcache中,它就会将它们进行相等性比较.如果它们相等,则服务器将每个播放器的命令作为http响应发送给相应的另一个播放器.

这样的一轮应该持续大约半秒钟,这意味着每位玩家每秒两次请求.

当然,这种方式只有在至少有两个应用程序实例运行时才能工作,因为必须并行处理两个请求.此外,内存缓存必须在所有实例上保持一致,相当可靠,并立即更新.

我不能使用XMPP,因为我希望我的游戏能够在受限制的网络中运行,所以它必须限制在端口80上的http.

有没有办法强制应用程序的两个实例始终运行?我的设计中是否存在明显的缺陷?您认为这样的架构可能适用于App Engine吗?如果没有,您会建议基于云的解决方案?

google-app-engine multiplayer cloud-hosting

6
推荐指数
1
解决办法
3416
查看次数

android回合制多人自定义邀请屏幕

我正在尝试为基于回合制的多人游戏的Google Play服务附带的"玩家选择器UI"创建自定义UI屏幕.可以在此处看到默认值:https: //developers.google.com/games/services/android/realtimeMultiplayer?hl = fr-CH#invite_players_option

该页面(我知道的实时)提到了如何使用默认UI以及可以使用自定义UI,但没有提到自定义外观的实际方法.我不是那些巨大的图标的粉丝,而是一个简单的列表.我一直试图研究这几天,但什么都没发现.

我正在寻找任何帮助我需要调用哪些方法来自定义.是在onActivityResult方法中完成的吗?有没有人有运气做类似的事情?

谢谢

user-interface android multiplayer google-play-services google-play-games

6
推荐指数
1
解决办法
599
查看次数

使用 firebase 进行实时多人游戏

我刚刚使用 flutter 创建了一款手机游戏,并希望将其扩展到多人在线游戏。所以我考虑用 firebase 来制作它。我对这个领域相当陌生,所以我希望我的问题听起来不太愚蠢。

当我的游戏中的角色流畅地移动时,我需要每帧至少更新一次他们的位置,因此如果使用 firebase,我需要一个每秒运行 60 次且永不结束的云函数。然后,该函数将获取游戏中的所有对象(存储在实时数据库中)并根据其速度更新它们的位置。更新后的值将写回客户端侦听的数据库。他们更新游戏中的值并将对象渲染到正确的位置。每当玩家与游戏交互时,就会调用另一个云函数来处理该问题并更新所需的内容。

是否有可能做出这样的事情并且有意义吗?以这种方式使用云函数对我来说听起来不太顺利,但我没有其他实现它的想法。它将如何影响成本?听起来像很多函数调用和数据库读/写..

如果这完全不可想象,还有什么替代方案呢?我不太介意使用另一个数据库和/或框架来制作游戏本身。

非常感谢

mobile multiplayer firebase flutter flame

6
推荐指数
1
解决办法
6346
查看次数

用于带有中继的游戏对象的 Unity Netcode - 计算 ping

我在计算 Netcode 中玩家的 ping 时遇到问题。我有一个大厅列表,我想在客户端连接之前显示每个大厅的预期 ping。目前,我正在使用它NetworkManager.Singleton.NetworkConfig.NetworkTransport.GetCurrentRtt(0);来计算 ping。有没有办法在完全连接到中继之前知道 ping?

multiplayer unity-game-engine

6
推荐指数
1
解决办法
1686
查看次数

游戏中心InviteFailed

我正在尝试发送游戏中心邀请.从模拟器发送到设备或从设备发送到模拟器会导致InviteFailed错误.

可能是什么问题?实施不正确?互联网速度低?或者是否无法使用模拟器测试Game Center邀请?

谢谢 邀请失败

iphone multiplayer objective-c game-center

5
推荐指数
2
解决办法
2868
查看次数

需要帮助android多人游戏开发

我是Android游戏新手.我必须开始我的新项目,这只是一个多人游戏,我想知道android是否支持多人游戏?如果是,是否有任何sdk /游戏引擎/库或其他任何支持多人游戏的东西.我在很多博客中都读过它,但我没有找到任何有用的信息. openfeint, plus+, scoreloop , crystal是不提供Android多人游戏的支持.

如果您对此有任何了解请分享,任何博客/文档/示例app/demo都会对我有所帮助.

谢谢,Mahaveer

android multiplayer

5
推荐指数
1
解决办法
2678
查看次数

我是否需要为每个加入的玩家提供单独的套接字和线程?[JAVA]

我一直在学习插座(我很年轻),我认为我对Java套接字有很好的把握.我决定创建一个简单的多人Java 2D社交游戏.我的目标是让服务器输出玩家的X,Y坐标并每10毫秒聊天一次.根据我的阅读,我的平均逻辑告诉我,一次只有一个用户可以连接到套接字.因此,对于每个连接的玩家,我都需要一个单独的线程和套接字.

每个播放器是否需要一个ServerSocket和线程?

java sockets multithreading multiplayer

5
推荐指数
2
解决办法
6052
查看次数

Google Play游戏服务 - 实时多人游戏 - STATUS_CLIENT_RECONNECT_REQUIRED

我正在尝试使用Google Play游戏服务在我的Android游戏中实现实时多人游戏,但是当我调用的方法被调用时,我遇到了一个问题.onRoomCreated

  @Override
  public void onRoomCreated(int statusCode, Room room) {
    if (statusCode != GamesStatusCodes.STATUS_OK) {
      stopKeepingScreenOn();
      showGameError();
      return;
    }
    roomId = room.getRoomId();
    showWaitingRoom(room);
  }
Run Code Online (Sandbox Code Playgroud)

状态代码总是不同的GamesStatusCodes.STATUS_OK,实际上等于2(+ room参数为空),这意味着根据Google:

GoogleApiClient处于不一致状态,必须重新连接到该服务才能解决问题.使用当前连接进一步调用服务不太可能成功.

但如果我打电话,没有变化getApiClient().reconnect().所以我真的很感激任何帮助.有关信息,请getApiClient()参阅GameHelper我扩展的类,该类在Android示例页面的库中提供.

android multiplayer libgdx google-play-services google-play-games

5
推荐指数
1
解决办法
1021
查看次数

node.js中的多人游戏架构-状态管理和Redux同步

我正在实施一个在线TCG游戏(想像《炉石传说》 /《魔幻》)作为一个宠物项目,我决定将React / Redux用于客户端UI。这使我考虑在服务器上使用Redux以及维护每个客户端/游戏的全局状态的可能性。

它的工作方式是,游戏中的玩家会将事件(通过socket.io)发送到服务器,该事件将根据游戏状态和规则进行验证,然后触发服务器状态的更改并将其传播到服务器各自的客户。

问题是,我觉得我将不得不跳很多圈来使所有游戏规则/逻辑符合Redux的更多功能/不变方法,而不是将我的所有游戏实体建模为类。另外,由于每个玩家对自己对手的信息都很有限(例如,您看不到另一位玩家的手),因此我必须具有一些自定义逻辑,用于根据接收数据的玩家来过滤状态信息。

另一方面,我喜欢这样的想法:在每个域的不同处理程序之间分配集中状态,可预测的数据流以及回归到先前状态的可能性。同样,Redux中的动作也非常适合命令模式,这对于这类游戏很有用。

我是否应该像状态管理器那样实现自定义Redux,但放弃不变性部分呢?对于这种情况,是否有更“尝试而真实”的方法?

architecture state multiplayer node.js redux

5
推荐指数
1
解决办法
549
查看次数