1999 Space War

В 199x годах была очень популярна игра про два летающих кораблика, которые стреляют друг в друга. Справа есть видео с этой оригинальной игрой. В этой игре нелья было зпустить вторую пулю, пока первая летит по экрану. Достаточно одного попадания для победы в раунде.

Еще в 1998 году я нашел исходники этой программы (gong.pas). Анализ этой прогрммы дал мне многое.

Для меня самой большой загадкой была векторная графика - как кораблик может поворачиваться вокруг своей оси на произвольный угол. Тогда я сам разобрался с синусами и косинусами. Золотое правило: x = cos(angle)*R, y = sin(angle)*R.

Также я познакомился с прямым опросом клавиатуры через порты.

В итоге в первой половине 1999 года я сделал свою версию игры Space War, в которой было:

  • графика 640x400 256 цветов через SVGA256M.BGI. Графика была медленной, поэтому приходилось по старинке рисовать кораблик черным цветом для его стирания, вместо перерисовки всего экрана.

  • Графический векторный редактор кораблей. Каждое ребро корабля могло иметь свой цвет. Форма кораблей сохранялась в SHP файл.

  • При столкновениях корабли получали повреждения и меняли свою форму, как в первом Carmageddon.

  • Искры при столкновениях

  • Различные оружия

  • Падающие с неба парашютисты

  • След из дыма

  • Чтение BMP и WAV

  • Проигрывание звуков

  • Тороидальная карта - при переходе через правую границу вылетаешь из левой части экрана

  • Починка корабля

  • И конечно же AI

В этой игре надо убить противника как можно больше раз и не дать убить себя.

Самое обычное оружие - пули, отнимающие 1% жизни у противника (бесконечные).

Дополнительное оружие - простые ракеты, самонаводящиеся ракеты, бомбы, салют, пули, отнимающие 2,3 и 4%.

Последний тип - самонаводящиеся. Менять оружие - <Enter> (1 palyer) и <1> (2 player). Эти оружия конечны.

Лазер - бесконечный, но он стоит 40 очков. Очки можно зарабатывать, попадая по противнику (1), убивая его (100), собирая звездочки (20), сбивая парашютистов (10). В звездочках могут быть боеприпасы или починка. В настройках можно указать различные параметры. В разделе "Миссии" можно выбрать готовую миссию, а можно самому вручную выбрать себе корабль и противника.

Итого, это моя первая игра, в которую все играли.

https://github.com/kindex/spacewar

Для запуска игры нужен DOSBox.

Конфиги для DOSBox:

cycles=max

keyboardlayout=RU