问题标签 [lidgren]
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.
c# - 在 Unity3d 中使用 Lidgren Gen3 时出错
我有从 GitHub 克隆的 Lidgren (gen3) 的最新版本,我在 Mono 的最新版本中使用 Unity3d,但我也尝试使用 Visual Studio 2015。
每次我在 Unity-Project 中尝试从 Lidgren 编译的 DLL 时,我都会收到此错误:
有没有人有解决方案?
谢谢 :)
c# - Lidgren Createmessage() Write() 但 Read() 动态类型,如何?
我开始用lidgren 编写我自己的网络。我很远。我的目标是稍后制作我自己的主服务器(lidgren 有一个示例)和一个自动匹配服务器,它托管服务器并再次最近。
我厌倦了 Unity Networking(它很容易但有限)、UNet 和其他诸如 photon 之类的东西。Photon 很棒,但对我的计划来说很昂贵……而其他人没有自动配对……或者他们想让它仍然留在服务器上。
好吧,我试着解释我的想法和问题。我想做一个我想调用的动态序列化方法:
客户端可以发送非常不同的东西,如 int、float、bool、vector3、vector2 等。
消息发送到服务器..并且服务器需要发送回其他客户端。客户端具有相同的代码,但服务器没有。那么我该如何解决这个问题。
这部分(服务器):
因此,如果您查看代码,也许您知道我想尝试什么。服务器或客户端并不总是具有相同的消息长度和相同的类型。那么我怎样才能获得类型并发送给所有客户呢?
c# - 可靠的有序消息,第一次后不被客户端读取。(利格伦)
这可能是一个有点长的帖子
我有一个服务器和一个客户端,我有能力查看发送/接收消息并在两台机器上实时计算它们,这样我就不必在 VS2012 中进行调试,
我在加利福尼亚的另一台机器上运行我的服务器,以便服务器和客户端位于完全不同的 IP 上并通过互联网运行以进行实时测试,他们使用 DNS 名称并很好地解析它们。
两台物理 PC 都没有防病毒软件,也没有防火墙,并且 Windows 防火墙都已关闭。
两台机器都安装了wireshark来跟踪我在UDP端口29999上的数据包
该序列的工作原理是客户端发送登录,服务器通过一些凭据验证客户端,服务器发送玩家信息(统计信息)
第一次启动服务器可执行文件时,消息会毫无失败地传递给客户端。每次
如果您重新启动客户端并重试,则客户端不会收到消息。
1) server.exe 上的计数器正确递增,2) 服务器上的服务器 Wireshark 显示发送的消息 3) 客户端的 Wireshark 看到 UDP 数据包从正确的 IP 地址进入正确的端口
但 client.exe 消息计数器不会增加。
如果我在 VS2012 中以 DEBUG 模式运行客户端并设置断点,如下所示:
它永远不会命中,也不会收到任何消息。
重要的是要注意,如果 i 是 while 语句上的断点,是的,它正在触发,但没有读取任何消息,因此它为空,因此跳过代码
我相信这与 ReadServerMessages() 方法的时间或位置有关。
我有 ReadServerMessages() 方法在 Timer 上触发,作为它经过的事件,如此处所示。计时器被构造为每 1.0 毫秒触发一次。因为这在软件的所有其他部分中几乎完美无缺,包括实际连接到专用服务器并不断发送数据包时。
有什么想法吗?我遗漏的任何事情都告诉我谢谢!
c# - 不确定是否需要压缩数据,或者循环太大
我一直在谷歌上寻找我的问题的答案,希望这里的人可以对整个事情有所了解。
好的,所以,我正在开发 2D 在线 RPG(角色扮演游戏。想想最终幻想,但在线)。我一直在研究它一段时间,但我遇到了一些问题。现在,我不能 100% 确定压缩是否能解决问题,或者只是循环太大。
注意:我使用的是 Lidgren Networking 库。对其他选项的建议持开放态度,因为 Lidgren 不支持压缩。
关于我正在尝试做的一些信息:
我正在尝试发送一个包含地图所有信息的数据包。地图越小,数据包越快,但是当我尝试发送 250x250 地图(自上而下,基于图块)时,需要几分钟时间。
我对此有两种理论。一个是它需要一段时间,因为此时地图的大小非常大(大约 5MB),另一个是地图太大,循环本身需要一段时间。
这些映射包含字符串、字节、int32s、int16s 等。我有一个需要字节数组的压缩方法,但不能 100% 确定如何将所有数据转换为字节数组(我一直在使用C# 一年多一点,现在,我完全是自学的)。
考虑到所有因素,循环非常大。有 4 个 tile 层,所有这些都需要循环通过。这就是让我相信循环可能是问题的原因。启动服务器时,它会缓存所有地图(这意味着它会在需要之前构建数据包),因此在客户端需要地图时发送地图似乎不是问题。老实说,这很快。
但是当您编辑地图并将其发送以保存时,它可能需要相当长的时间才能将数据包发送到服务器,服务器将更新的地图数据包发送回当前登录并站立的所有客户端那张地图。老实说,时间有点多。我想也许压缩数据包会有所帮助,但正如我所说,我不是 100% 确定这是问题所在。
这是正在使用的循环:
任何可以提供的帮助将不胜感激。如果您需要我提供更多信息,我可以做到。
networking - 使用 Lidgren 从二进制文件中保存的包创建 NetIncomingMessage
我正在使用 Lidgren 网络库来创建实时多人游戏。
我想要做的是,将所有传入的包(包括所有字节)保存到二进制文件中的对等点。稍后当我需要调试一些奇怪的网络行为时,我可以加载这个文件并让它依次加载所有(或重建)它保存的包。这样,我可以找到奇怪的行为是如何发生的。
我的问题是,当我从文件中加载这个包时,如何重新创建它?
这是我需要重新创建的 NetIncomingMessage,我假设,到目前为止,我想要么重新创建它,要么向自己发送一个 NetOutgoingMessage,所以如果第一种方法失败,它希望能达到我想要达到的效果。
c# - Lidgren 服务器延迟
我正在编写一个统一游戏并使用 Lidgren 进行联网。当只有一个客户端连接时,它可以完美运行,没有延迟或问题,但是当连接更多的客户端时,每个人都会遇到极度的延迟。因为它是一个权威的服务器输入需要很长时间来注册和更新。
谁能指出我常见的错误或原因?
我已经确保每个客户都可以看到其他人,但移动最多需要 10 秒才能注册任何移动,即使它是自己的(还没有客户端预测)。
如果有人问,我会发布代码,但它很长而且很乱。
c# - Lidgren.Network 高延迟
我正在使用 Lidgren.Network 连接到本地服务器并在服务器和客户端上以 60hz 的频率提取消息。
问题是平均往返时间大约为 2 毫秒,这还可以,但是当发送一条小消息时,从客户端到服务器再到另一个客户端的过程需要 1 秒到 3 秒。
消息的内容只是 3 个 variableUint32 数据。
如果我在最坏的情况下没有错,那么数据包的最长时间应该是 32 毫秒(服务器处理 16 毫秒,另一个客户端处理 16 毫秒)。
c# - 在类似于 Diep.io 的自上而下的多人游戏中处理射击的最佳方式?
我使用 Unity 和 Lidgren 网络库(服务器 - 客户端架构)来开发具有透视图的游戏,看起来类似于 Diep.io。
我试图让两边的射击都顺利,但是,由于延迟,如果客户端在射击时移动,客户端可以看到子弹是在离玩家更远的地方创建的(服务器从客户端收到的最后一个位置)。
当前射击,客户端向服务器发送数据包,服务器在客户端位置创建子弹。
像 Diep.io 这样的游戏如何在没有明显延迟的情况下处理射击?
你会如何处理类似于 Diep.io 的游戏中的射击?
任何帮助表示赞赏。
c# - 如何在#if DEBUG #endif 指令之间使用nuget包代码?
我正在使用最新的 .NET 核心目标 Lidgren fork:https ://github.com/soccermitchy/lidgren-network-gen3并且我正在尝试模拟丢包/高延迟。
这里有关于如何执行此操作的文档:https ://github.com/lidgren/lidgren-network-gen3/wiki/Lag-Simulation 。
这就是我设置网络对等配置的方式:
该行:config.SimulatedLoss = 0.5f;
不起作用,因为显然NetPeerConfiguration does not contain a definition for SimulatedLoss
.
当我查看源代码时:https ://github.com/soccermitchy/lidgren-network-gen3/blob/master/Lidgren.Network/NetPeerConfiguration.cs#L468我看到 SimulatedLoss 在 #if DEBUG # 之间endif 指令。
如何从仅用于调试的 NuGet 包运行代码?
我尝试在 Tools -> Debug 和其他一些东西中启用一些选项,但我真的无法在任何地方找到答案。
如果这个问题之前已经被问过多次,我提前道歉。
c# - Lidgren 框架中的 NetException
什么时候发生 Lidgren.Network.NetException:“此消息已发送!使用 NetPeer.SendMessage() 有效地发送多个收件人”?