我正在使用.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/
这可能正是我正在寻找的......
答案 0 :(得分:5)
Microsoft自己的基于.NET的XNA允许您在Windows和XBox 360上创建联网游戏。
答案 1 :(得分:4)
http://code.google.com/p/lidgren-network-gen3/
Lidgren.Network是.net框架的网络库,它使用 单个udp套接字,用于提供用于连接客户端的简单API 服务器,阅读和发送消息。
答案 2 :(得分:2)
我还要注意“Windows游戏”,XNA在Windows上使用Live!网络API现在是免费的...这意味着如果您编写使用网络功能的XNA游戏,您的用户不必须拥有金牌会员资格: - )
http://www.engadget.com/2008/07/22/games-for-windows-live-now-free/
答案 3 :(得分:1)
为什么要限制自己使用.NET 2.0。 .NET 3.0(或3.5)包含WCF,是一个具有良好安全性的可靠,高性能的通信子系统。 .NET 3.0只是带有附加库(WCF,WF,WPF)的.NET 2.0。
答案 4 :(得分:1)
如果您正在寻找更高级别的东西,您可以查看Entanglar(http://entanglar.dunnchurchill.com)。 Entanglar提供完整的实体生命周期和同步。
答案 5 :(得分:1)
虽然这个问题相当陈旧,但是专为游戏开发的更高级别的系统是APlay - 在支持的平台中也是C#。有评估版本,免费供个人使用。
您以UML方式定义游戏对象,在线代码生成器创建包含游戏对象的程序集。然后发送状态更新就像调用setter方法一样简单。
如果你想自己应对插座,那就不对了。另请注意,我是APlay的开发人员,所以这是一个有偏见的答案。
答案 6 :(得分:1)
一个古老的问题,但是我会把它放在那里,让其他人偶然发现这个问题。我们正在使用OpenTNL作为我们的游戏,Bitfighter,我一直对其运作良好感到惊讶。如果你能和GPL一起使用它是免费的。
答案 7 :(得分:0)
如果您是游戏开发的新手,我建议使用XNA-它很容易编程。然而,Torque的优势在于它拥有资产创造工具,这也是非常宝贵的。对于更高端的游戏或FPS,Source引擎很棒。