Spacewar! — одна из первых известных цифровых компьютерных игр. Создана при участии Мартина Греца и Уэйна Витенена, которые объединились в неформальную творческую группу под названием Hingham Institute. Эта группа в 1961 году задумала разработать игру на платформе мини-компьютера DEC PDP-1 в Массачусетском технологическом институте (МТИ). После того, как знакомый Рассела получил несколько подпрограмм от компании Digital Equipment Corporation (DEC) по расчёту траектории полёта космического аппарата, Рассел занялся программированием игры, а к февралю 1962 года у него была готова первая версия Spacewar!, и на это ушло примерно 200 человеко-часов работы.

В Spacewar! участвуют двое игроков, каждый из которых управляет своим космическим кораблём. Они маневрируют в невесомости рядом с гравитационным колодцем звезды. В начале на борту каждого есть некоторый запас топлива для маневрирования и некоторое число торпед. Симуляция игрового мира базируется на ньютоновской физике — если игрок не предпринимает каких-либо действий, то корабли движутся по инерции. Если корабль сталкивается со звездой, другим кораблем или в него попадёт торпеда, то он погибает. Игрок может в любое время использовать функцию перехода в гиперпространство для «прыжка» в случайное место на экране, но такой переход может уничтожить корабль, и с каждым использованием вероятность потери корабля увеличивается. Изначально игра управлялась переключателями на самом PDP-1, но впоследствии Боб Сандерс придумал и создал ранний геймпад, что сделало управление более удобным и улучшило игровой процесс.

Spacewar! — одна из самых важных и влиятельных игр в ранней истории компьютерных игр. Она стала популярной в 1960-х годах настолько, что была установлена практически на всех компьютерах PDP-1. Spacewar! портировалась на другие компьютерные платформы, а впоследствии была воссоздана на более современных языках программирования для эмуляторов компьютера PDP-1. Игра непосредственно вдохновила многих на создание других , примерами среди которых являются первые коммерческие игры для аркадных автоматов Galaxy Game и Computer Space, появившиеся в 1971 году. Помимо этих, было оказано влияние на более поздние, например на Asteroids 1979 года. В 2007 году Spacewar! вошла в десятку самых важных компьютерных игр всех времен, положивших начало созданию в Библиотеке Конгресса США.

Предыстория

В 1950-х годах Массачусетский технологический институт получил первые компьютеры IBM 704, к которым студенты МТИ сразу же проявили интерес. Однако они остались недовольны тем, что для ввода программ требовалось участие людей-операторов, и что получение результатов занимало несколько часов. Студенты сравнивали эти взаимодействия с тем, что они, как послушники (программисты), просят о божественной помощи у капризного бога (компьютера) через посвящённое духовенство (операторов).

Однако в июле 1958 года Лаборатория Линкольна решила, что их экспериментальный компьютер TX-0 больше им не нужен, и передала его МТИ. Студенты и аспиранты университета получили доступ к нему и возможность программировать. Далее члены университетского сообщества (TMRC, клуб железнодорожных моделистов) начали пробовать писать свои программы, в том числе и игры. Сообщество разработало набор игр, в который вошли Tic-Tac-Toe, использующая световое перо для игры в крестики-нолики против компьютера, или Mouse in the Maze, где ручкой рисовались стены лабиринта, по которому должна была пройти виртуальная мышь.

Осенью 1961 года в компьютерной комнате электротехнического отдела МТИ был установлен мини-компьютер PDP-1 компании DEC. До его прибытия и установки группа студентов и сотрудников университета провела мозговой штурм по идеям программ, которые могли бы убедительным образом продемонстрировать возможности нового компьютера. Трое из них — Стив Рассел, сотрудник Гарвардского университета и бывший научный сотрудник МТИ; Мартин Грец, научный сотрудник и бывший студент МТИ; и Уэйн Витенен, научный сотрудник Гарварда и бывший сотрудник и студент МТИ — объединились в группу Hingham Institute, названную так потому, что Грец и Витенен жили на улице Хингам. Эта группа придумала идею для игры Spacewar!. «У нас был новый PDP-1, — сказал Стив Рассел в интервью Rolling Stone 1972 года — Марвин Минский создал несколько небольших программ для создания паттернов, которые выглядели как калейдоскоп. Не очень хорошая демонстрация. У нас был дисплей, который мог делать всевозможные интересные вещи! Поэтому мы начали обсуждение, размышляя о том, что интересного можно было бы показать. Мы решили, что, можно было бы сделать что-то двумерное, маневрирующее, и естественным образом подумали, что очевидный пример для этого — космические корабли».

Игровой процесс

В Spacewar! участвует два космических корабля, названных the needle () и the wedge (). Они могут стрелять друг в друга и одновременно маневрировать в невесомости среди звёзд. Стрельба производится торпедами, на которые не действует гравитация звезды. В начале у каждого из игроков имеется некоторое количество торпед и запас топлива, который расходуется во время работы двигателей. Физика кораблей частично основывается на ньютоновской механике: они остаются в движении если игрок не использует двигатели, но у них отсутствует инерция вращения.

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

Игрок может вращать корабль по часовой или против часовой стрелки, включать тягу вперёд, стрелять торпедами и входить в гиперпространство. Изначально управление проводилось переключателями на передней панели мини-компьютера PDP-1, по четыре для каждого игрока. Однако их использование было неудобным, они быстро изнашивались во время игры, и к тому же игроки часто путали их с переключателем питания компьютера. Помимо этого, местоположение переключателей заставляло одного игрока сидеть сбоку от экрана, что оставляло его в невыгодном положении. Для решения этих проблем Коток и Сандерс создали отдельный элемент управления, по сути ранний геймпад. У него было два переключателя и одна кнопка запуска торпед. Первый переключатель использовался для поворота, второй — для создания тяги или перехода в гиперпространство. Кнопка была сделана беззвучной для того, чтобы противник не узнал, что оппонент пытается запустить торпеды.

Разработка

Осенью 1961 года обсуждались идеи программ для PDP-1, и в то же время Стив Рассел прочитал серию «» писателя Эдварда Смита. Он решил, что эти истории хорошо подойдут для будущей программы. Стив говорил, что «злодеи часто преследовали героев по всей галактике, и им нужно было все время выкручиваться из разных ситуаций. И мы предложили сделать на основе этого Spacewar!. В произведении были очень яркие описания сражений космических кораблей и манёвров космического флота». Программист Spacewar! Мартин Грец упоминал, что на них также повлияла серия «» Смита и японские фантастические токусацу-фильмы.

В первые несколько месяцев после установки PDP-1 сообщество программистов МТИ сосредоточилось на простых программах для того, чтобы определить возможности разработки программного обеспечения. В этот период Рассел часто посещал своих старых друзей из сообщества и описывал им концепцию Spacewar!. Рассел надеялся, что кто-нибудь займется реализацией игры, но не планировал делать это сам. Однако другие члены сообщества считали его наиболее логичным кандидатом на создание игры и начали оказывать на него давление, чтобы он ее запрограммировал. В ответ Рассел начал придумывать различные оправдания тому, почему он не может начать работать над игрой. Одним из них было отсутствие тригонометрической функции, необходимой для расчёта траектории полёта космического аппарата. Это побудило Алана Котока из Tech Model Railroad Club позвонить в DEC, где ему сообщили, что у них уже есть такая программа. Коток приехал в DEC, забрал содержащую код перфоленту, положил её перед Расселом и спросил, какие у него есть другие оправдания. Рассел потом рассказывал, что «я оглянулся по сторонам и не нашёл оправданий, и поэтому мне пришлось остановиться и подумать», и в декабре 1961 года он начал писать код игры. Игра была разработана в соответствии с тремя принципами Рассела, Греца и Вийтанена, которые они установили для себя. По ним, программа должна была задействовать все ресурсы компьютера; быть последовательно интересной — и соответственно каждый сеанс должен отличаться от других; и наконец, развлекать игроков, а значит, быть игрой. Расселу, с помощью других программистов, включая Боба Сандерса и Стива Пайнера (но не Витенена, который был вызван из запаса ), понадобилось около 200 человеко-часов на то, чтобы написать первую версию Spacewar!, и на это ушло шесть недель.

К январю 1962 года Рассел получил программу, позволяющую двигать точку, а к февралю была готова ранняя рабочая версия с вращаемыми космическими кораблями. Эти два космических корабля были задуманы таким образом, чтобы напоминать пузатый космический корабль из рассказов про Бака Роджерса и ракету PGM-11 Redstone. Стив посчитал, что пустой фон затрудняет определение скорости движения космических кораблей и поэтому добавил случайно генерируемый звёздный фон. В соответствии с неформальной «хакерской этикой», выработанной сообществом программистов, включавшим Hingham Institute и TMRC, все программы свободно распространялись и изменялись другими программистами на условиях сотрудничества, не обращая внимание на вопросы собственности или авторских прав. Это привело к тому, что в доработку первоначальной версии программы Рассела включилось множество людей. Затем, поскольку неточность и отсутствие реализма на звёздном экране раздражали члена TMRC Питера Самсона, то он написал программу, использующую данные реальных звёздных карт, и при этом она отрисовывала на медленно перемещающемся фоне каждую звезду в диапазоне от 22,5° с. ш. до 22,5° ю. ш. до пятой величины. Эта программа была названа Expensive Planetarium (), так как была намного дороже аналогового планетария из-за стоимости компьютера PDP-1 и вошла в серию других «дорогостоящих» программ, таких как Expensive Typewriter Пайнера. По мере появления новых подпрограмм Spacewar! Рассел собирал их в основную версию, и в марте 1962 года Planetarium стала частью игры.