Подтвердить что ты не робот

Как были написаны графические игры DOS?

Я всегда задавался вопросом, как игры DOS, такие как Sky Roads, Turbo, Aladdin, Duke Nukem, Commander Keen 6. Я не могу найти хороший источник. Если я пишу консольное приложение на С#, С++, Java и т.д. Он всегда отображается и остается неподвижным. И это всегда текст.

  • Как они генерируют графику?
  • Были ли какие-нибудь библиотеки для использования?
  • Какие языки они использовали?

Любой хороший источник будет оценен.

4b9b3361

Ответ 1

Ассемблер, Паскаль и Си были популярными языками. Графика создавалась путем непосредственного взаимодействия с оборудованием дисплея, например, Цветным графическим адаптером. (CGA)

Вероятно, были библиотеки, но не такие, как сегодня, и библиотеки часто не использовались за пределами компании.

Ресурс, который был бы актуален, скажем, в 1988 году, можно найти здесь:

https://web.archive.org/web/20170910230837/http://gd.tuwien.ac.at/languages/c/programming-bbrown/advcw1.htm

Ответ 2

  Как они генерировали графику?

Игры той эпохи обычно пишутся напрямую на графическом оборудовании. Они отображаются в специальном месте в памяти и напрямую манипулируют пикселями, как если бы они были массивом.

Были ли библиотеки для использования?

Звуковые и сетевые библиотеки драйверов были распространены. Какие из них, я не знаю - в наши дни вам не нужно предоставлять драйверы вместе с вашей игрой из-за уровня аппаратной абстракции, предоставляемого самой ОС.

Кроме того, были стандартные библиотеки языка C/C++. Промежуточные библиотеки для игр не стали такими распространенными до той эпохи.

Примеры промежуточного программного обеспечения:

  • Физические библиотеки, такие как Havok
  • Библиотеки загрузчика форматов изображений, такие как DevIL
  • Библиотеки загрузчика звукового формата, такие как FMOD
  • Библиотеки обработчиков видео, такие как Bink

Однако дни DOS были популярным рождением игрового движка. Примеры с того дня включают в себя:

Какие языки они использовали?

C и сборка были чрезвычайно распространены.

Реже Паскаль или другие, более неясные языки.


Если вы хотите разрабатывать низкоуровневое программное обеспечение, как это делалось в дни DOS, программирование для старой игровой системы может быть хорошей идеей. Программирование NES, C64, Gameboy и Gameboy Advance требует, чтобы автор использовал прямой доступ к оборудованию, и требует, чтобы вы знали C или какую-либо форму сборки. Вы можете использовать эмулятор для запуска и отладки готового продукта, чтобы он не был таким барьером для входа, как консоли текущего поколения.

Если вы просто хотите разработать игру в стиле DOS, в настоящее время у вас есть много доступных графических и звуковых библиотек. Вместо того, чтобы делать то же самое, что и они, я рекомендую использовать одну из этих библиотек. Allegro, SDL, PyGame, OpenAL и OpenGL и многие другие.

Вы по-прежнему сможете выполнять низкоуровневое графическое программирование, но ваша игра будет работать намного быстрее, будет иметь лучшую техническую поддержку, когда что-то сломается, и ваша игра станет кроссплатформенной.

Ответ 3

Вероятно, вы смешиваете понятие консоли/терминала, а именно текстовое окно, загруженное текстовыми потоками с несколькими командами эвакуации, с самим компьютером DOS. Консоль не DOS, а DOS - не консоль.

Консоль заботится о отображении текста, который его клиентские приложения посылают ему через входные и выходные потоки, прокручивая старый текст и статически отображая его. Консоль - это слой над графическим оборудованием и служба операционной системы, и вам не нужно отображать графику. В DOS время программа будет напрямую записывать в графический буфер, обходя только текстовый дисплей.

С другой стороны, сегодня существуют консоли (например, xterm или командная строка Windows), и они не имеют ничего общего с DOS.

Ответ 4

Действительно старые игры иногда писались на ассемблере, как и графические библиотеки. Но C/C++ тоже использовался.

В то время я тоже пытался написать немного графики/игрового кода и использовал C, Basic и Assembler. Моим любимым был графический режим "13", который был 320x200 в 256 цветах. Этот графический режим дал вам два буфера по 64000 байт, каждый из которых представляет пиксель на экране. Один буфер для рисования, один буфер, который был отображен.

Этот очень эффективный режим позволил вам легко строить пиксели (каждый пиксель был байтом). Из-за размера экрана вы можете легко найти правильный пиксель, сдвинув битовую координату Y и сложив X. Из-за двух буферов вы можете рисовать в фоновом режиме и менять местами "указатель дисплея", когда вы хотите нарисовать следующий кадр.

Но я признаю, это был уже режим VGA. У меня не было большого успеха с действительно старой видеокартой. CGA был сложнее, и запись в графический адаптер Hercules была действительно громоздкой, и я так и не смог ее освоить.

Здесь вы можете найти пару старых игр для DOS, включая исходники (ни одна из них не моя):http://www.classicdosgames.com/misc/source.html