2D游戏开发基础

时间:2010-06-29 20:16:59

标签: c 2d-games

我想用C语言从头开始编写一些简单的马里奥游戏。但说实话,我不知道怎么做,而且我找不到任何好的教程,这是免费的。

但是对于实际问题,我到目前为止只编写了WinAPI程序,因此所有事件处理和用户输入都由操作系统处理,只需要最少的工作,但是用于开发游戏,例如带有非矩形按钮的菜单,动画,所以,我想,在WinAPI中没有这样的东西可以帮助我,而不仅仅是一些基本的例程鼠标指针位置和按键。

那么,通过操纵玩家,敌人甚至背景的对象来编写游戏以编写游戏引擎的整个绘图部分是正确的方法,而不仅仅是使用directdraw输出到屏幕?

编辑: 我实际上想学习如何从头开始编写游戏,因为它必须具有出色的编程经验,如果你考虑像DOS上的Commander Keen这样的游戏,没有框架或库创建,但仍然很棒。

10 个答案:

答案 0 :(得分:9)

一个很好的方法是查看SDL库。我不是说它一定是2D游戏的最佳库,但它很容易上手,网上充斥着使用SDL编写的简单自制2D游戏的教程和开源代码示例。

答案 1 :(得分:4)

我也推荐SDL,但你一定要看看lazyfoo教程,这很棒。

答案 2 :(得分:2)

我也使用过SDL,但试着看HGE。它至少需要DirectX 8.0,因此您的应用程序只能在Windows上运行,但在他们的论坛上,您会发现许多有关如何将其移植到OpenGL的主题。在我看来,HGE比SDL更容易学习,因为SDL是一个低级库,你必须自己学习如何处理很多事情。 HGE更愿意开箱即用。

答案 3 :(得分:2)

当我开始编程时,我开始使用Allegro,回到过去很好的DOS时代。它是第一个可以与SVGA库一起使用的可用库,并且具有良好的精灵支持。然后版本3来了,他们添加了对Windows的支持(使用GDI和Directy X,您可以在运行时选择使用哪个引擎)。 Linux端口栩栩如生,一切都很好。

这是一个非常基础的2D库,它将教你图形和动画的基础知识。现在它甚至包含了一个非常需要的音频支持(好吧,我还记得V 2.9X ......)。它们是版本5的测试版,我认为这是一个有趣的项目供你研究。

http://www.talula.demon.co.uk/allegro/

答案 4 :(得分:1)

你们在谈论什么,WinAPI有低水平的绘图程序。

尽管使用像SDL这样的已建立的库可能是一个更好的主意,但您可以毫不费力地创建自己的WinAPI绘图例程抽象。

然后,只需要创建包含所有绘图指令和解释输入的while循环。对于2D游戏来说,这并不太难。

答案 5 :(得分:0)

简而言之,是的 - WinAPI中没有任何内容可以帮助您。然而,有许多游戏引擎你可以构建你的游戏,这将需要大量的gruntwork创建游戏本身。一点谷歌搜索将帮助你。

(个人推荐:虽然它在技术上是一个3D引擎,但像Unity这样的东西是一个很好的引擎,包括创建2D游戏的教程.Unity不是C,但它制作你的生活更容易......)

答案 6 :(得分:0)

  编辑:我实际上想学习如何从头开始编写游戏,因为它必须具有出色的编程经验,如果你考虑像DOS上的Commander Keen这样的游戏,没有框架或库创建,但仍然很棒。

这实际上并不完全正确。指挥官Keen(以及任何DOS游戏)都使用库:DOS,BIOS等提供的库。没有一种形式的库,你将无法用C做任何有用的事情。对于游戏编程,你真的做想把所有低级别的细节留给别人。

我建议将Allegro作为一个开始的游戏编程库。

答案 7 :(得分:0)

查看此Game dev starting

他们确实拥有与游戏编程和许多初学者相关的大量资源。 SDL很好,但你应该考虑在开始编码之前学习基本的游戏技术,甚至在开始考虑你使用的api / libs之前。

清楚你需要多少“智力”(Ki),考虑加载/保存一个早期时间......如果你想完成你的项目,你应该记住这么多事情。 你需要一个游戏编辑器吗? (还有......工作)声音/图形怎么样?自己写这些东西会花费很多时间(如果你没有经验)。创建内容是另一个可能耗费大量时间的大问题,如果你完成的话。

也许它可以帮助你看看一些开发孩子,因为这会让你了解他们的引擎是如何工作的。喜欢这个(过时的)Dev kid

答案 8 :(得分:0)

我刚刚开始了一个类似的项目,您可以在GitHub处查看。
它应该给你一些关于游戏结构的想法。以及有关碰撞的滚动2D地图的一些细节(如果你想让它100%无bug,那么结果会非常复杂)。哦,它正在使用SDL,正如许多人已经建议的那样。

至于我,这是我的第一个C项目。但是我必须承认我之前在Java和Python中做过类似的事情,所以这对我来说是一个快速学习C的好方法。既然它是学习而不是任何有效的东西,我使用普通的C99,这使任务变得“更有趣”。

但回到游戏中,你真的需要考虑你的设计之前你开始编码,把它写在一张纸上,或者如果你像我一样而你没有有树的东西可以用伪代码写出来。

考虑尽可能多的可能游戏状态,没有什么比重新实现整个玩家/地图/从头开始的任何东西更糟糕的原因只是因为你之前没有考虑过XYZ特征。

设计非常重要,如果你没有开始的目标,你的项目将达到失败的程度,就像我的Tuff那样,由于缺少音乐和某人,它也失败了谁会设计敌人等等。

说到图形等,请记住游戏将不仅仅包含普通代码。如果你不擅长图形,那么在设计时就考虑到这一点。因为当屏幕上的唯一内容是彩色矩形时,你很快就会失去动力。

答案 9 :(得分:0)

Action Arcade Adventure Set(最初作为一本书出版)可能是关于如何编写2D侧滚动游戏的最完整的教程之一。虽然是较早的参考,但开发2D侧卷的许多基本原理都没有改变。

开发侧卷轴的完整源代码示例和一些工具以downloads形式提供。只有一个外部库用于处理图形基元。由于这是一个较旧的DOS程序,您可能必须使用像DOSBox这样的DOS模拟器,或修改更现代环境的示例。

我建议你浏览第1至9章,并重点关注第10至17章。