我一直想在很长一段时间之前给游戏编程,并且从未接触过它,我终于决定放弃它了.我决定尝试创建一个简单的2D平台游戏.我和XNA玩得很快,我喜欢它.我正在寻找的是XNA,directx,OpenGL之间的比较.主要是他们之间的优势和劣势.在过去的4年里,我一直是.net开发人员,而我的知识主要是.
如果你想做Direct X,请向Win32和COM问好,作为你最好的好朋友.你会花很多时间学习win32 API的来龙去脉.DirectX with Win32为您提供声音,游戏输入和图形显示所需的所有功能.你也将用C或C++编写,你将学习所有关于内存管理和C思维的知识 - 而不是你应该考虑放弃的东西.学习和使用C作为主要项目的语言可能非常有启发性,让您感谢现代编程语言的特性和设计元素.实际上你并没有被迫在这里使用C或C++进行开发; Direct X有各种.NET包装器和其他语言包装器,但是如果你有.NET经验,你可以使用为.NET创建的框架:XNA.
XNA是一种基于.NET的更新的工具集.它提供了许多与Win32和DirectX直接使用(声音,输入等)相同的功能,但本机在托管平台上.对于大多数游戏(特别是刚开始时的游戏)你可以通过XNA游戏获得很好的帧率(即使本机应用程序可以提供更多),并且非常适合学习游戏开发的细节 - 你可以'真的出错了.你需要的大多数基础数据结构(四/八树,模型 - 视图 - 控制器架构,事件处理,程序结构)你仍然需要自己学习和实现,并且在大多数情况下都是这样做的.肯定比C和C++更容易.如果你有一个Xbox 360,XNA社区游戏,作为一个不错的方面奖金通过一些工作,可以通过Xbox Live市场发布. 基本上,作为.NET开发人员,您可能会感到最舒服.
OpenGL是一个用于绘制多边形的跨平台库.它具有与Direct X不同的框架和API,并且不提供任何任何OS交互工具.有些软件包允许您使用多种语言在OGL中编程.但是,正如其他人所说,这可能与使用Win32和DirectX编写一样多.除了图形(键盘,鼠标,操纵杆,音频)之外的其他功能,您可以考虑使用SDL等框架中缺少一些DirectX功能.图书馆周围有一个相当不错的社区,如果你走这条路,可以给你指点和提示.
关于这方面的更多想法可以在一篇几乎完全相同的文章中找到,这里是:学习direct-x,C Open GL或XNA的建议游戏平台.
XNA将是最简单/最快捷的方式,可以让游戏在360或Windows平台上运行.它将允许您以您熟悉的方式继续开发(C#.NET),它将为您提供一个相当大的框架,可以自动处理常用的东西.虽然这很容易受到一些限制,因为你将仅限于前面提到的平台,并且由于它是一个大型框架,将会有大量的开销大部分未使用导致性能命中,但是使用简单的2D平台,这个可能不会成为一个问题.
DirectX也会在平台上限制你,并且学习和开发会变得更加复杂.此外,你很可能在这里用C或C++编程.优势在于性能,因为您处理的是控制一切的所有内容,并能够根据您的需要优化所有内容.我认为对于第一款游戏来说,在开始使用XNA并在"超出"XNA之后转向DirectX会更好.特别是为了创建一个简单的2D平台游戏的目标.
OpenGL将允许您的游戏在大多数平台上运行,但与DirectX一样复杂(如果不是更多)(尽管我应该提到OpenGL的图形引擎,它们使用起来非常简单,就像OGRE一样.你也将在C中开发/ C++ for OpenGL.再次,我认为XNA将是更好的选择,直到你觉得你已准备好进行下一步.