vb.Net中的游戏开发

时间:2009-04-30 15:56:44

标签: vb.net

VB.Net有哪些限制,阻止人们将其用作开发游戏的语言?

9 个答案:

答案 0 :(得分:10)

高级语言的速度通常使他们脱离“严肃”的游戏开发,其中C和C ++占据了至高无上的地位。但是,越来越多的游戏将游戏逻辑暴露给Lua和Python等脚本语言。

我听说过在VB中开发的独立游戏,例如Zombie Smashers系列是由James Silva在VB中开发的,他最近在C#.net中进行了游戏Dishwasher Dead Samurai

您可能想要了解微软推出的Xbox Live Arcade框架(XNA)。您可以在VB或C#中使用它。

答案 1 :(得分:8)

游戏程序员花了很长时间甚至接受C ++而不是因为它“慢”。我相信多核时代很快就会导致这种情况慢慢消退,因为并行运行比尽可能快地运行单个线程要重要得多。

请记住,现在使用像素/顶点/几何着色器在GPU上进行了大量处理。所以我们看到一些相当高级的游戏都是用可能被认为是“慢”的语言编写的。

最后,.NET并不慢。令游戏开发imo麻烦的是垃圾收集器的不可预测性(GC在巨大的boss战中开始并导致延迟 - 不太好),以及在C#和本机代码之间发生的任何编组。

幸运的是,深入了解.NET的工作原理,包括GC和运行时 - 这些障碍都可以克服。

如果有什么东西强烈建议用托管语言对游戏进行原型设计,无论是VB.NET,C#,python,ruby等......然后如果发现它太慢,你可以移植部件它是C ++。

.NET已经管理了C ++,它使本机代码和托管代码之间的互操作相当无缝。这允许在必要时本地编写那些真正关键的部分。但我怀疑是这种情况。最重要的优化最初将来自数据结构,算法和整体架构。

答案 2 :(得分:3)

这不是VB.NET的主要问题,而是.NET Framework。

具体来说,游戏开发通常在C / C ++中完成,可以获得每盎司的性能。 .NET框架不适用于此。

据说有些游戏是用.NET开发的

答案 3 :(得分:1)

部分原因是vb仍然附加在vb上,因为它是一种缓慢的语言。 (由于.net框架的通用性,这并不像以前那么真实)

老实说虽然这取决于你正在开发什么类型的游戏,如果你正在进行高帧率,高级三维图形,流行边缘游戏,那么你就不能用C或C ++写它以获得必要的性能。但是,如果你正在做的事情更像你今天在许多基于Flash的游戏中所看到的,甚至是你在旧游戏中可以看到的东西,那么恕我直言,你几乎可以用任何语言来做。

答案 4 :(得分:1)

至于速度部分,像基于XNA的Visual3D.NET这样的引擎让我确信从托管游戏引擎获得良好性能并非不可能。更重要的是,CPU在任何演示中似乎都不是瓶颈,这是使用C#的唯一部分对其产生影响。即使它的CPU有限,它仍然只推动50-60%,因为引擎仍然是非常单线程的,因此在今天的双核和四核CPU以及明天的octo-和hexadeca核心上有很大的改进空间。我认为优化算法在多核时代可以很好地扩展,这比使用的语言更重要。

对整个引擎使用托管语言的好处是,它可以很容易地为游戏逻辑/ AI使用相同的高级语言,而本机引擎可能会使用更慢的脚本语言。

使用像C#/ VB.NET这样的托管语言可能会限制基于CPU的事物,比如物理学,但是再一次,我对XNA的完全托管的物理库JigLibX印象深刻。

这都是C#,但我猜它也适用于VB.NET,因为它们最终被编译到同一个IL,除非VB编译器中有一些我不知道的限制。

答案 5 :(得分:0)

VB.NET与任何其他.NET语言没什么不同。

认为VB缓慢的感觉已不再适用。

这是带有XNA(游戏开发工具包)的VB.NET的list of tutorials

答案 6 :(得分:0)

正如其他人所说,.Net并不慢,但有一些事情与游戏开发相悖:

  1. 垃圾收集的非确定性
  2. 低便携性(与C相比)
  3. 缺乏成熟的游戏开发工具/库/框架
  4. 具体使用VB.Net。亲爱的主人为什么? : - )

答案 7 :(得分:0)

您可以使用Microsoft XNA Framework for graphics和regualr WinForms应用程序来包含所有代码。只需安装XNA Framework并从VB WinForms应用程序添加引用。

如果您想利用XNA提供的所有功能,您需要使用与XNA完美集成的C#。

答案 8 :(得分:0)

那些说网络慢的人是错误的。在运行时,实时(JIT)编译器将IL转换为本机代码。 IL代码具有很多优势。您可以使用C#/ VBNET编写游戏,并将框架用作Monogame或FNA(这是XNA的重新实现)。使用monogame / fna编写的游戏是跨平台的