我总是想知道如何编写像Sky Roads,Turbo,Aladdin,Duke Nukem,Commander Keen 6这样的DOS游戏。我找不到一个好的来源。如果我用C#,C ++,Java等编写控制台应用程序。它总是显示并保持静止。它始终是文本。
任何好的消息来源都将受到赞赏。
答案 0 :(得分:17)
汇编程序,Pascal和C是流行的语言。通过直接与显示硬件接口生成图形,例如Color Graphics Adapter。 (CGA)
可能有图书馆,但不像今天这样,图书馆通常不在公司外共享。
可以在这里找到与1988年相关的资源:
答案 1 :(得分:7)
他们是如何生成图形的?
那个时代的游戏通常直接写入图形硬件。它们映射到内存中的特殊位置,并直接操纵像素,就像它们是一个数组一样。
是否有可以使用的库?
声音和网络驱动程序库很常见。哪些,我不知道 - 现在由于操作系统本身提供Hardware Abstraction Layer,你不必提供游戏驱动程序。
除此之外,还有C / C ++语言标准库。游戏中间件库直到那个时代之后才变得普遍。
中间件的例子是:
然而,DOS时代是Game Engine的流行诞生。当天的例子包括:
C和装配非常普遍。他们使用了哪种语言?
更少Pascal或更多其他更加模糊的语言。
如果你想开发像DOS时代那样的低级软件,那么为旧游戏系统编程可能是一个好主意。 NES,C64,Gameboy和Gameboy Advance编程都要求作者使用直接硬件访问,并要求您了解C或某种形式的汇编。您可以使用模拟器来运行和调试您的成品,因此它不像当前的控制台那么高。
如果您只想开发DOS风格的游戏,那么现在您可以使用大量的图形和声音库。我建议使用其中一个库,而不是像他们那样做事情。 Allegro,SDL,PyGame,OpenAL和OpenGL等等。
您仍然可以进行低级别的图形编程,但是您可以更快地运行游戏,在事情中断时获得更好的技术支持,并且您的游戏将是跨平台的。
答案 2 :(得分:4)
你可能正在混淆控制台/终端的概念,即带有一些转义命令的文本流提供的纯文本窗口,以及DOS计算机本身。控制台不是DOS,DOS不是控制台。
控制台负责显示客户端应用程序通过输入和输出流发送给它的文本,滚动旧文本并静态显示它。控制台是图形硬件上方的一层,也是操作系统的一项服务,您不需要它来显示图形。在DOS时间,程序将直接写入图形缓冲区,绕过您看到的纯文本显示。
另一方面,今天存在控制台(例如xterm或windows命令提示符),它们与DOS无关。
答案 3 :(得分:2)
真正古老的游戏有时用汇编程序编写,图形库也是如此。但是C / C ++也被大量使用了。
如果当时尝试编写一些图形/游戏代码,我使用C,Basic和Assembler。我最喜欢的是graphics mode '13',它是320x200的256x200。该图形模式为您提供了两个64000字节的缓冲区,每个字节代表屏幕上的一个像素。一个用于绘图的缓冲区,一个显示的缓冲区。
这种非常高效的模式,让您轻松绘制像素(每个像素为一个字节)。由于屏幕的大小,您可以通过按位移动Y坐标并累加X来轻松找到正确的像素。由于两个缓冲区,您可以在背景中绘制,并在您想要绘制时交换“显示指针”下一帧。
但我承认,这已经是VGA模式了。我真的很老的显卡没有取得多大成功。 CGA更难,写入Hercules图形适配器真的很麻烦,我从来没有掌握它。
在这里你可以找到几个旧的DOS游戏,包括源码(没有一个是我的): http://www.classicdosgames.com/misc/source.html