Pull to refresh

Star Trek: текстовая игра 1971 года

Reading time 5 min
Views 81K


Когда на хабре составляли список лучших игр всех времён и народов, в комментариях несколько раз проскальзывала мысль, что тема превращается в список самых старых игр, которые можно вспомнить. И тогда я подумал, а что если действительно попытаться вспомнить самую первую игру, в которую я играл?

Может быть я ошибаюсь, ведь это было почти 30 лет назад, но мне кажется, что такой самой первой, и кстати, очень даже неплохой для того времени игрой, был Star Trek. Считается, что первоначальная версия была создана Майком Мэйфилдом (Mike Mayfield) в 1971 году, но я застал его в середине 80-х. Возможно сейчас процесс игры покажется уже не таким захватывающим, как тогда, поэтому я решил написать о нём исключительно по оставшимся воспоминаниям, и с небольшим использованием исходного кода.

Играл я в него на СМ-3, имевшей весьма популярный тогда терминал Videoton VT340, у которого был черно-белый алфавитно-цифровой экран, отображавший 16 строк по 80 символов.



Сама игра по жанру — текстовый пошаговый космический симулятор, если можно так выразиться. Надо было за ограниченное время уничтожить все корабли клингонов, находящиеся в пределах игрового поля размером 8x8 квадрантов, каждый из которых в свою очередь разбит на 8x8 секторов.

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

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



Компьютер препятствия не учитывает, а для определения «на глаз» правильного курса, чтобы торпеда прошла мимо звезды, но попала в клингона, требуется большое мастерство. Направления задавались весьма необычным образом, в полярных координатах с углом от 1 до 9. Те, кто играли, наверняка помнят. Еще в игре было защитное поле, которым можно было управлять.

Со времени создания до конца 80-х годов было очень много разных версий игры. Были усложненные варианты, с новыми типами объектов и врагов. Были версии на бейсике, фортране, коболе и других языках, для практически всех видов компьютеров, существовавших тогда. Версия, в которую я играл, была классической, лишь немного изменённой и кем-то переведённой на русский. Сейчас от неё сохранился только листинг, распечатанный для переноса на появившийся примерно в то время Радио86РК-совместимый компьютер, чтобы можно было (просто невероятно!) играть дома.



Как видите, некоторые иголки сломаны, и в принтере использовалась двухцветная, красно-черная лента, которая то ли из-за неполадки, то ли из-за того, что она не от того принтера, частично окрашивала буквы снизу красным цветом.

Возможно, среди читателей найдутся те, кто играл в эту самую версию, или даже те, кто её переводил, привожу здесь несколько запоминающихся фраз:

Сообщения из русского Star Trek'а
Коэффициент искривления пространства (0-8)
Прапорщик Зинин докладывает: «Неверный курс, капитан!»

Двигатели заглохли в секторе 1, 4! Ошибка навигации

Офицер-ученый Гриць докладывает: «приборы показывают отсутствие вражеских кораблей в этом квадранте.»

150 единиц энергии ударило по кораблю из сектора 6, 3
(защитное поле упало до 562 единиц.)

*** Локаторы ближнего обзора неисправны ***

Техники настаивают на ремонте вашего корабля
Приблизительное время на ремонт: .4 звездных дней
Разрешаете ли вы ремонт?

Были конечно и другие игры, но все алфавитно-цифровые, кроме того, межстрочное расстояние видеотона довольно велико и для игр не приспособлено. Большинство игр было как Star Trek, пошаговыми, но были исключения, например, тетрис. Такие игры мы называли тогда «динамическими». Это означало, что действие происходит постоянно, не ожидая реакции игрока с клавиатуры.

А еще у меня была распечатка с экрана неведомого графического компьютера, находившегося где-то в недоступном месте. Как оказалось, и она сохранилась в шкафу до сих пор:



Мне удалось вспомнить название игры: «Шериф», благодаря чему нашлась статья, написанная в 2012 году, о создателях этих игр. Может быть кому-то тоже напомнит старые добрые времена, вот некоторые скриншоты из той статьи, сделанные с эмулятора:

Скрытый текст
Pif-Paf

Garden

Land


В те времена графические игры казались чем-то невероятным. О том, что они когда-то станут цветными, можно было только мечтать. Как я уже сказал, поиграть я в эти игры не мог, и мне оставалось только смотреть на распечатку и представлять, как это может выглядеть в движении.

Но вернемся с Star Trek'у. Написав статью, я решил всё-таки попытаться в него поиграть. Пользуясь листингом, нашёл версию, наиболее близкую к той, что у меня была в 80х, и после небольшой коррекции она запустилась. Я начал играть, понемногу привыкая к давно забытой обстановке. Когда очередная торпеда, несмотря на рассчитанный компьютером курс, вдруг полетела не в ту сторону, я заподозрил неладное. А когда чуть позже запуск двигателя завершился ошибкой (выход за границы массива), это стало ясно окончательно.

Оказалось, что в версии, опубликованной в 1978 году в книге "101 игра на бейсике", с которой, видимо, и были набраны все ходившие по стране версии, была ошибка. При индексации массива для вычисления курса корабля и торпед, вещественное значение округляется, хотя автор ожидал, что оно будет усекаться. Эти строки видны на скане страницы, приведённой выше.

3110 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
3140 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1))

В результате, если дробная часть заданного курса больше 0.5, направление вычисляется неверно, а если он больше 8.5, возникает ошибка. 30 лет назад мы так и играли. Сначала думали, что это такая особенность игры, вносящая дополнительные сложности, а потом это нашли и исправили, но я об этом совершенно забыл. Что интересно, в исходной версии 1972 года этой ошибки не было.

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

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

Желаю удачи тем, что захочет вернуться в прошлое, в Star Trek или другую вашу первую игру, ведь найти её и заставить заработать сегодня не менее интересно, чем собственно поиграть.
Tags:
Hubs:
+80
Comments 62
Comments Comments 62

Articles