Space War
Моя первая хорошая игра: дуэль двух корабликов, повороты через синусы и косинусы, до которых я дошёл сам, деформация корабля при таране, векторный редактор кораблей, десяток видов оружия, миссии и свои загрузчики BMP и WAV.
Видео
С моего первого сайта
В 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 player) и <1> (2 player). Эти оружия конечны.
Лазер - бесконечный, но он стоит 40 очков. Очки можно зарабатывать, попадая по противнику (1), убивая его (100), собирая звездочки (20), сбивая парашютистов (10). В звездочках могут быть боеприпасы или починка. В настройках можно указать различные параметры. В разделе "Миссии" можно выбрать готовую миссию, а можно самому вручную выбрать себе корабль и противника.
Итого, это моя первая игра, в которую все играли.
Исходники: github.com/kindex/spacewar. Для запуска нужен DOSBox.