问题标签 [multiplayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4893 浏览

objective-c - GameCenter 邀请处理程序

尝试实现多人游戏。使用Game Center 中的示例 - 发送和接收数据

一切似乎都很好,但在苹果文档中也有关于邀请处理程序的说法。

问题很简单:我不知道在哪里添加这段代码。

0 投票
2 回答
1162 浏览

iphone - iphone多人游戏设计

我已经搜索并阅读了许多文章并查看了 GKTank 苹果示例(看不到有关我的问题的任何细节,似乎在事件发生时对其进行处理)但我看不到似乎可以回答以下问题的示例或教程

在通过蓝牙/互联网(可能)进行的多人游戏中,您如何同步玩家交互,以便在考虑延迟等的情况下产生正确的游戏结果......

例如:

在通过蓝牙连接的两个独立设备上,每个播放器 A 和 B 都会显示一个按钮

玩家 A 按下按钮(玩家 A 正在主持游戏,因此延迟不是问题)玩家 B 在玩家 A 之前按下按钮,但他与玩家 A 设备的连接至少有 200 毫秒的网络延迟

问题:游戏需要知道玩家 B 先被按下,即使玩家 A 的触摸请求会先到达游戏代码 - 即对主机玩家没有任何优势。

我知道触摸事件有时间戳,所以我可以确保按下的实际时间从玩家 B 发送到游戏代码......但不确定这是否是正确的方法,以及它是否是从那里去的地方。 .

我希望答案在于某个游戏时间周期,其中触摸不会立即处理,而是在一个游戏周期内......

对此的任何帮助或指向教程或处理此问题的特定源代码的指针将不胜感激。

亚当

0 投票
0 回答
429 浏览

networking - iOS 开发:建议使用 GameCenter 来吸引大量受众?性能问题?

我已经开始计划一款简单的 iOS 游戏,其中包含多人游戏组件。快速浏览一下 Game Center,在我看来,它提供的功能完全符合我的计划。

使用它进行开发要比负责建立网络、开发服务器代码、不必担心服务器与各种 iOS 设备的通信等事情要容易得多。

然而,乍一看,它确实有点高级(可能对我来说太高级了?)。我不习惯看起来这么简单的事情(特别是对于像在线多人游戏这样复杂的事情,无论实现多么简单)。如果我使用它而不是完全从头开始开发多人游戏组件,我会期待多大的性能权衡(如果有的话)?(假设,例如,多人活动类似于每 1-2 秒互相发送小短信)

更重要的是,我希望覆盖尽可能多的受众,而且我知道 Game Center 不适用于 2G 和 3G iPhone,以及第一代 iPod touch。收集这些设备的用户群是否足够大,以至于忽略它们会对收入产生相当大的影响?

很抱歉,这些问题与代码没有直接关系(我不知道为什么我期待 5 个 SOers 用火把和干草叉冲进来尖叫着“无效的问题!”......?),但我希望我能在此之前得到一些答案。

0 投票
3 回答
14812 浏览

networking - 流畅的多人游戏移动

我正在开发一款多人角色扮演游戏,(不,它不是 mmorpg。;)

我目前的设置是这样的。

客户端告诉服务器“我要向前移动”/“我要向后移动”,服务器然后更新您的实体,并通知该区域中的所有客户端有关更改。服务器还每 20 毫秒更新每个实体,并每 100 毫秒向客户端发送更新,这些更新包含位置、速度、旋转等。

到目前为止一切顺利,但是我没有任何东西可以平滑客户端数据包之间的移动,我必须说,我无法让它工作。我一直在阅读有关预测、插值、deadreackoning 的内容,但这对我来说都是一团糟。

所以现在我只是在做类似“Position = Packet.Position”的事情,这会导致非常卡顿的动作。

所以,我需要帮助的是,我如何获得更流畅的运动?一直在查看 XNA 预测样本,但我无法正确理解。

谢谢 //F

0 投票
2 回答
1526 浏览

ios - 游戏中心:找到比赛后未调用比赛代表

我正在尝试使用游戏中心:多人

到目前为止,玩家都在向游戏中心进行身份验证,他们可以发送/读取分数和成就。对于多人游戏功能,我尝试了两种方法: - 使用游戏中心界面来查找匹配项。- 以编程方式查找匹配项。

对于这两种方式,我都有以下问题:未调用匹配委托的 match:player:didChangeState: 方法。在苹果文档中,如果一个玩家连接或断开连接,就会调用这个委托。

在我的情况下,这个代表永远不会被调用。我认为我错过了一步。在我的委托实施之后(如苹果文档中所述)。

以及查找匹配项的代码。

谢谢你的帮助。

0 投票
1 回答
5047 浏览

erlang - 多人游戏服务器

我想编写一个服务器端应用程序来管理多人游戏通信(可能用于多个简单的游戏,主要是回合制)。它应该是健壮的和高度可扩展的。

我想更多地了解我所拥有的技术可能性。有人对Erlang有任何经验吗?创建服务器是否比使用其他语言花费更多的开发时间?它比其他更快,还是具有更好的可扩展性?

你会说哪种语言最好?

0 投票
2 回答
6246 浏览

android - 安卓/iOS回合制棋盘游戏的游戏服务器

我目前正在编写一个 iPhone 游戏,我想创建一个在线多人游戏模式。将来这个应用会移植到安卓设备上,所以我想知道如何创建游戏服务器?

首先,我应该选择哪种语言?如何使服务器能够与用 Objective-c 和 Java 编写的程序进行通信?

那么,如何有效地做到这一点呢?如果我通过客户端打开一个套接字会很好(会有 2 个)?我应该向服务器发送什么样的信息?给客户?

谢谢你的时间。

0 投票
2 回答
1764 浏览

iphone - 我们需要什么来构建多人 iPhone 应用程序?

我现在正在为一家想要为 App Store 开发多人游戏的小型初创公司做一些工作。基本理念是游戏的用户可以查看其他人是否在线并进入 2 人回合制游戏。

我对这类事情没有经验,所以我不负责那部分,但我们需要知道正确的问题来询问潜在的员工。苹果是否为我们想要实现的目标提供了一个框架?您希望能够设置和维护它的人拥有什么样的经验?我知道我们需要一个 SQL 服务器来管理帐户和统计信息等,但除此之外我不太确定。

你将如何着手解决这个问题?

0 投票
2 回答
866 浏览

php - 在小型多人游戏中使用 memcached/redis/alternative 更新对象的位置

所以我正在制作一个小型多人游戏,我使用 php 作为后端。我基本上需要设置和获取很多对象的位置,在这种情况下,一个对象是一个具有 X/Y 位置的玩家。

我不需要实时进行,但可能每 5-20 秒一次,因为它是基于回合制的。我不介意我是否会丢失数据,因为客户会不时重新设置头寸。

我正在考虑用 memcached 或 redis 来做这件事。基本上每个玩家都是一个“钥匙”,这个钥匙将包含一个带有一些相关信息的对象,但最重要的是 X/Y 位置。

也许我的做法是错误的,但是,这种方法似乎很容易做到,但是我不确定它的效果如何,因为我对这两种解决方案都没有很多经验。

我应该补充一点,我们在这里讨论的可能是 10 个玩家,因此 10 个具有 x/y 位置的对象需要不时更新。

可以这样做吗,有没有比memcached/redis更好的解决方案?如果不是这两个中的哪一个在性能方面会更好?据我了解,这几乎是一回事,只是 redis 提供了更多功能(可能不一定需要)。

哦,是的,我显然也在使用 APC 和 php。谢谢!

0 投票
1 回答
3460 浏览

google-app-engine - 使用 Google App Engine 的实时多人游戏可行吗?

我目前正在开发一款实时多人游戏,并一直在评估各种基于云的托管解决方案。我不确定 App Engine 是否符合我的需求,如果有任何反馈,我将不胜感激。

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

服务器在处理来自玩家的 POST 时,首先将接收到的哈希码写入内存缓存。如果来自其他玩家的哈希还没有在内存缓存中,它会等待并定期检查内存缓存中其他玩家的哈希。一旦两个哈希都在内存缓存中,它就会比较它们是否相等。如果它们相等,则服务器将每个玩家的命令作为 http 响应分别发送给另一个玩家。

像这样的一轮应该持续大约半秒,这意味着每个玩家每秒有两个请求。

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

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

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