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