← Таймлайн
1999 · BASIC, Pascal и олимпиады

Space War

Моя первая хорошая игра: дуэль двух корабликов, повороты через синусы и косинусы, до которых я дошёл сам, деформация корабля при таране, векторный редактор кораблей, десяток видов оружия, миссии и свои загрузчики BMP и WAV.

PascalBGIVector graphics

Видео

Подробнее

В 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.