我正在使用 .Net v2 开发在线策略游戏。虽然游戏主要是战略性的,但它确实有一些需要合理网络性能的战术元素。我计划对战略数据使用 TCP 数据包,对战术数据使用 UDP 数据包。

{编辑}我忘了提及,出于几个原因,我正在放弃 WCF 和 .NET 3+。首先,因为我希望保持较小的下载量,并且我的大多数客户已经拥有 .NET 2.0。其次,因为我希望能够选择移植到 Mac 和 Linux,并且不确定 WCF 在 Mono 中的可用性。{/编辑}

我正在寻找网络图书馆的推荐。我找到了一些选项,例如 GarageGames 的 Torque Network Library (C++)、RakNet (C++) 和 litgren 网络库 (C#):

http://www.opentnl.org/ http://www.jenkinssoftware.com/ http://code.google.com/p/lidgren-network/

有人对这些或其他库有实际经验吗?


我刚刚偶然发现了 RakNetDotNet:

http://code.google.com/p/raknetdotnet/

可能 成为我正在寻找的...

有帮助吗?

解决方案

为什么要限制自己只能使用 .NET 2.0。.NET 3.0(或3.5)包含WCF,是一个可靠、高性能的通信子系统,具有良好的安全性。.NET 3.0 只是带有附加库(WCF、WF、WPF)的 .NET 2.0。

其他提示

Microsoft自己的基于.NET的 XNA 允许您在 Windows 和 Xbox 360 上创建网络游戏。

http://code.google.com/p/lidgren-network-gen3/

lidgren.network是一个用于.NET框架的网络库,它使用单个UDP套接字来提供简单的API,以将客户端连接到服务器,读取和发送消息。

我还想指出“Games for Windows”,XNA 在 Windows 上使用它的 Live!网络 API 现在是免费的...这意味着如果您编写使用网络功能的 XNA 游戏,您的用户 不要 必须拥有黄金会员资格:-)

http://www.engadget.com/2008/07/22/games-for-windows-live-now-free/

你可以看看 Entanglar ( http://entanglar.dunnchurchill.com )如果您正在寻找更高级别的东西。Entanglar 提供完整的实体生命周期和同步。

虽然这个问题相当老了,但专门为游戏开发的更高级别的系统是 爱玩 - 支持的平台也是 C#。有评估版本,并且免费供个人使用。

您以类似 UML 的方式定义游戏对象,然后在线代码生成器创建包含游戏对象的程序集。发送状态更新就像调用 setter 方法一样简单。

如果您想自己处理套接字,那么这不是正确的选择。另请注意,我是 APlay 的开发人员,因此这是一个有偏见的答案。

这是一个古老的问题,但我会将其发布给其他偶然发现此问题的人。我们在游戏《Bitfighter》中使用 OpenTNL,我一直对它的运行效果感到惊讶。如果您能接受 GPL,那么它是免费的。

如果您是游戏开发新手,我会推荐 XNA——它很容易编程。然而,Torque 的优势在于它拥有资产创建工具,这也是非常宝贵的。对于高端游戏或 FPS,Source 引擎非常棒。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top