问题标签 [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 回答
2252 浏览

algorithm - 是否有一种可以在 Http 上工作的估计时钟偏差的算法?

我正在为 Windows Phone 7 编写多人游戏。我需要确保每个玩家的事件同时发生。我目前的方法是提前广播我希望事件发生的时间,并依靠手机的时钟相当准确。

问题是,我见过一些时钟不准确的情况——它可能会差几秒钟。所以我想做的是估计电话时钟的时间与服务器的时间有何不同。当然要考虑网络延迟,特别是因为对我开放的唯一网络协议是 Http。

所以我的问题是,有没有人知道我可以用来估计客户端和服务器之间时钟时间差异的算法,准确度约为 100 毫秒?

从我作为数学本科生的日子开始,我似乎记得有一个统计模型可以在这种情况下使用,我们正在采样一个假设为由一个常数加上一个误差量(延迟)组成的值,它可以是假设遵循某种分布。有人知道这一点,它真的适用吗?

0 投票
1 回答
917 浏览

android - 使用surfaceview进行绘图和蓝牙进行多人游戏的多人游戏(性能)

我目前正在为 android 构建游戏。游戏本身使用与谷歌登月器相同的架构。我还研究了蓝牙 api 和蓝牙聊天应用程序。我想制作我的游戏,以便可以使用蓝牙与 2 台设备互相玩。

我正在制作一个乒乓球风格的游戏。所以我有一个球和两个桨。每个玩家一个。我正在使用一个线程来更新游戏并重新渲染到表面视图。现在我正在使用这个线程将我的桨的位置发送到另一个设备。游戏以 50 fps 运行。这意味着我通过蓝牙进行了 50 次写入。这种方法有效,但有很大的延迟......

我应该如何提高蓝牙性能?我应该使用什么类型的输入和输出流?

亲切的问候

0 投票
4 回答
1768 浏览

node.js - 构建多人服务器的技术

我正在寻找编写自己的多人游戏服务器(很可能在 nodejs 中),我想知道应该使用什么协议来传输数据?数据报是发送信息的规范吗(我意识到它们不像 HTTP 那样确认传递,可以写在协议之上)?任何关于性能证明系统的建议都将是一个真正的帮助。

我想我正在寻找成功的技术来快速有效地处理数据传输(在服务器上维护状态和扩展是一个单独的问题,我对此有深入的了解)。

我希望最初支持桌面/手机游戏(MacOS、iOS 和 Android)。

0 投票
1 回答
8230 浏览

c++ - 游戏引擎设计:多人游戏和监听服务器

我的游戏引擎现在由一个工作的单人部分组成。我现在开始考虑如何做多人游戏部分。

我发现很多游戏其实并没有真正的单人模式,但是当你一个人玩的时候,你实际上也托管了一个本地服务器,几乎所有的东西都像在多人游戏中一样运行(除了可以传递数据包通过替代路线以获得更好的性能)

我的引擎需要进行重大重构以适应这个模型。将有三种可能的模式:专用客户端、专用服务器和客户端-服务器(侦听模式)

  • 游戏行业中使用监听服务器模型的频率如何?
  • 它有什么(缺点)优点?
  • 我还有什么其他选择?
0 投票
1 回答
506 浏览

php - Type-Racer, TheWikiGame 多人游戏类网站

我想知道如何制作一个让人们登录并相互竞争的网站。寻找起点或任何现有框架。

提前致谢!

0 投票
2 回答
3586 浏览

c++ - 具有物理功能的 2D 游戏的多人/网络选项

概括:

我使用 Box2D 作为物理引擎的 50% 完成的 2D 横向卷轴应该在最终版本中支持多人游戏。然而,目前的代码只是一个单人游戏。

  • 我现在该怎么办?
  • 更重要的是,我应该如何实现多人游戏并将其与单人游戏结合起来?
  • 将单人模式与多人模式分开编码是不是一个坏主意(就像 Notch 用 Minecraft 做的那样)?

单人游戏的性能应该尽可能好(使用环回服务器模拟物理来实现单人游戏模式将是一个问题)

完整背景/问题:

我正在使用 C++ 开发一个相对较大的 2D 游戏项目,其中物理是它的核心元素。(我为此使用 Box2D)

完成的游戏应该有完整的多人游戏支持,但是我犯了一个错误,我没有正确规划网络部分,直到现在基本上都在做单人游戏。

我认为可以以相对简单明了的方式将多人支持添加到几乎完成的单人游戏中,但显然,从我所读到的内容来看这是错误的。

我什至读到多人游戏应该从一开始就被编程,单人游戏模式实际上只包括托管一个不可见的本地服务器并通过环回连接到它。(我发现大多数 FPS 游戏引擎都是这样做的,例如 Source)

所以我在这里,完成了一半的 2D 横向卷轴游戏,我真的不知道如何继续。

简单地继续在单人/客户端上工作现在对我来说似乎毫无用处,因为我必须在以后重新编码和重构。

首先,向任何可能发现自己处于这种情况的人提出一个一般性问题:

  • 我应该如何进行?

然后,更具体的一个 - 我一直在尝试找出如何处理我的游戏的网络部分:

  • 单人游戏的隐形/环回服务器

这样做的好处是单人模式和多人模式之间基本上没有区别。不需要太多额外的代码。

一个很大的缺点:单人游戏中的性能和其他限制。将运行两个物理模拟。一个用于客户端,一个用于环回服务器。

即使您通过为来自回送服务器的数据提供直接路径来解决问题,例如通过线程的直接通信,单人游戏也会受到限制。

这是一个问题,因为应该允许人们同时玩大量的物体。

  • 分离的单人/多人模式

单人模式不会涉及服务器。

我不确定这将如何工作。但至少我认为会有很多额外的工作,因为所有的单人游戏功能都必须重新实现或绑定到多人游戏模式。

  • 多人模式作为单人游戏的模块

这只是我的一个快速想法。多人游戏可以由单人游戏组成,附加一个加载并连接到服务器的网络模块,该服务器发送和接收数据并更新单人游戏世界。

在回顾中,我很遗憾没有早点计划多人模式。我真的被困在这一点上,我希望这里有人能够帮助我!

0 投票
1 回答
778 浏览

macos - mac/ios多人游戏通信框架

我正在为 Mac 和 iOS 设备创建多人 2D 游戏。我将 cocso2d 用于图形/游戏引擎,但是对于多人通信使用什么我基本上是空白的。请注意,我不能使用中央服务器,例如 SmartFox、RedDwarf 等,因为我希望玩家为其他人“托管”游戏并能够在他们的 LAN、VPN 或我自己的服务器上玩游戏。

任何指针?我检查了lidgren,但它仅适用于.NET,因此不适合我。

编辑:通信必须是实时的,因此它可能会通过 UDP

0 投票
9 回答
7210 浏览

javascript - 有什么好的方法可以防止 JavaScript 多人游戏中的作弊行为?

想象一个带有滚动关卡的太空射击游戏。有哪些方法可以防止恶意玩家修改游戏以谋取利益?他可以做的很难限制服务器端的事情是自动瞄准,在可见区域外窥视,速度黑客和其他事情。

有什么方法可以防止这种情况?假设服务器是任何语言并且客户端通过 WebSocket 连接。

始终假设代码是 100% 可破解的。想办法防止客户完全重写(出于作弊的目的)作弊。这些可以是诸如编写安全游戏协议的方法、服务器端检测等。

0 投票
3 回答
1217 浏览

iphone - iOS 游戏中心配对,仅限好友?

我只是好奇,有没有可能做一个只能邀请朋友参加的游戏中心比赛?(即没有随机比赛)你会如何编码?

0 投票
1 回答
1615 浏览

javascript - 使用 Cocos2d-Javascript 和 Node.js 的多人游戏

可以使用 cocos2d-javascript + node.js 制作基于浏览器的多人游戏吗?如果是这样,是否有任何关于此的教程?

提前致谢!