C#游戏网络库

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

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

我正在寻找网络库的建议。 我找到了一些选项,例如GarageGames的扭矩网络库(C ++),RakNet(C ++)和lidgren网络库(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。

微软自己的基于.NET的XNA允许您在Windows和XBox 360上创建联网游戏。

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

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

我还要注意“Windows游戏”,XNA在Windows上使用Live! 网络API现在是免费的…这意味着如果你编写一个使用网络function的XNA游戏,你的用户就不必拥有金牌会员资格:-)

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

虽然这个问题相当陈旧,但专门针对游戏开发的更高级别的系统是APlay – 在支持的平台中也是C#。 有评估版本,免费供个人使用。

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

如果你想自己应对sockets,那就不对了。 另请注意,我是APlay的开发人员,所以这是一个有偏见的答案。

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

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

一个古老的问题,但是我会把它放在那里,让其他人偶然发现这个问题。 我们正在使用OpenTNL作为我们的游戏,Bitfighter,我一直对它的运作方式感到惊讶。 如果你能和GPL一起生活,它是免费的。