Йен Белл — соавтор, вместе с Дэвидом Бребеном, легендарной игры Elite, которая в 80-х вывела геймдизайн на уровень коммерческого и культурного феномена. Она по-прежнему изучается в разных уголках мира как пример очень эффективного и новаторского подхода к программированию, геймплею и визуальному дизайну. Йен Белл согласился немного поговорить со мной об истории игры, своих взглядах на ИИ и об искусстве геймдизайна в целом.
Легенда вместе с рыжим другом передает привет Хабру.

Elite по-прежнему остается феноменом в плане написанного для нее кода, особенно для очень сжатых технических возможностей тогдашнего железа. И этот код написали вы — откуда вы черпали свои идеи и решения? И как выглядел ваш рабочий процесс вместе с Дейвом Бребеном?
Это было в 1983–84 годах. До интернета, до электронной почты. Совсем другой мир. Мы черпали идеи из собственного опыта программирования более простых игр. Наши решения (с Бребеном) были схожи. К литературе мы обращались очень редко. Никаких учебников.
Хотя, однажды я всё-таки обратился к литературе за помощью. Мне нужен был воспроизводимый ГСЧ (генератор случайных чисел) для части процедурной генерации Вселенной, который можно было бы эффективно и компактно реализовать на процессоре 6502 (процессор встроенный в компьютер BBC Micro, на котором работал Белл). И вот я отправился пешком от Кембриджа до «Хефферса» — главного в университете книжного магазина в те времена, когда такие вещи были еще актуальны. Я прошёл в довольно скромный раздел «Компьютерная литература», который тогда состоял сплошь из книг о том, как программировать, а не о том, как взаимодействовать с программами. Кнут и всё такое. (Дональд Кнут — знаменитый теоретик информатики и автор книги “Искусство программирования”).
Я полистал указатели «random number» (случайное число) в нескольких книгах, которые, как мне показалось, могли содержать информацию о ГСЧ, и в одной из них мне в глаза бросилась фраза: «Последовательность Фибоначчи — это крайне плохой источник случайных чисел». «Вот то, что нужно», — подумал я и поставил книгу обратно на полку.
Acornsoft View, когда-то заменявший Ворд.

Мой рабочий процесс с Дэвидом на ранних этапах происходил в основном, когда мы разъезжались по домам, а не во время самой учебы. Мы посылали друг другу письма через Королевскую почту (мои были напечатаны на старой механической пишущей машинке, его — написаны от руки) с вложенными флоппи-дисками на 40 КБ, 5,5 дюйма. Позже, когда появился Acornsoft View (текстовый редактор для 8-битных компьютеров), рукописные или машинописные письма сменились распечатками на матричных принтерах в очень низком разрешении. Мы работали над разными частями финального кода, как я подробно описываю на своём сайте.
Дэвид Бребен и Йен Белл (справа).

Что меня всегда поражало, так это очень гладкие анимации движения космических кораблей в Elite. Но, как мне известно, компьютеры в 80-х не умели работать с числами с плавающей запятой… Как вам удалось добиться такого эффекта, учитывая, что в других играх из той эпохи анимация была более дерганной и топорной?
Анимацией в основном занимался я. Дэвид реализовал отрисовку корабля на основе заданной векторной тройки, а я анимировал сами кадры корабля. Насколько я помню, для единичных или малых векторов используется 16-битная арифметика с фиксированной запятой. Я аппроксимирую истинные повороты с помощью линейных рекуррентных соотношений. Поэтому тройки векторов накапливают ошибки и их время от времени приходится приводить в порядок.
Это позволяет заменить вычисления синусов и косинусов умножениями с фиксированной запятой при разреженном перемножении матриц. Но даже это было слишком медленно для 6502 на 1 МГц в C64, поэтому мне пришлось перейти на таблицы логарифмов вместо умножителей, основанных на битовых сдвигах. Подобные вещи могут вернуться с нано- или квантовыми вычислениями, но прямо сейчас это навык уровня заточки кремня или каменной кладки. Любопытно, но не особо актуально для будущего, где есть вайб-кодинг.

Кто именно придумал идею процедурной генерации миров? Или это был коллективный гений за работой? Может быть какой-то опыт, почерпнутый в математике, науке или в жизни в целом дал вам подсказку?
Я уже реализовал генератор звёздных карт на гексагональной сетке для РПГ “Traveller”, использующий ГСЧ, на мини-компьютере TX9900, к которому у меня изредка был доступ по выходным, ещё до встречи с Дэвидом. Меня всегда завораживала процедурная генерация. Первая программа, которую я «опубликовал», была в виде листинга на BASIC в одном из первых британских журналов о персональных компьютерах. Она генерировала случайные сценарии для «Звёздного пути». Спок мог сказать: «Любопытно» или «Это крайне нелогично, капитан». Маккой мог вставить: «Он мёртв, Джим». (Леонард Маккой, один из персонажей сериала “Star Trek”).
Самый первый Леонард Маккой в исполнении Дефореста Келли.

Как именно началась ваша одиссея в искусстве программирования? Каким был ваш первый компьютер и откуда вы черпали знания по теме?
Доступ к миникомпьютеру TX9900 (видимо, имеется в виду компьютер Texas Instruments TI99 на базе TMS9900) с какой-то версией BASIC на нём и чтение руководства по ассемблеру TX9900. Эпизодический доступ к TRS-80 в школе. Затем доступ к Apple IIe, когда я работал в лаборатории во время своего годового перерыва между школой и университетом. Я научился писать на ассемблере по руководству TX9900, а затем программировал управляющее ПО для оборудования на Apple IIe, а после работы забивал в него игру Reversi (Отелло).
Компьютер TI99, 1981 год.

Какие игры вам особенно нравились и, возможно, были источниками вдохновения до начала работы над Elite? Вы были знакомы с Flight Simulator, выпущенном в 1980 году? Если да, то он как-то повлиял на ваши идеи или они были полностью независимыми?
Единственной по-настоящему похожей на Elite игрой, о которой мы знали, был «Aviator» Джеффри Крэммонда от Acornsoft. Мне в какой-то степени нравились «Chuckie Egg» на BBC Micro и «Castle Quest» (тоже на BBC Micro). Но как только у меня появился свой BBC Micro, я проводил за программированием на нём гораздо больше времени, чем за запуском чужих игр. И с TX9900 было так же.
Еще до Elite вы уже зарекомендовали себя как геймдизайнер, выпустив Free Fall. Как в те времена вообще можно было релизнуть игру? Что могли сделать разработчики, чтобы привлечь к себе внимание издателей и геймеров?
Надо было отправлять потенциальным издателям по почте кассету с записью программы. Или идти к ним в офис с ней, чтобы загрузить программу, показать демо-версию программы, а затем уйти, несолоно хлебавши, вместе с программой.
Игра Free Fall.

Что, по-вашему, сделало вас очень эффективным программистом? В чем заключается ваш секрет столь качественного кода и его гладкой логики? Что делает программиста реально хорошим, согласно Йену Беллу?
То, являешься ли ты «хорошим программистом», зависит от того, можешь ли ты написать правильный код для того контекста, в котором будет работать программа. Будет ли этот код когда-либо отправлен и больше никогда не отредактирован, или его предстоит поддерживать и развивать другим людям после тебя? Будут ли сбои в коде раздражать игроков или же приведут к гибели пассажиров? Будет ли бо́льшая часть усилий направлена на выжимание производительности и функциональности из ограниченного оборудования, не предназначенного для таких задач, или на генерацию художественного контента с помощью новых алгоритмов, на создание мощных новых инструментов для расширения возможностей других?
Тот вид программного мастерства, который интересует меня больше всего сейчас — это разработка новых алгоритмов и вычислительной эффективности, о которых никто ещё не думал. Но один из ключевых уроков, который я усвоил за десятилетия работы, заключается в том, что придумывать хорошие идеи не трудно. Трудно убедить влиятельных идиотов, что эти идеи-таки имеют ценность. Чем лучше вы знаете то, чего не знают другие, тем меньше они захотят вас слушать. Такова печальная правда о виде человеческом.
Разработка Elite, наверно, была волшебным временем в вашей жизни. По чему вы скучаете больше всего из того времени да и вообще из эпохи 80-х?
Думаю, больше всего я скучаю по той относительной лёгкости, с которой можно было находиться на рубеже передовых технологий. Сейчас всё иначе. Много новых инструментов разработано. И не обязательно, что они хорошие — мы слишком далеко ушли по неверному пути. И мы уже уплыли так далеко, что развернуть лодку в более разумное направление стало гораздо сложнее.
Что вы думаете об игре Elite Dangerous? Если бы кто-то волшебным образом показал ее вам в 18 лет, какова была бы ваша реакция?
Думаю, моё мнение о ней в 18 лет было бы таким же, как и сейчас. В компьютерных играх есть два главных вопроса: расширяет ли игра возможности платформы до предела? И вносит ли она инновации в игровой процесс? Elite делала и то, и другое. Не уверен, что Elite Dangerous сделала хоть что-то из этого.
Моя главная претензия к ED в том, что она неверна жанру космосима из-за отказа от релятивистских эффектов ради общей мультиплеерной временной линии, а также из-за банальной лени в дизайне. В оригинальном Elite сверхсветовые выкрутасы были допустимы, потому что сам выход в трёхмерное пространство уже был революцией для 8-битного геймплея, а космос там был просто банальным отсутствием горизонта. ED же претендовала на астрономический реализм, но утверждать, что реализм в космическом жанре возможен с ньютоновскими настенными часами — это просто антипедагогично и безграмотно. Суть космической драмы — это замедление времени. ED просто выкинула эту фишку на ветер.
Фрагмент геймплея из Elite Dangerous.

Вы поддерживаете контакты с Дейвом Бребеном или ваши пути разошлись? Не появляется временами желание выпить-посидеть с ним и немного понастольгировать?
Не поддерживаю. Да, разошлись. Нет, не появляется. Я до сих пор встречаюсь с моим старым другом со школы и университета Питером Ирвином (автор игр «Starship Command», «Exile»), чтобы выпить пива и предаться ностальгии.
Белл и Бребен не общались после выпуска игры, так как у них, по некоторым данным, возникли разногласия по поводу авторских прав и роялти. Подлинные причины конфликта до сих пор не до конца ясны.

Над чем вы сейчас работаете? Может, планируете еще делать игры в перспективе? Вам также, по всей видимости, нравится эстетика Веб 1.0, которая сегодня выглядит свежо на фоне уныло-безвкусного, корпоративного вебдизайна. Это в силу ностальгии или же это своего рода художественный месседж с вашей стороны?
Я уже два десятилетия пытаюсь продвигать использование геометрической алгебры в САПР и среди крупных компаний, которые эти системы разрабатывают (я не буду их называть). И теперь, конечно же, геометрическая алгебра стала ключом к эффективному обучению ИИ. Но убедить в этом заблудших культистов-технофилов и прочих кретинов невозможно.
Меня по-прежнему увлекает дизайн игр — в наши дни скорее настольных, чем компьютерных — и я стараюсь следить за сценой независимых РПГ. Но на самом деле для меня всё это сводится к многомерной математической геометрии. Это то, что восхищает меня больше всего на свете.
Когда я (активно) работаю в компании, я обычно забиваю на свой сайт, так что сейчас он выглядит немного запущено. Когда я впервые ввёл ночной режим, он был еще непопулярной эстетической фичей, но теперь интернет распробовал так называемый «теневой режим».
Что вы думаете по поводу эпохи ИИ, в которой мы живем, особенно об инструментах зеро-кодинга? Может ли ИИ заменить человеческий гений в хорошем коде, продукте или хорошей игре? И если бы что-то похожее на ИИ было доступно в 80-х, вы бы стали это использовать для создания Elite или бы полагались только на свою находчивость?
Я почти получил докторскую степень по ИИ, ещё в 1985 году. Но тогда, по сути, никакого ИИ и не было даже. Да и сейчас его не так уж и много, на мой взгляд. Я знаю о нём достаточно, чтобы относиться с глубоким скепсисом. А это, конечно, не то, что компании, например, выпускающие САПР-продукты, хотят слышать. С технической точки зрения это увлекательная штука, и она хороша для порнографии, которая всегда была ключевым драйвером технологий (тут можно вспомнить Q Street), но социальные и экологические последствия вызывают серьезную тревогу. Думаю, справедливо будет сказать, что я понимаю ИИ лучше, чем большинство, и не доверяю ему больше, чем большинство.
Скриншот с официального сайта Белла.

Какой бы совет вы дали начинающим геймдизайнерам?
Я бы сказал: ставьте под сомнение свои фундаментальные знания и вместе с тем все свои догадки. Подвергайте сомнению то, что как вы думаете, вы уже хорошо знаете. Переосмыслите в принципе саму идею “что такое игра”. Почаще проводите время вдали от клавиатуры, предаваясь всяким случайным размышлениям. Отвлекайтесь на что-нибудь, пока ваше подсознание всё как следует не обдумывает и не переварит.
Вдохновение приходит вспышками и в самые неожиданные моменты. Но чтобы оно пришло, сперва нужно многое подсознательно впитать. А когда у вас появится ваше собственное видение, не слушайте никого, если кто-то вдруг начнет придираться к тому или к сему. Вернее выслушать-то можно, но не бойтесь отвергать чужие доводы и аргументы.
Вы, вероятно, действительно понимаете свое видение лучше, чем все остальные. (А если даже не понимаете, то всю затею можно бросать хоть сейчас. Так что в любом случае вы не потеряете ничего). Гните свою линию. Единственный способ создать что-то новое — это сделать игру, в которую вы хотели бы поиграть сами, но не можете, потому что никто её до сих пор не написал. И когда ваша игра появится, вы будете не единственным, кто захочет играть в неё .
Раз и навсегда: Raxxla существует?
Она существует в сайфае Роба Холдстока, написанном в до-элитовскую эпоху, если знать, где искать (видимо, имеется в виду повесть Холдстока “Темное колесо”). Она также существует в моём представлении о вселенной Elite, и если я когда-нибудь напишу продолжение «Тёмного Колеса», она может там появиться. Делает ли это Ракслу реальной? Только в вымышленной вселенной Elite. Является ли она одной из планет на классических звёздных картах 8 элитовских галактик? Нет. По крайней мере, насколько мне известно.
Эмблема, которая, якобы, криптически указывает на местонахождение Ракслы.

И наконец, вы можете оставить сообщение для портала Хабр и всех фанатов вашей замечательной игры в России, которые провели за ней бесчисленные (и бессонные) часы, постигая энигму-загадку-тайну, которой Elite была!
Я бы просто хотел извиниться от лица всего Западного блока НАТО, за то, что они ведут себя как неблагодарные, разжигающие войны болваны.
Дмитрий Баринов, специально для Хабра.
