想学习写2d游戏

时间:2009-09-26 16:27:37

标签: c# c++ directx xna 2d

嘿stackoverflow社区! 我学习了C#的基础知识(我可以编写一些Form-Applications),现在我想学习如何编写2D游戏。我不知道从哪里开始。 是否有适合2D游戏的引擎?在学习了2d的基础知识后,我想写一些在windows和linux下工作的简单游戏(那应该很酷,linux :))。

我问过一个正在编程的朋友,他说我应该在C#中使用XNA(但这只适用于Windows)。谷歌之后我发现使用C ++的OpenGL最适合为linux编写游戏,因为没有DirectX / XNA。我还没有使用C ++,这需要一些时间来学习。

你有什么建议吗?也许是其他引擎?我刚刚安装了XNA并看了一下演示游戏(Platformer),该代码并不难。 XNA适合2D游戏吗?

7 个答案:

答案 0 :(得分:18)

一步一步。当您刚开始时,您不需要需要您的代码才能在每个平台上运行。它是否使用OpenGL或DirectX并不重要,因为您将完全创建一个游戏,使用一个图形API在一个平台上运行。< / p>

其次,不要过于担心“引擎”。你不需要引擎来制作游戏,而且通常情况下它会比它的价值更麻烦。对“引擎”的整体痴迷从根本上讲是一个坏主意。如果你试图让一个软件组件支持游戏所需的所有功能,那么它就不值得使用任何了。

您只需要:

  • 您熟悉的编程语言。听起来这是C#,所以坚持下去。
  • 将图形放在屏幕上的某种方法。 .NET库可以在某种程度上做到这一点,但一些更高级别的库可能会使它更容易。您可以使用XNA或SlimDX或其他Direct3D包装器。或者你可以给SDL.NET一个镜头。或者你可以自己写。您将需要的功能非常基本,每个图形库(2d或3d)都可以让您这样做。

你尤其不需要任何“适合2D游戏”的东西。 XNA能够将图形放在屏幕上,因此它可以满足您的需求。如果您也了解使用它所需的代码,那么XNA就足够了。不要试图找到“最好的”,或者以“2D游戏真棒”作为卖点的东西。

答案 1 :(得分:4)

可能最简单,最易于访问的平台是Flash。可以轻松分发并且相当快速地学习游戏(根据网络上可用的大量Flash游戏来判断)。

我同意贾尔夫的观点。不要开始考虑引擎。发动机是一个复杂的野兽,考虑到你的编程经验很小,它可以很快得到压倒性的。游戏中有很多东西,其中涉及的设计模式往往与典型的应用程序有很大的不同。当你开始谈论命中检测等事情时,OpenGL类型的东西变得非常复杂。

你可以采取的另一个方向是,不是从头开始你自己的游戏,你可以尝试制作像半条命2或虚幻的东西。这为您提供了一个基本平台,您可以更改并查看其行为方式。与此同时,您将查看其他人的代码,并了解游戏开发的复杂性。

以下是关于Flash游戏的Google搜索快速链接。我敢肯定,在Flash和其他语言中创建游戏时,可能还有很多在线书籍。

答案 2 :(得分:4)

有人提到Flash,这是一个很好的建议,但有点贵。如果您想免费进行一些Flash / AS3开发,我建议您使用Flixel。你还需要FlashDevelop,这是一个不错的(也是免费的)IDE。 Flixel网站有很多很好的资源可以帮助您入门。

答案 3 :(得分:2)

如果您正在考虑追求图形编程的未来,我会选择OpenGL,原因如下:

  • OpenGL在Windows,Mac,Linux甚至PlayStation 3上实现。(非常通用)
  • 一旦您对2D编程感到满意,您就可以转到3D并继续使用OpenGL。
  • 与DirectX相比,OpenGL的性能为equally as fast
  • C ++是每个大学级编程课程的一部分。*
  • 我认为雇主比任何其他语言更尊重C ++知识。

学习曲线可能更高,但你的时间会很好。

*如果您的大学没有将C ++作为其编程课程的一部分,那么您就是一个异常值。

答案 4 :(得分:1)

根据我的经验,首先以简单的应用程序(可能是基于文本的)形式编写游戏的基础,然后通过尝试教程中的点点滴滴来构建图形,这样做要好得多。通过这种方式,您将始终拥有一个可以使用的工作骨架,并且您不会立即使用所有图形调用使自己复杂化。

其他方面就是动力:如果你总是有一个正在运行的应用程序,那么看它慢慢增长和发展就会更令人满意,而不是被不断的“工作/不工作转换”所困扰,并且总是在等待所有的比特聚集在一起形成远程完成的东西。

就引擎而言:DirectX和OpenGL这些天本身就是一种引擎。它们可以让你轻松地完成大量的原始工作(从3ds Max中获取模型,并在1-2行代码中将其加载到你的应用程序中),对于一个你不需要任何其他东西的小游戏。

我也同意MunkiPhD:Flash对于2D游戏来说是一个非常好的平台。它非常简单,让您可以摆脱所有无聊的图形编程。但是,ActionScript编程并不是接近使用C系列语言和适当开发的“重型”编程。平台。每当我看到它时,ActionScript都会让我感到沮丧。

答案 5 :(得分:1)

如果您想专注于2D游戏并且现在继续使用C#,并且能够让您的朋友在Mac和PC上玩游戏,您是否考虑过使用Silverlight?

使用Silverlight可以解决一些问题,例如安装。

您可以尝试在Silverlight中创建一些游戏,然后在弄湿之后,您可以更好地决定接下来要学习的其他工具。随着Silverlight 3.0最近的发布,实际上有很多人试图了解它可以推动游戏的进展,这可能会帮助你解决问题。如果您决定使用此路线,可以在此处或在Silverlight.net等网站上发布。

DISCLAMER:我不确定Silverlight for Linux的状态

答案 6 :(得分:1)

Flixel确实摇滚 - 您可以使用最少量的代码启动并运行2D游戏。您可以找到详细的教程,逐步指导您使用Flixel here创建简单的平台游戏。

alt text