C#游戏网络库

C#游戏网络库

C# Game Network Library

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

{EDIT}我忘记提到出于某些原因,我倾向于使用WCF和.NET 3。首先,因为我想减小下载量,所以我的大多数客户已经安装了.NET 2.0。其次,因为我想选择移植到Mac和Linux,并且不确定Mono中WCF的可用性。 {/ EDIT}

我正在寻找网络图书馆的建议。我找到了一些选项,例如GarageGames的Torque网络库(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/

这可能是我要寻找的...


基于Microsoft自己的基于.NET的XNA,您可以在Windows和XBox 360上创建网络游戏。


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

Lidgren.Network is a networking library for .net framework which uses
a single udp socket to deliver a simple API for connecting a client to
a server, reading and sending messages.


我还要指出," Windows游戏\\",XNA在Live中将它用在Windows上!网络API现在是免费的……这意味着,如果您编写使用网络功能的XNA游戏,则您的用户不必具有黄金级会员资格:-)

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


一个古老的问题,但是我会把这个问题提供给其他偶然发现这个问题的人。我们在游戏《 Bitfighter》中使用的是OpenTNL,我一直对它的运行效果感到惊讶。如果您可以使用GPL,则它是免费的。


尽管这个问题还很老,但是专门为游戏开发的更高级别的系统是APlay-支持的平台也是C#。有评估版,可供个人免费使用。

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

如果您想自己处理套接字,那是不对的。另请注意,我是APlay的开发人员,所以这是一个有偏见的答案。


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


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


如果您是游戏开发的新手,我建议您使用XNA,它很容易编程。但是,Torque的优点是它具有资产创建工具,这也是无价的。对于高端游戏或FPS,Source引擎很棒。


推荐阅读