1 октября 1 окт. 7 1244

SW24/Spacewar! — игра за сутки и история в 62 года

+25

Игра  Spacewar! (да, именно с восклицательным знаком) настолько стара, что каталог StopGame на момент написания этого блога отказывается отображать год её создания в фильтре игр. А саму игру мне пришлось предлагать в каталог лично. Игра была написана горсткой энтузиастов аж в 1961–1963 годах. И в неё всё ещё можно поиграть. Она вдохновила меня на написание её «ремейка» — SW24. Об обеих этих играх пойдёт сегодня речь.

Об оригинальной Spacewar!

Начать, конечно же, стоит с истории создания оригинальной игры. Она была разработана несколькими сотрудниками Массачусетского технологического института (MIT) для демонстрации возможностей новой машины PDP-1. Хотя первую версию Стивен Рассел (Stephen Rundlet Russell) написал ещё с декабря 1961 по февраль 1962 года, весной 1962 года она была значительно улучшена его товарищами Питером Сэмсоном (Peter Samson), Дэном Эдвардсом (Dan Edwards) и Мартином Грецем (J. M. Graetz). Всем им на момент создания игры было около 25 лет.

Забавный факт.
Изначально Стив, который уже не был сотрудником MIT на момент создания игры, не очень хотел фактически писать код игры: искал оправдания, как бы отмазаться. Последним доводом было то, что в PDP-1 якобы отсутствовали функции синуса и косинуса для расчёта траекторий полёта кораблей. На что его коллега по клубу разработчиков Алан Коток (Alan Kotok) от злости съездил в головной офис DEC [Digital Equipment Corporation, создатель компьютера PDP-1] и лично привёз ему эти процедуры.

Опешив от такого подхода Стив, более не отлынивал.
Александр Смит (Smith, Alexander), книга «They Create Worlds: The Story of the People and Companies That Shaped the Video Game Industry» (27.11.2019)

Примечательна и история компьютера PDP-1, на котором эта игра разрабатывалась. За всю историю было построено всего такие 53 машины. Первая из них была продана, а второй экземпляр был бесплатно подарен MIT и в сентябре 1961 года был установлен в здании факультета электротехники, где с ним и познакомились авторы игры. Изначально игра управлялась с переключателей на самой машине, что было весьма неудобно, так как в первую очередь PDP-1 был предназначен для работы с текстовым вводом. Позже Алан Коток (Alan Kotok) и Роберт А. Сандерс (Robert A. Saunders) сконструировали из подручных средств ранний геймпад — «контрольную коробку», чтобы было играть проще и интереснее. Исходные контроллеры не сохранились, но в журнале Creative Computing от августа 1981 года можно найти их эскиз.

Оригинальные контроллеры выглядели примерно так. Управление: а) поворот влево-вправо, б) ускорение (сдвинут вперёд) и гипер-пространство (сдвинут назад), и в) торпеда.
Оригинальные контроллеры выглядели примерно так. Управление: а) поворот влево-вправо, б) ускорение (сдвинут вперёд) и гипер-пространство (сдвинут назад), и в) торпеда.

В изначальной задумке будущая  Spacewar! (у которой и имени тогда ещё не было) должна была стать технологической демонстрацией компьютера PDP-1 по сравнению с уже устаревавшими TX-0 и TX-1. Разработчики, обсуждая технодемку, выработали следующие принципы, в которых, как мне кажется, вы можете найти что-то очень знакомое от ведущих разработчиков игр современности. Они решили следующее:

1) Она [программа] должна именно демонстрировать. То есть она должна задействовать как можно больше ресурсов компьютера и нагружать их до предела;
2) В рамках единой системы она должна быть интересной, что означает, что каждый запуск должен отличаться от предыдущего;
3) Она должна вовлекать зрителя приятным и активным способом — короче говоря, это должна быть игра.

Дж.М. Гретц (J. M. Graetz) статья «The Origin of Spacewar».
Журнал «Creative Computing» за Август 1981 г. (том 7, номер 8)

Для создания игры разработчикам потребовалось почти полгода работы. Такого понятия как «игровой движок» не существовало и даже не предвиделось. Сочетание «компьютерные игры» тогда тоже было чем-то не существующим: до появления всемирно известного  Pong в 1972 году было почти ещё 10 лет. Несмотря на то, что с тригонометрией Стиву помогла компания-разрабочик компьютера, на любой кадр игры приходилось самостоятельно рассчитывать положение нескольких точек отдельных объектов, которые могли двигаться и поворачиваться как единое целое, учитывать столкновения и порядок отрисовки. Сложности также добавляло и собственное желание разработчиков сделать всё очень хорошо.

Забавный факт.
Один из разработчиков игры Питер Сэмсон (Peter Samson) был возмущён тем, что Стив Рассел закодировал звёздное небо простым случайным образом, и взял дело в свои руки. Использовав данные национального астрономического альманаха Питер закодировал в игру ночное небо между 22,5° с. ш. и 22,5° ю.ш, включив таким образом в небо большинство известных созвездий.
Дж.М. Гретц (J. M. Graetz) статья «The Origin of Spacewar».
Журнал «Creative Computing» за Август 1981 г. (том 7, номер 8)

 Spacewar! одной из первых компьютерных игр, и точно первой игрой, которая смогла перебраться из одной физической машины PDP-1 на другую. Получив особую любовь в MIT, программа разошлась на другие машины PDP-1, сыскав себе широкую известность в узком кругу программистов тех лет. Где невозможно было прямо перенести полностью игру, там пробовали делать это по частям, «портируя» (говоря по-современному) игру под конкретные машины — код всегда находился в открытом доступе. У игры появлялись клоны на «других платформах». Один из первых ученых-компьютерщиков Алан Кей (Alan Kay) заметил в 1972 году, что «игра  Spacewar! расцветает спонтанно везде, где есть графический дисплей, подключенный к компьютеру».

19 октября 1972 года состоялся первый в истории турнир по видеоиграм — «Межгалактическая олимпиада  Spacewar!» под эгидой Rolling Stone. Для состязания использовался комбинированный PDP-6/PDP-10, а версия игры  Spacewar! уже поддерживала до 5 игроков.

Игра получала свои «переиздания» и «переосмысления» множество раз. Особо хочется отметить, что в 2012 году уже не раз упомянутый Мартин Гретц опубликовал игру в Интернете на эмуляторе PDP-1, написанном на JavaScript. На момент написания блога в игру можно поиграть во множестве её вариантов перерождения: прямо по ссылке.

Являясь первопроходцем в будущей (ещё даже не зарождавшейся) игровой индустрии,  Spacewar! оставила след в огромном количестве её наследниц, перечисление которых по именам бессмысленно.  Spacewar! включена во все возможные списки и рейтинги наиболее влиятельных видеоигр.

Очевидно, что «подражателей» и «воспроизводителей» этого пионера игровой индустрии — хоть пруд пруди. А я присоединился к этой небольшой армии, вот почему…

SW24 зачем и почему: от идеи до старта разработки

Идеи написать свой вариант  Spacewar! у меня не было никогда. Это не история про то, как «я давно хотел и вот оно случилось, когда сошлись звёзды». Вовсе наоборот.

На StopGame.ru есть рубрика «Ретрореквест», в которой ребята-стримеры берут на основе донатов от зрителей старые игры и пробуют в них играть.  Spacewar! я добавил туда года эдак полтора назад, и вот она добралась до топа по объёму набранных средств. Уже 4 октября 2024 года [несколькими днями позже публикации блога] ребята будут показывать эту игру в рубрике.

То, что игре «недостаёт контента» — очевидно было ещё в момент добавления. То, что она однажды доберётся до топа — очевидно, было вопросом времени. И вот оказалось, что однажды ожидаемое случилось. Задумавшись немного об этом ведущие рубрики на момент написания блога Ваня Лоев и Ян Грибович оказались перед вызовом (собственно, ради этого мною всего и затевалось): либо провести очень скучный стрим, лишённый всякого вкуса, либо всеми правдами и неправдами оживить рубрику, привнеся туда чего-то новое. «Шалость удалась», — подумал я в прошлую пятницу, предвкушая следующую.

И тут Ваня озвучивает свои мысли: а что, если в качестве дополнительной активности написать игру (или её прототип) в прямом эфире. Ну… исходная идея, в целом, нормальная, если не задумываться о том, насколько это фантастически сложно. Даже, имея опыт в игровых движках, даже имея возможности современного железа, если задуматься — идея… на самом деле, идея-то может быть интересной, но… Разум четко говорит: слишком много сложностей для 4 часов на стрим, даже на прототип, когда надо не только писать код (а это значит — погружаться с головой в логику), но и взаимодействовать с чатом.

А вот написать прототип игры заранее, чтобы показать, мол, а вот, что можно сделать за, допустим, неделю в современном мире. И не сотрудниками MIT, а… ну, ладно, человек с высшим техническим образованием и программистом по профессии. И это настолько меня увлекло, что я тут же вспомнил про недавнее своё развлечение с одним простеньким игровым движком. Дополнительным стимулом стало то, что Ваня предложил поиграть в такой прототип (если он будет создан) на Ретрореквесте для разнообразия эфира.

Времени у меня было мало: за выходные у меня было по сути не более 20 часов ночного времени (семья и работа — все дела: на игры только ночь), чтобы сделать что-то подобное! Это оказался вызов, который я придумал сначала для ребят-стримеров, а сам же в эту яму и угодил.

SW24: 2 ночи без сна и релиз 0.0.1

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

  • два корабля: толстый и тонкий — у меня будут одинаковые, чтобы было честнее, только разных цветов;
  • в центре — звезда, корабли постоянно притягивает к ней по физическому закону: формула легко вспоминается или ищется в интернете;
  • корабли могут выпускать торпеды, на которые гравитация не действует: те летят по прямой линии и при столкновении с препятствием взрываются;
  • при попадании на край экрана ракеты игроков оказываются на другой его стороне (в оригинале механика гипер-прыжков была по специальной команде, это я упустил).

Я решил для себя сразу: надо не только повторить игру, но и добавить в неё элементов современного опыта, чтобы не было скучно современному зрителю и мне в том числе. Дополнительно Ваня Лоев почти сразу попросил сделать ему однопользовательский режим, чтобы на стриме можно было показать, не заморачиваясь на приблуды типа Parsec. Для этих же целей он просил наделить при этом второй корабль собственным игровым интеллектом. Реализовывать игровой интеллект противника, естественно, за пару ночей не стал: он был бы убогим и неинтересным, если бы вообще работал. Поэтому к игровому процессу добавил следующее:

  • игрок должен быть мотивирован к тому, чтобы постоянно двигаться по полю, в противном случае можно зависнуть просто в одном положении и ничего не делать; сразу пришла на ум механика сбора монеток, за которые игрок получает «счёт»: кто больше набрал, тот и молодец;
  • монетки можно не только собирать, но и потерять: при получении урона ракета игрока взрывается, оставляя на своём месте часть из тех монет, которые ранее ему удалось собрать, он сам или противник могут их подобрать;
  • игра должна подгонять игроков к активным действиям в рамках одного забега: быстрее собирать монетки и соперничать; в королевской битве это была бы сужающаяся зона, в SW24 — это метеориты, которые тем чаще посещают звёздную систему, чем больше пройдёт времени; метеориты сбивают игрока, уничтожают несобранные монеты и мешают ему эффективно зарабатывать очки;
  • игра пусть и сурово наказывает игрока (одно столкновение — смерть), должна поощрять его активные действия: после смерти корабль игрока сразу же появляется на исходной позиции и готов к бою, он может вернуться и собрать остатки монеток и продолжить бой, а его предыдущее достижение — максимальное количество монет, собранное в забеге — сохраняется до конца игры;
  • игрок должен гордиться своими успехами в освоении игры: должна быть простенькая система достижений для обоих игроков, которая бы подначивала их совершать определённые действия в игре, чтобы получить весь набор за один забег;
  • сюжет и лор: казалось бы, они в такой аркаде не нужны, но добавление их в виде соли или приправы придаст игре чуть больше эмоциональности.

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

  • планеты, вечно находящиеся на орбите, в которые запрещено (наказывается игровым таймаутом) попадать торпедами и касаться кораблём: система из нескольких уровней сложности, где изначальные условия могут быть уже сложнее;
  • ионизирующее излучение от звезды: кольцо излучения, расходящееся от центра системы к краю, при попадании в которое теряется управление на некоторое время; это сработает хорошо при возвращении в игру исходных гипер-прыжков в виде небольших пространственных «блинков»;
  • выбросы плазмы из короны звезды: коническое распространение на целые сегменты карты эффектов, наносящих урон по области;
  • подбираемые бонусы и бафы;
  • враги с искусственным игровым интеллектом;
  • бос (…-паук, паук огромный в этой… игре);
  • интеграция дополнительных случайных событий к сигналам сборщика донатов и/или к чатам твича/ютуба.

Эти вещи, конечно, за короткий срок сделать не удалось бы. Но пофантазировать, какой может быть  Spacewar! в 2024 году позволяет.

Делать игру решил на Godot — движке, с которым познакомился сравнительно недавно. Примерно в то же время разразился скандал с Unity и её политикой оплаты за пользование движком. Основные причины: низкий порог вхождения и язык C#, который можно использовать для написания игровых скриптов. Поскольку мне уже удалось кое-что изучить в движке, несмотря на мой почти нулевой опыт в разработке графических игр, я мог рассчитывать на то, что технологии не станут для меня самой главной причиной провала. И моя ставка сыграла.

Что из этого всего вышло?

Ну, как заведено, репозиторий с исходниками — пользуйтесь и дорабатывайте на здоровье. На говнокод и спагейти архитектуру не ругайтесь: прототип делался за пару ночей.

 

Несколько минут игрового процесса SW24 версии 0.0.1.

Ну, а саму игру можно пощупать вот здесь: сборочка под Windows из разряда «распаковать и играть». За баги, если хотите, можете сообщать сюда или в личку. Не уверен, что будет желание и/или время править это всё, но, не исключено, что ещё вернётся ко мне возможность продолжить возиться с этой штукой.

Запись Ретрореквеста, где поиграли в эту версию и в несколько других от наших ребят из сообщества, а также Ваня сам написал свой прототип игры в прямом эфире. Игры получились крутейшие: оцените. Если ребята захотят, то могут добавить свои версии в комментарии. В целом, вышел отличный «гейм джем». Всем ребятам спасибо.

Из полученного результата и сравнения с той оригинальной игрой хочется сделать вывод: игры сильно ушли вперёд за 60 с гаком лет. И дело даже не столько в графике и возможностях визуального или аудиоряда, сколько в подходе к игроку. Накинув на SW24 поверх исходного геймплея  Spacewar! дополнительные современные механики, я добавил в неё:

  • удобство пользования;
  • более красивый визуальный ряд;
  • цели, которую игрок должен преследовать;
  • кривую сложности;
  • сценарий, пусть и простенький, антураж.

Эти маленькие изменения, по большей части, не касались исходного «ядерного» игрового процесса, но только… как бы это сказать: «учат ИГРУ» общаться с игроком. Игра стала чуть более психологически ближе к игроку, словно говоря: «вот так в меня надо играть», «вот этот аспект игры важен: смотри, как прикольно ты можешь сделать, чтобы было красиво», «а вот так сможешь извернуться? — попробуй добраться до вот такого счёта!» И обнаружение этой разницы между старым оригиналом и моей поделкой для меня оказалось наибольшей ценностью из всего этого эксперимента. Быть может, я слишком загоняюсь, и ничего такого нет; но попробуйте сами, чтобы прочувствовать эту разницу, и поделитесь вашим мнением в комментариях.

На сим же прощаюсь и желаю всего самого лучшего.

Специально для StopGame.ru
dmicher abathur kubrow


Spacewar!

Платформы
Жанр
Дата выхода
1962
3
4.5
3 оценки
Моя оценка

Лучшие комментарии

Наш слоняра! Дмичер мегахорош!

Тогда обрати внимание на использованную мною литературу:

— очень познавательная статья в Creative Computers 1981 года одного из создателей игры (во вложенной ссылке);

— и вот этот монументальный труд: Smith, Alexander (November 27, 2019). They Create Worlds: The Story of the People and Companies That Shaped the Video Game Industry. Vol. 1: 1971 – 1982. CRC Press. ISBN 978-1-138-38990-8 (не могу предложить ссылку — книга с авторскими правами, но «она есть там, где она есть») — тебя там может заинтересовать глава 4 «One, two, three, four I Declare a Space War»

Крутая игра. Сам сейчас неспеша пишу блог про Spacewar!

Про книгу знаю, а за журнальную статью спасибо.

Читай также