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

sockets - 客户端-服务器多人 (MMO) 游戏中的运动“算法”?

我一直在写一个 2D flash 多人游戏和一个套接字服务器。我对客户端和服务器之间的移动算法的最初计划如下:

  • 每当这些变化时,客户端都会通知服务器玩家的移动模式(前进或不移动)和玩家的转弯模式(不转、左转或右转)。
    • 服务器每隔几毫秒循环一次所有玩家,并根据时间差计算转角和移动距离。客户端进行相同的计算。

我当前对客户端的计算(在服务器中使用相同的数学)==>

车削

移动

这似乎工作得很好。为了考虑延迟,服务器不时地通过发送此数据来更正客户端的信息。

有了这个系统,很少有带宽用于处理运动。但是,我的服务器和客户端的坐标和角度之间的差异太大了。我是否应该扩展我的“算法”,同时考虑到用户的延迟?或者有没有更好的方法来处理客户端<>服务器多人游戏中的移动并且性能很好?

0 投票
2 回答
427 浏览

c++ - 使用 MVC 模式避免多人游戏和回放中的同步问题的技巧

只是想知道人们有什么技巧可以避免多人游戏中的游戏同步问题以及使用模型视图控制器模式中的模型记录游戏逻辑的重放

到目前为止,我知道在模型之外的任何地方提供对模型的非 const 访问不是一个好主意,但除此之外,我有点卡住并且仍然存在许多同步问题

谢谢

0 投票
3 回答
156 浏览

media - 自己网站的最佳网络媒体播放器?

自定义控件,简单,更多功能和插件...

0 投票
4 回答
2093 浏览

java - Flash 客户端和 Java 服务器之间的持久连接

我是 Flash 新手。我打算在 Flash 中创建一个游戏客户端(在浏览器中运行),它需要与用 Java 编写的服务器通信。客户端和服务器之间的连接需要是持久的。

我知道 XMLSocket - 这是唯一的方法吗?有什么建议吗?

谢谢!

0 投票
4 回答
8538 浏览

synchronization - 好的多人/mmo 客户端<>服务器游戏在移动计算中使用延迟吗?

这里有几个问题。

想象一下,我有客户端 A 将向服务器发送以下消息:“开始移动”。

服务器不会立即收到此消息,因为延迟会导致延迟。

问题 1:ping(或更好:往返时间​​)是客户端向服务器发送消息并收到响应所需的时间。如果您可以忽略服务器注意到它已收到消息并开始发送响应所需的时间(这应该很短),这是否意味着以下情况?

  1. 客户端向服务器发送某些信息所需的时间 = 往返时间 / 2
  2. 服务器向客户端发送内容所需的时间 = 往返时间 / 2

因此,当客户端 A 发送该消息时,服务器应该会在客户端发送消息后的往返时间/2 毫秒内收到该消息。这引出了下一个问题。

问题 2:客户端是否应该先发送包,然后等待往返时间/2 毫秒,然后才能在客户端实际执行该命令(在这种情况下:向前移动)以补偿延迟/滞后?

现在,服务器将向附近的所有玩家发送以下消息:“客户端 A 正在向前移动”。然后,这些客户将确保客户 a 的角色开始移动,这将引导我进入下一个问题。

问题3:接收其他客户端移动的消息的客户端是否应该考虑到该消息是由服务器往返时间/ 2毫秒前发送的?因此,用于移动计算时间戳的当前时间应该减少往返时间/2?

在我看来,所有这些方法都会确保客户端之间的同步得到改善,因为考虑到了延迟。这是正确的做事方式吗?大多数其他优秀的多人游戏都这样做吗?您想给出任何评论、建议、替代方案或随机但相关的呼喊?提前致谢。

0 投票
2 回答
249 浏览

java - midlet 的线程安全检查变量

我在客户端用 j2me 编写游戏,连接到用 java 编写的服务器。该游戏将具有聊天功能,但作为次要功能。

对于连接到服务器的每个 midlet,都会生成一个服务器游戏线程。这些线程在它们之间进行对话,以便它们可以同步并轮流写入服务器中的一系列配置文件。现在,如果在其中一个 midlet 中写入聊天消息,它会被传递到管理套接字通信并发送到服务器的客户端线程。在服务器中,通知同一游戏的所有其他玩家,并将聊天消息转发给所有其他玩家。因此,每个服务器线程(但最初发送消息的用户)都将消息发送到其对应的客户端线程。

我的问题来了。我如何向每个 midlet 发出信号,以便它知道有新的传入消息?

我想过创建一个线程来轮询客户端通信线程以查看是否有任何新消息。但是,我怎么能从 midlet 中知道而不中途打断呢?理想情况下,我想直接读取客户端通信线程中的字符串,但该字符串可能正在写入,因此我需要一个线程来访问它并与之同步。

你们中的任何人都可以伸出援助之手吗?我真的不知道如何进行,看起来这应该很简单......

提前致谢

0 投票
2 回答
663 浏览

browser - 开发在线多人管理游戏

我希望在一个简单的在线多人管理游戏上创建一个大学项目,该游戏将涉及玩家设置一天/一周的订单,然后获得利润。作为一个相对初学者,我无法弄清楚这项任务所需的架构。

就我而言,我需要以下东西:

  • 一个文本界面,用于显示正在进行的事件的状态并在 Web 浏览器中设置订单。
  • 每分钟计算结果并更新数据库的某个应用程序。
  • 一个数据库

抱歉这么新,但任何关于如何进行的建议、链接或书籍都可以。

如果需要更多信息,请发表评论。

0 投票
2 回答
1007 浏览

c# - 需要一些关于使用 ASP.NET 的多人游戏会话的指导

我现在的目标是让用户搜索其他想要正面交锋的用户,看看谁能最快地完成拼图。我有一个想法来标记当前使用会员提供程序在线的用户。

我希望服务器能够一次向两个不同的用户会话发送相同的拼图,并听取谁先完成拼图,这对于 ASP.NET 来说有多可行?还是我应该研究其他技术?

谢谢!

0 投票
3 回答
278 浏览

client-server - 如何让服务器以有效的方式通知游戏客户端附近的其他可见玩家?

我正在开发一款多人 Flash 游戏。服务器通知每个客户端有哪些其他玩家在玩家附近。为此,服务器必须不断检查哪些客户端彼此靠近。以下是我目前正在使用的临时解决方案:

它工作正常。然而,到目前为止,我一次只和两个玩家一起玩。此函数为每个客户端循环每个客户端。因此,对于 100 名玩家,每次运行该函数时将有 100 * 100 = 10.000 次循环。这似乎不是最好或最有效的方法。

现在我想知道你们对我目前的设置有什么看法,以及你们是否有任何关于更好地处理这些可见性的建议。

更新:我忘了提到世界是无限的。它实际上是“宇宙”。没有地图。此外,它是一个二维 (2D) 游戏。

提前致谢。

0 投票
4 回答
4875 浏览

c++ - C++ 多人 UDP 套接字 API

谁能推荐一个易于使用、快速且可靠的 C++ API 来通过 UDP 套接字发送和接收数据?也许是专门为多人游戏设计的?