问题标签 [mmo]

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 回答
8481 浏览

java - 如何在 Web 服务器上运行 server.jar 文件

我正在使用 Web.com 为我的 MMO 托管一个网站。我目前正在开发一个简单的服务器并在 Web 服务器上对其进行测试。我已将 server.jar 文件上传到 Web 服务器,但现在我不知道如何运行它。我将如何在网络服务器上运行它?

客户端还需要一个IP地址来连接,该IP是服务器的IP吗?还有一件事,我应该使用什么端口?

任何帮助将不胜感激!

0 投票
2 回答
393 浏览

c++ - 自定义数据类型是可变大小效率的一种可能且可行的选择吗?

与其将单个布尔值存储到一个字节块中,不如将 8 个布尔值存储在同一个块中。

示例:01010101 = 8 个布尔值,1 3 5 7 = 假,2 4 6 8 = 真。

这行得通吗?

有没有更好的办法?

这样做有什么好处和坏处?

这会对网络产生很大影响吗?

0 投票
1 回答
3503 浏览

automation - Autohotkey: Scrape text from window (LOTRO)

I am fairly advanced with my LOTRO scripting, but sadly, have not figured out a way to capture data from the chatbox. I am trying to write an external mapping application and would like to have autohotkey automatically grab data from the screen, particularly the location data that has the heading, by typing:

inside of the chat box.

This image is linked to imgur with the areas I am trying to capture highlighted.

I find it very odd as I can highlight the text in the window easily, and copy and paste it to notepad or any other wordpad editor.

I have tried to following methods to attempt to gather the text from the window, but I cannot seem to find any controls or text, even when running the script as administrator.

Any ideas?

0 投票
3 回答
339 浏览

networking - 有没有办法在不加密的情况下避免 MITM 攻击?

在玩家通过身份验证后,他会收到一个随机的、唯一的标识令牌。他发送的每个数据包都包含令牌。一个典型的消息是:

问题是,如果有人看到一个包裹,这个人就可以扮演玩家的角色,例如将玩家的所有硬币交给其他人。或者阅读玩家的信息,或者做任何不窃取个人信息的事情。

所以我认为加密将是一项要求。但我发现很多人反对它,甚至有人说“这完全是偏执狂”(https://gamedev.stackexchange.com/a/25551/33993)。

有没有办法在不加密的情况下避免 MITM 攻击?如果没有,是否有必要避免它们?

0 投票
0 回答
689 浏览

performance - UDP 服务器线程休眠

我们有一个服务器,每个游戏区域需要 1 个 UDP 连接,并且每个都在自己的线程上运行。我们正在使用 C++。我们是带有 recvfrom 的非阻塞套接字。在“read”函数中检查的第一件事是调用后recvfrom“in”缓冲区是否包含NULL,然后错误是WSAEWOULDBLOCK。

如果发现错误,函数返回,线程休眠 1ms(但实际上更长)。

如果有数据,则对其进行处理。一些路径导致立即处理,但大多数情况下,数据被放入队列中供游戏区域的主线程处理。

我的问题:有没有比使用 thread.sleep(1) 更有效和执行的方法来确保每个游戏区域的 UDP 服务器实例在没有接收任何内容时不会旋转,并且能够比固有的和更快地响应数据包调度器的随机线程唤醒?

在要求的最后一部分中,我指的是一个线程通常永远不会只休眠 1ms,而是平均更像 50ms。

这种情况可能会出现,稍后当服务器以恒定速率发送请求时,检查和响应数据包的循环永远不会为空,因此永远不会到达 thread.sleep(1),所以我想这是更多是最佳实践类型的问题,但如果有可用的解决方案,我会实施更好的解决方案。

谢谢

编辑 - 添加信息。添加这个之后,也许这个实现就没什么好担心的了。我认为最坏的情况是一组数据包必须等待 45-55 毫秒才能安排线程,如果他们错过了被套接字读取的机会。我想改进一下,我可以让 recvfrom 调用它自己的线程,使套接字阻塞,并使用条件变量来唤醒负责处理数据包的线程。你怎么看这个想法?开销太大?

0 投票
1 回答
3334 浏览

c++ - 如何在 C++ 中将一点移向另一点?

假设我在无限 2D 网格系统上有两个点。

第一个点是 (3,5) 的 X、Y 坐标集上的用户控制点。

第二个点是计算机生成的位于 (-20, 30) 的 X、Y 坐标集的点。

我希望第二个点每秒向第一个点移动 5 个单位。我已经让第二个点每 1 秒移动一次,只是没有向第一个点移动。

我需要知道如何将第二个点移向第一个点,而不是像现在这样随机移动....

顺便说一句,这是一个游戏,其中点 2 是怪物追逐点 1(玩家)。它是用 C++ 编码的。

0 投票
3 回答
1492 浏览

excel - 以 3 值货币格式化 Excel 中的数字

我和一个朋友正在尝试用 Excel 制作一个电子表格,它可以帮助我们将数字显示为 MMO 游戏中使用的货币。

我们正在尝试创建此电子表格,以帮助在激战 2 中销售和购买物品。由于游戏中的货币不使用欧元和美分等数字格式,而是采用金银和铜的格式,我们正在尝试制作可以保存此信息的自定义值格式。

到目前为止,我们有一些可用的东西,但我们想让它更易于管理。

我们目前的格式是:#"G"##"S"##"C"

这工作得很好,但我们希望它不会显示 G 和 S,如果我们只有 80 铜。此外,我们还想知道是否可以用不同的颜色对每个子值进行颜色编码。我知道如果我们有一个负值,可以这样做,所以整个值,但据我所知,不可能为单元格中数字的各个部分着色。

有谁知道这是否可行?

0 投票
1 回答
183 浏览

java - MMO游戏算法发送其他玩家信息?

我正在为本地比赛制作 MMORPG 游戏,我已经开始在服务器上工作,我遇到的问题是我想要一种方法来检测每个玩家看到的其他玩家,以便我可以发送有关他们周围玩家的信息给特定的玩家。

首先,我想将一个 2d 圆形对象附加到 Player 对象,并对数据结构中的每个玩家进行碰撞检查,但这会非常消耗性能,是否有合适的算法呢?请帮我!

0 投票
1 回答
912 浏览

ios - Xcode Mass Multiplayer(不是你想的那样)

好的,所以我想制作一款游戏,我尽量不透露它是什么,但它要求游戏中某个级别的任何人当前正在玩的人能够以某种 MMO 风格看到对方,但不是真的。

例如:

假设我有玩家 Bob、Mary 和 Rob。假设 Bob 是 4 级,Mary 是 6 级,Rob 也是 4 级。顺便说一下,这些将显示在排行榜中。我希望 Bob 和 Rob 以及其他任何 4 级且目前正在玩的人在看到的精灵套件中看到对方。我希望玛丽和其他 6 级学生一起离开。

我不知道从哪里开始。所以我的问题是:

  1. 我应该使用 Xcode 还是使用 Unity 会更好?
  2. GameCenter 是否具有此功能,或者我是否需要使用 Parse 或类似的东西
  3. 而且,就这将如何工作的概念而言,您能否指出我正确的方向?

如果你能回答任何一个,那就太棒了!!!!!!!如果不是那也很酷!提前致谢!

0 投票
1 回答
415 浏览

c# - 注册子服务器(登录)到主服务器 - Photon Server -CJR Gaming MMO Framework

我正在关注关于使用 Photon Server 进行 MMO 开发的 Christian Richards 教程。对于那些不知道那是什么的人,它基本上涵盖了使用 MMO 类型架构从头开始重写光子框架。我遇到了许多问题,我找到了解决方法或修复方法,但这个错误我很难过。服务器启动并加载我的代理服务器和登录服务器后,我遇到以下错误。服务器启动正常,查找它很好,但是一旦它尝试注册子服务器,它就会在我的代理日志中抛出这个错误。

代理服务器日志:

2015-07-22 14:56:10,892 [1] 信息 Photon.SocketServer.ApplicationBase [(null)] 应用程序停止:AppId=Proxy

2015-07-22 14:57:01,913 [1] INFO Photon.SocketServer.ApplicationBase [(null)] - 应用程序启动:AppId=Proxy;AppPath=C:\Photon\deploy\ComplexServer,类型=ComplexServer.ComplexProxyServer

2015-07-22 14:57:01,968 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 AverageCounter: Name=''

2015-07-22 14:57:01,977 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:01,986 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:01,993 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,001 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:02,008 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,017 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:02,026 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,035 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,043 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:02,051 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,058 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 CountsPerSecondCounter: Name=''

2015-07-22 14:57:02,066 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 NumericCounter: Name=''

2015-07-22 14:57:02,084 [13] 调试 Photon.SocketServer.ApplicationBase [(null)] - OnInit - ConnID = 2,IP 127.0.0.1 在端口 4520,类型 = TCPListener

2015-07-22 14:57:02,108 [13] DEBUG Photon.SocketServer.Protocol [(null)] - 为应用程序 Master 解析的初始化消息,客户端版本 3.0.5,协议 GpBinaryV2 版本 1.6

2015-07-22 14:57:02,120 [11] 调试 MMO.Photon.Application.PhotonConnectionCollection [(null)] - 收到初始化请求 127.0.0.1:4520 - Photon.SocketServer.InitRequest

2015-07-22 14:57:02,127 [11] 调试 MMO.Photon.Application.PhotonApplication [(null)] - 收到来自子服务器的初始化请求

2015-07-22 14:57:02,154 [11] DEBUG Photon.SocketServer.ApplicationBase [(null)] - OnInit - 发送到 ConnId 2 的响应,SendResult Ok

2015-07-22 14:57:02,331 [7] 错误 Photon.SocketServer.ApplicationBase [(null)] - System.NotImplementedException:方法或操作未实现。在 C:\Programming\SoftwareDevelopment\C#\MMO\MMO.Photon\Application\PhotonRequest.cs 中的 MMO.Photon.Application.PhotonRequest.MMO.Framework.IMessage.get_Code():MMO.Photon.Server.PhotonServerHandlerList 的第 48 行.HandleMessage(IMessage message, PhotonServerPeer peer) in c:\Programming\SoftwareDevelopment\C#\MMO\MMO.Photon\Server\PhotonServerHandlerList.cs:MMO.Photon.Server.PhotonServerPeer.OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) 的第 140 行在 c:\Programming\SoftwareDevelopment\C#\MMO\MMO.Photon\Server\PhotonServerPeer.cs:Photon.SocketServer.ServerToServer.ServerPeerBase.OnReceiveInternal(Byte[] 数据的第 36 行,

*如您所见,它将初始化响应/请求正确地发送到主服务器并登录,直到它尝试注册子服务器。通过观察下面的 Login.log 以及比较“注册子服务器”上的时间戳可以看出,在登录服务器尝试注册子服务器后几乎一秒钟就抛出了上述异常。

2015-07-22 14:56:10,845 [1] INFO Photon.SocketServer.ApplicationBase [(null)] - 应用程序停止:AppId=Login 2015-07-22 14:57:01,541 [12] 调试 Photon.SocketServer.ServerToServer .TemporaryServerPeer [(null)] - OnOutboundConnectionEstablished: 发送初始化请求 2015-07-22 14:57:01,541 [1] DEBUG MMO.Photon.Application.PhotonApplication [(null)] - 在 127.0.0.1:4520 2015 连接到 master -07-22 14:57:01,584 [1] INFO Photon.SocketServer.ApplicationBase [(null)] - 应用程序启动:AppId=Login;AppPath=C:\Photon\deploy\ComplexServer,类型=LoginServer.LoginServer 2015-07-22 14:57:01,592 [12] 调试 Photon.SocketServer.ServerToServer.TemporaryServerPeer [(null)] - SentInitRequest: ConnID=2, ChannelId =0,结果=确定大小=41 字节 2015-07-22 14:57:02,157 [13] 调试 ExitGames.Diagnostics.Counter.CounterBase [(null)] - 创建 AverageCounter:

以下代码来自我认为相关的类。

PhotonRequest 类:

PhotonServerHandlerList 类:

消息界面: