问题标签 [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 投票
1 回答
1075 浏览

multiplayer - 在智能手机上制作多人游戏有什么用?

在黑莓和安卓等智能手机上制作多人游戏究竟需要什么?我知道我必须通过在 Java 中使用套接字来实现服务器。如何?任何人都可以指导我吗?

0 投票
1 回答
230 浏览

flash - Flash 游戏:所有资源都不会为不同的用户完全加载

我正在运行一个在线 Flash 多人游戏。然而,我最近遇到了一个问题,有些用户实际上无法完全加载运行游戏所需的所有资源。对于不同的用户,用户卡住的百分比是不同的(例如,一个用户可能会卡在 43%,而其他用户可能会卡在 91%)。

我不认为这些文件有任何问题,因为资源已为大多数用户完全加载,并且游戏对他们来说工作得很好。有没有人遇到过这样的问题?如果是这样,您是否设法找到解决方案?任何想法将不胜感激。

谢谢, SK

0 投票
4 回答
2816 浏览

flash - 我可以使用 Flash 制作在线多人游戏吗?

我想做一个简单的游戏,这样我就可以在学校和我的朋友们玩了。学校使用mac。另外,如果您不能使用 Flash 制作在线游戏,我可以使用什么。如果我最终擅长制作游戏,它们也可以是 3-d 吗?

0 投票
1 回答
5593 浏览

javascript - 为什么 WebSocket.onmessage 事件不会触发?

在玩了几个小时之后,我根本找不到解决方案。我正在为我正在开发的基于画布的在线游戏使用“node.js”在 WebSocket 服务器上工作。我的游戏可以很好地连接到服务器,它接受握手,甚至可以向服务器发送消息。但是,当服务器响应客户端时,客户端并没有收到消息。没有错误,什么都没有,它只是平静地坐在那里。我已经撕开了我的代码,尝试了我能想到的一切来解决这个问题,但是,唉,什么都没有。

这是我的服务器代码的剥离副本。正如我之前所说,握手工作正常,服务器接收数据正常,但将数据发送回客户端却没有。

这是我的客户端代码。它使用 Chrome 原生 WebSockets。

0 投票
4 回答
2364 浏览

network-programming - 什么样的套接字服务器协议是高效的?

当我为一个简单的客户端<>服务器多人游戏编写一个简单的服务器时,我想到了以下使用翻译库的基于文本的协议。基本上,每个命令都有一定的含义,例如:

因此,客户端将简单地广播以下内容以通知玩家现在正在向前移动并向右转:

或者,传送到 100x200:

其中 # 是参数分隔符。

套接字连接将连接到玩家标识符,因此无需使用协议广播标识符即可知道消息属于哪个玩家。

当然,所有数据都将在服务器端进行验证,但这是一个不同的主题。

现在,这对我来说似乎非常有效,只有 2 个字节来通知服务器我正在前进并右转。

但是,我看到的大多数“专业”代码片段似乎都在发送对象或 xml 命令。这对我来说似乎需要更多的服务器资源,不是吗?

为什么我的基于文本的协议会高效,我没有经验的逻辑是有缺陷的吗?或者实时动作多人游戏的推荐协议是什么?

我想设置一个尽可能高效的协议,因为我不想使用多个集群/服务器来覆盖我的 2D 多人游戏的过多带宽,以及安全同步问题和麻烦。

0 投票
2 回答
7046 浏览

multiplayer - 简单的网络游戏、客户端-服务器架构规划

我正在编写简单的游戏,我计划将多人游戏(通过网络)作为我的大学项目。我正在考虑客户端-服务器通信的两种方案:

物理(它们是微不足道的!实际上我应该称之为“碰撞测试”:))仅在服务器机器上处理。因此通信看起来像

服务器接收事件并将其广播给所有其他客户端。

哪一个更好?或者可能一个都没有?

0 投票
2 回答
3235 浏览

client-server - FPS多人游戏服务器更新客户端的一般策略是什么?

我和一个朋友正在讨论 FPS 服务器如何更新连接到它的客户端。我们观看了一个人在《战地:坏连队 2》中作弊的视频,看到它如何突出敌人在屏幕上的位置,这让我们思考。

他的论点是服务器只用与客户端直接相关的信息更新客户端。即如果敌方玩家距离客户端太远或出于效率原因不在客户端的视线范围内,服务器将不会发送有关敌方玩家的信息。不过他不确定——他举了一个例子,一个人躲在石头后面,看不到任何人。如果玩家突然出现在他视线范围内的三个玩家的位置,那么在服务器传输必要的信息之前,他们会在屏幕上呈现 50 毫秒的延迟。

我的论点是相反的:服务器向客户端发送有关每个玩家的所有信息,并让客户端整理出哪些是允许的,哪些是不允许的。我认为服务器将所有内容发送给客户端并让客户端完成繁重的工作实际上会降低计算成本,可以这么说。我还认为这就是作弊程序的工作原理——它们拦截服务器数据包,获取敌人的位置,然后在客户端的视图中显示它们。

那么问题来了:现代第一人称射击游戏服务器采用哪些一般策略或策略来保持其客户端更新?

0 投票
3 回答
12109 浏览

game-engine - 网络游戏客户端如何能够如此快速地通过互联网交换数据?

让我们想象一下非常简单的游戏......我们有一个迷宫和两个玩家试图通过互联网实时找出出口。

每次移动游戏客户端都应该将玩家的坐标发送到服务器并接受另一个客户端的当前坐标。怎么可能使这种交换如此之快(就像所有现代游戏一样)。

好的,我们可以使用 memcache 或类似的技术来减少服务器端的数据挖掘操​​作。我们也可以使用最快的网络服务器等,但我们仍然会遇到时间问题。

所以,问题是...

  1. 游戏客户端通常使用什么协议与服务器交换信息?
  2. 有哪些服务器技术可以解决这个问题?
  3. 什么算法适用于游戏中的延迟战斗等。
0 投票
1 回答
909 浏览

flash - 在线 Flash 游戏的轮询与套接字服务器

我想做一个在线Flash游戏,它会有社交功能,但游戏主要是单人游戏。例如,屏幕上不会同时出现两个玩家,社交互动将通过异步消息进行,不会有实时聊天什么的。大部分逻辑将发生在客户端,服务器将验证客户端逻辑,但它不需要完全同步,这就是我认为轮询可能令人满意的原因。

我在很多地方读到套接字服务器比使用轮询在线游戏更有效,但这主要是考虑到比我所描述的游戏更多的多人游戏和多人互动的游戏吗?如果许多用户同时在线玩,但每个人都在玩一个相对孤立的游戏,并且没有与每个玩家实时交互,那么轮询可能没问题,或者无论如何如果你有一个在线游戏都建议使用套接字您设想多人同时玩的游戏?谢谢!

0 投票
2 回答
698 浏览

algorithm - 在线大厅系统-游戏列表

一直在阅读有关该主题的一些信息,出于好奇,在线游戏维护了一个列出游戏的“游说”系统;
他们如何使每个客户端与当前游戏列表状态保持同步?

我说的是“客户端要求更新游戏列表”的术语,而不是事件驱动的术语(游戏的状态发生变化并立即广播它<---不可扩展!)。

可能的场景:
一台服务器拥有 5000 个与在线玩家的连接。
它有一个包含 1000 个游戏的列表。
客户要求每隔一秒更新一次游戏列表。
现在服务器需要遍历所有游戏列表并比较每个特定游戏的最后更新时间,然后如果它看到玩家的最后更新较旧,它将发送更新。
这意味着每一秒都会有 (5000 * 1000 = 5,000,000 )次迭代

有什么实用的方法可以避免吗?
你已经这样做了吗,可以和我分享一个小费吗?

我一直在考虑有一个缓存。你的解决方案是什么?