В Великобритании 80-е были турбулентным временем: закрывались шахты, гибли традиционные индустрии для островной нации. Но на фоне этого хаоса начался внезапный подъем английских компьютеров — он-то и подарил нам шедевр игростроя, который до сих пор впечатляет своими гениальными решениями в скудных технических условиях.

This is the PC revolution

Эпоха Маргарет “Воровки молока” Тэтчер, как ее прозвали в народе (“Thatcher — the milk snatcher”), до сих считается в Британии одной из самых мрачных. По анти-популярности ее администрация сравнима, наверно, с ельцинскими годами у нас.

Протесты британских шахтеров в 1980-х.

Источник: Tribune Magazine.
Источник: Tribune Magazine.

Но иногда даже самая паршивая овца может дать клок шерсти и в случае с ее администрацией этот клок как будто был выстрижен с золотого руна, не меньше. В начале 1980-х Британия стремительная теряла лидирующие позиции в сталелитейной и судостроительной отраслях, шахтерские забастовки стали будничной обыденностью, экономика Альбиона серьезно хворала. 

Нужно было срочно открывать новые горизонты да и вообще идти в ногу со временем: за океаном четырьмя годами ранее стали появляться некие персональные компьютеры из никому неизвестного “гаражного” кооператива “Яблоко”, которые на первых порах в прямом смысле паялись в гараже соучредителем. Наступление новых технологий было оглашено в специальном докладе Парламенту, суть которого сводилась к простой мысли: “Нам надо также!”

Миссию по компьютеризации нации на себя, внезапно, берет служба новостей BBC и начинает продвижение неизвестного зверя по имени “компьютер” оригинальным образом: канал заказал у кембриджской Acorn Computers партию ПК для дистрибуции, которые получили имя BBC Micro. И это было настоящее чудо техники.

BBC Micro. Такой древний, такой ламповый.

Источник: Google Arts & Culture.
Источник: Google Arts & Culture.

Micro, или как его ласково окрестили “Биб”, имел качественную поддержку графики и очень удобную для низкоуровневой работы архитектуру, куда входили ставший иконой восьмиразрядник MOS 6502, расширенная до 32 Кб оперативка и 32 Кб ПЗУ. У компьютера была приятная на ощупь и прочная клавиатура, а чтобы совсем выглядеть как инопланетный девайс, к нему прилагался модуль аллофонного синтеза речи SP0256, куда были “вшиты” 64 базовых голосо-речевых фрагмента.  

Плата SP0256.

Источник: Wikipedia.
Источник: Wikipedia.

А еще он был оснащен Econet — локальной сеткой, соединявшей компьютеры поблизости. Пускай и простенький, но зато почти интернет!

Модуль Econet.

Источник: Wikipedia.
Источник: Wikipedia.

Мануал по настройке Econet.

Источник: Wikipedia.
Источник: Wikipedia.

Словом, Биб был абсолютно зверской машиной. BBC запустили кампанию, бомбардируя население документалками и промо-роликами, прежде всего рассчитанными на школьников и молодых людей, для которых Micro открывал перспективы в чудесное завтра.

Гайд к BBC Micro для детей.

Источник: Internet Archive.
Источник: Internet Archive.

BBC Micro: “Компьютер который стоит иметь, если их много”.

Источник: tumblr.com.
Источник: tumblr.com.

Плоды не заставили себя долго ждать и БИБИСишный компьютер прочно окопался в британских школах, вдобавок став самым желаемым подарком на Рождество, в основном для молодых пацанов, увлекашихся технологиями. При чем за довольно демократичные для тогдашнего топ-железа £399. И вся эта захватывающая эпопея в итоге станет прологом к появлению одной из самых культовых игр из той эпохи.

Невероятно, но факт: прототип BBC Micro был создан всего за 4 дня дуэтом Софи Уилсон и Стива Фёрбера. Их наработка была единственной, соответствующей ТЗ — в соревнованиях за бортом оказался даже сэр Клайв Синклер, создавший легендарный Sinclair Spectrum. Кстати, впоследствии тандем Уилсон-Фербер даст жизнь архитектуре ARM, которая сегодня используется во всех смартфонах и ноутбуках. 

Стив Фёрбер и Софи Уилсон.

Источник: theregister.com.
Источник: theregister.com.

Путь в “Элиту”

Acorn Atom.

Источник: computinghistory.org.uk
Источник: computinghistory.org.uk

Говорят, Рождество — время чудес. Для юного Дэвида Брэбена это оказалось правдой, когда рождественским утром 1981 он обнаружил небольшую коробку, аккуратно упакованную в серебристую оберточную бумагу. Внутри был набор “собери компьютер сам” с популярным на тот момент среди гиков Acorn Atom, у которого было 2 Кб оперативной памяти, 1 Мгц тактовой частоты и 8 Кб read only-памяти. Что поделать, семья была небогатой и могла позволить только скромненькое железо за 128 фунтов.

Но Брэбену хватило и этого. Он начал делать на Атоме первые кодерские зарисовки, которые впоследствии лягут в основу легенды 80-х — космического симулятора Elite, созданного вместе с Йеном Беллом, которого он повстречает в Колледже Иисуса в Кембридже. 

Дэвид Брэбен и Йен Бэлл. Они сделают Элиту, но к сожалению, так и не станут друзьями.

Источник: The Digital Antiquarian.
Источник: The Digital Antiquarian.

Видимо именно потому что Атом был настолько аскетичным, Брэбен научился использовать каждый килобайт мощностей с пользой. И это сказалось на последующей экономичной и одновременно впечатляющей архитектуре Элиты или, как сказала о ней Софи Уилсон: “Игра, которая физически не могла быть написана”.

Но тем не менее два студента просто взяли и написали ее. Что же такого необычного она таила в себе?

Ранний концепт-арт за авторством Белла.

Источник: ancgbell.clara.net..
Источник: ancgbell.clara.net..

Экономия должна быть экономной

Разработка Elite, помимо по-колхозному хакнутого и апгрейженного Брэбеном Атома, протекала также и на BBC Micro Белла. Для тогдашних реалий компьютер не самый слабый, но, для грандиозного видения ребят тогда бы не хватило, наверное, всех компьютеров из пентагоновских подвалов вместе взятых. Уж очень им хотелось запилить живой, динамичный, непредсказуемый мир, похожий на дали и веси из “Автостопом по Галактике”.

Приходилось выкручиваться и выжимать по-максимумом из каждого бита. Так авторы приходят к мысли о том, раз “богатство данных” им не светит, то они заменят его “богатством правил”, которые можно будет гибко перетасовывать, видоизменять и комбинировать при необходимости, получая геймплейное разнообразие. 

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

Элитная графика

Загрузить профиль нового командира?

Источник: The Digital Antiquarian.  
Источник: The Digital Antiquarian.  

“Графон” в Элите и сейчас выглядит довольно эстетично, несмотря на первобытную простоту, а тогда он наверно был просто откровением свыше. А все потому что настоящих 3D-игр люди-то еще и в глаза не видели.

Ее графика работала как каркасная 3D-визуализация: корабли, станции и другие объекты рисовались не заполненными полигонами, а набором ребер, то есть как проволочный “скелет” формы — палка, палка, огуречик, вот вам и космический корабль для контрабанды, и солнечная система с чудно мерцающими созвездиями. 

Это резко снижало число вычислений, потому что компьютеру 1984 года не нужно было заливать поверхности, считать затенение или хранить сложные текстуры. 

Основой трехмерности была проекция из 3D в 2D: координаты объекта в пространстве пересчитывались в координаты на экране, после чего рисовались линии между вершинами. Такой подход позволял добиваться на BBC Micro объёма, а также движения и перспективы без полноценной полигональной графики.  

Стартовый экран из Eilite Co-pro с улучшенной графикой.

Источник: www.bbcmicro.co.uk.
Источник: www.bbcmicro.co.uk.

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

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

С другой, на выручку приходил простой метод разделения логики видимости — звезды были просто фоном, а корабли динамичными объектами, способными вырисовывать бочки, полупетли, иммельманы и прочие фигуры высшего пилотажа. Поэтому космическое небо и Кобру не рисовали “в один слой” с фоном, как во многих других играх того времени. А поскольку графика строилась как сцена с приоритетами, а не как один плоский набор точек, то объекты оптически не затмевали друг друга.    

Бесконечные миры

Это, наверно, любимая часть всех технарей, фанатеющих от Элиты. Учитывая, что в игре 8 галактик, с 256 населенными планетами, то мы получаем 2 048 миров — почти бесконечное количество для древнего компьютера. Ясно, что просто так взять и вписать их в память не получилось бы, ведь планеты в каждой галактике отличаются уникальной экономикой, формой жизни, полезными ресурсами и прочим-прочим.

Авторы прибегли к принципу детерминированного генератора на основе короткого начального состояния, что открывало путь к процедурной генерации. Каждую отдельно взятую галактику задавало “семя” (“seed”), представлявшее собой начальный набор байтов. Затем подключался рекуррентный генератор, который помогал вычислять каждое следующее значение из предыдущего. А уже эти значения становились параметрами звёздной системы: тип звезды, экономика, уровень развития и все остальное. 

Как данные о генерируемом мире хранились в коде игры.

Источник: Alexander the ok.
Источник: Alexander the ok.
Источник: Alexander the ok.
Источник: Alexander the ok.

Кстати говоря, одни и те же “семена” всегда дают одинаковые миры, обеспечивая стабильную структуру галактики. Благодаря гениальному трюку хранить все это великолепие в памяти компьютера не было нужды — стоит нам только выйти в гиперпространство, как процессор за доли секунды пересчитывал систему по формуле и мы получали те же самые миры, что и в прошлый раз.

Кстати, о нейминге планет. Чтобы миры не назывались каким-нибудь блеклым System_13, разработчики встроили в игру две таблицы: 130 “левых” и 130 “правых” слогов. Левые выглядели как La-, Di- Re, а правые замыкали название слогами -ve, -so, и другими. Затем, “семя” указывало случайные индексы из таблиц, и они склеивались в имя. Так рождались культовые Lave, Diso, Riedquat. Хотя одна из планет получила имя лично от создателей: “Arse” или “Ж*па” по-русски. В одной из галактик можно также было найти мир, полный “съедобных гуманитариев”. А вот слога XX в этой таблице не оказалось.Raxxla was a lie.

Оптимизация

В архитектуре процессора MOS 6502 была нулевая страница, которая занимала адреса от 0 до 255 в десятичной системе. Обычно процессор использует 16-битные адреса для доступа к любой ячейке памяти, но на BBC Micro можно было провернуть трюк, задействовав специальные, оптимизированные команды — они позволяли получить доступ к ячейками памяти, используя только 8-битные адреса.    

Цены на планете Лаве. Название планеты, как будто, намекает нам.

Источник: The Digital Antiquarian.
Источник: The Digital Antiquarian.

Благодаря этому маневру, процессор бы описывал меньше циклов, так как ему надо обрабатывать только 8-битные адреса. Ну а поскольку отдельно взятый адрес теперь занимал 1 байт вместо двух, то инструкции в программном коде заметно укорачивались. В условиях жесткой тесноты, когда на игру было всего 22 Кб, это давало огромное преимущество. 

Иллюзия физики

Помимо трехмерной графики Элита еще и поражала довольно-таки сглаженными движениями. Для сравнения, во многих играх того времени объекты и персонажи двигались в болезненно заторможенной раскадровке, убивая ощущение жизни в происходящем.

Как же игра добилась такой плавности? Процессор MOS 6502 не умел работать с числами с плавающей запятой — его экспертиза заключалась в целых числах, которые он лихо складывал и вычитал, но не более.   

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

Механика апгрейдов в геймплее Элиты была революционной.

Источник: The Digital Antiquarian.
Источник: The Digital Antiquarian.

Иными словами, вместо настоящих дробей процессор работал бы с целыми числами, потому что это было быстрее и проще для 8-битного железа. Программа затем бы умножала или масштабировала значения, а потом трактовала их как числа с дробной частью. Таким образом, вводное 150 могло означать не “сто пятьдесят”, а “полтора” в выбранном масштабе. За счёт такого хитрого хака объект мог иметь скорость вроде 0.25 или 0.5 условной единицы за кадр, хотя в памяти это выглядело как обычное целое число.  Иначе чем еще объяснить плавные движения в игре?

Кстати, Elite, как и многие другие игры на компьютерах того времени защищалась абсолютно сумасшедшей системой Lenslok. Вкратце, к кассете с игрой прилагалась пластиковая линза. Когда игра запускалась, на экране высвечивался код из двух букв, но он был разделен на вертикальные полосы, которые затем переставлялись в другом порядке на экране. Lenslok представлял собой ряд вертикально расположенных призм в пластиковом корпусе, которые этот код “пересобрали”. Но у игроков часто бывали проблемы с калибровкой монитора или с самой линзой, которая иногда не корректно работала.

Источник: Gaming Bolt.
Источник: Gaming Bolt.

Load New Commander?

Версия в цвете.

Версия в цвете. Источник: Мир Фантастики.
Версия в цвете. Источник: Мир Фантастики.

Elite пронеслась сверхсветовой стрелой через сознание массового геймера. Наверно, это был первый тайтл, который рекламировали как подобает, с фанфарами. Издатель Acorn выкупил эфирное время для рекламы на ТВ, а на день релиза был арендован лондонский Торп-парк. Во все это дело вбухали аж £50 000.

Элита откроет игрокам много нового, помимо революционного гемйдизайна. Так, тысячи английских школьников начнут спрашивать у своих родителей “что такое наркотики”, потому что “они приносят до фига денег”. Ну и ударятся в работорговлю до кучи.

Элиту захотят в коллекцию все, у кого только был подходящий компьютер и суммарный тираж в итоге преодолеет 1 миллион копий. Но, потом начнется эра 8-битных приставок, игры обзаведутся сочным визуалом, системой уровней и боссов, для них начнут писать чуть ли не литературные сюжеты, а технологии неумолимо продолжат двигаться вперед.

Уже к концу 80-х Элита выглядела морально устаревшей, хотя фанаты у нее продолжали умножаться. Появятся они и в пост-советском блоке, особенно с приходом “Байтов”, “Композиторов”, “Кворумом” и прочих клонов к тому моменту уже снятого с производства в Британии синклеровского оригинала. 

В 90-х выйдет пара частей, продолжавших оригинальную игру: Frontier: Elite II и Frontier: First Encounters, а в 2014 выйдет ремейк первой части Elite: Dangerous с современной графикой и 400 миллиардами миров (!)

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

Оригинальный код игры для BBC Micro.

Прикоснуться к легенде через браузерный гейминг.

Играть через Internet Archive онлайн.