题
我想使用语言C来编写一些简单的Mario式游戏。但是,老实说,我不知道该怎么做,而且我无法找到免费的教程,这是免费的。
但是对于Actuall问题,到目前为止,我只写了Winapi程序,因此所有活动处理和用户输入均由OS处理,最低限度的工作,但要开发游戏,例如带有非矩形按钮,动画等的菜单,因此,我想,Winapi Taht中没有这样的事情可以帮助我解决这不仅仅是一些基本的例程鼠标指针位置和按键。
因此,编写游戏以通过操纵玩家,敌人甚至背景的对象而不是仅仅将DirectDraw用于屏幕的DirectDraw来编写游戏引擎的整个部分的正确方法?
编辑:我实际上想学习如何从头开始编写游戏,因为它必须是很棒的编程体验,如果您考虑像DOS指挥官Keen这样的游戏,没有框架或库,但仍然很棒。
解决方案
一个很好的方法是看看SDL库。我并不是说这一定是2D游戏的最佳库,但是很容易开始,网络上充斥着教程和开源代码样本,用于使用SDL编写的简单自制2D游戏。
其他提示
我也建议SDL,但您绝对应该看看 Lazyfoo 教程,这很棒。
我也使用了SDL,但请尝试查看 hge. 。它至少需要DirectX 8.0,因此您的应用程序仅在Windows上工作,但是在他们的论坛上,您会发现有关如何将其移植到OpenGL的许多主题。我认为,HGE比SDL更容易学习,因为SDL是一个低级的库,您将必须学习如何自己处理许多事情。 HGE更加准备就绪。
当我开始编程时,我开始与Allegro一起做,回到旧的DOS时代。这是第一个与SVGA图书馆合作的可用图书馆,并获得了良好的Sprite支持。然后版本3来了,他们添加了对Windows的支持(使用GDI和Direct X,您可以在运行时选择要使用的引擎)。 Linux港口栩栩如生,一切都很好。
这是一个非常基本的2D库,它将教您图形和动画的基础知识。现在,它甚至包含了非常需要的音频支持(好吧,我仍然记得V 2.9倍...)。它们是版本5的Beta,我认为这是一个有趣的项目,让您研究。
你们在说什么,Winapi的绘图例程较低。
尽管使用像SDL这样的已建立库可能是一个更好的主意,但您可以在没有太多困难的情况下为Winapi绘图例程创建自己的抽象。
然后,这只是创建具有所有绘图指令和解释输入的WARE循环的问题。对于2D游戏,这并不难。
简而言之,是的 - Winapi中没有什么可以帮助您的。但是,您可以在创建游戏本身的情况下可以构建数十种游戏引擎,这将需要大量的咕unt声。谷歌搜索会对您有所帮助。
(个人建议:尽管从技术上讲是3D引擎,但类似 统一 是一个出色的引擎,其中包括用于创建2D游戏的教程。 Unity不是C,但是 做 使您的生活变得更轻松...)
编辑:我实际上想学习如何从头开始编写游戏,因为它必须是很棒的编程体验,如果您考虑像DOS指挥官Keen这样的游戏,没有框架或库,但仍然很棒。
这实际上不太正确。 Commander Keen(和任何DOS游戏)确实使用库:DOS,BIOS等提供的库。没有一种或另一种形式的库,您将无法对C进行任何有用的事情。想要将所有低水平的细节留给其他人。
我建议 快板 作为开始游戏编程库。
几天前,我刚刚开始了一个类似的项目,您可以在 github.
它应该给您一些关于游戏结构的想法。以及带有碰撞的滚动2D地图上的一些细节(如果您想获得100%的错误,事实证明这很复杂)。哦,它正在使用SDL,就像这里许多人已经提出的那样。
至于我,这是我的第一个C项目。但是我必须承认,我以前在Java和Python上做过类似的事情,因此,这是我快速学习C的好方法C,并且由于它的学习而不是任何生产性的东西,我都在使用普通的C99,这使任务甚至更有趣。
但是回到游戏,您确实需要考虑自己的设计 前 您开始编码,将其写在一张纸上,或者如果您像我一样,并且没有树木的东西在伪代码中写下它。
想一想尽可能多的游戏状态,没有什么比不得不重新实现整个播放器/地图/从头开始的东西更糟糕的了,因为您以前没有考虑过功能xyz。
设计非常重要,如果您没有目标,那么您的项目将达到失败的地步,就像我的 凝灰岩 确实,由于缺少音乐和会设计敌人等的人,它也失败了。
说到图形等,请记住,该游戏将不仅包括普通代码。如果您的图形不好,请在设计时考虑到这一点。因为当屏幕上唯一的彩色矩形上的东西时,您会很快失去动力。