К началу 1990-х годов, после двадцати лет доминирования на компьютерных и телевизионных экранах, эпоха пиксельной графики и плоских игр подходила к концу. Назревали большие перемены, ведь старая графическая архитектура игровых консолей практически достигла пика своих возможностей, и не была готова к наступающему некст-гену — мультимедиа и трёхмерной графике.
Новые времена потребовали новых решений, и таковые не замедлили появиться. И хотя по прошествии времени эти первые шаги долго воспринимались бледной тенью того, во что они превратились с развитием технологии, похоже, что дрожащие пикселизированные полигоны уже достаточно настоялись, чтобы стать классикой и вернуться в виде моды на ретро.
Как и пиксель-арт до этого, раннее 3D теперь приобрело новое прочтение. В последнее время авторы современных игровых проектов всё чаще целенаправленно обращаются к этой забытой визуальной эстетике полигонального минимализма. Поговорим о том, как всё это начиналось, как было устроено и к чему привело.
Поколения
В западном мире с некоторых пор стало принято делить домашние видеоигровые платформы на поколения. Эта неформальная метрика, активно поддерживаемая англоязычной Википедией, группирует платформы по годам выпуска и сходству предлагаемых возможностей. И хотя такое деление довольно условно, оно оказалось очень удобным инструментом, позволяющим ориентироваться в различных периодах истории видеоигровой индустрии.
Домашняя версия Pong на Coleco Telstar
Первое поколение, включающее Atari Pong (1972) и Magnavox Odyssey (1975), пыталось отобразить на экране хотя бы что-нибудь, из чего можно было построить мало-мальский игровой процесс — пусть даже несколько одноцветных палочек и квадратиков. Как однажды метко заметил небезызвестный AVGN, то была деревянная эпоха видеоигр, ещё до изобретения кругов (телевизоры и консоли тех лет часто выполнялись в деревянных корпусах).
Некоторые лучшие игры второго поколения на Atari 2600 — River Raid и Pitfall
Во втором поколении обозначилось множество различных подходов к решению проблемы отображения более интересных и разнообразных игровых сюжетов на телевизионном экране, а также к формированию привычного нам облика игровой консоли в целом. В нём зародилась какая-никакая пиксельная графика, необычные звуки, появились такие столпы, как первая система со сменными программами на картриджах Fairchild Channel F (1976), всемогущая Atari 2600 (1977), и первая 16-битная Mattel Intellivision (1979).
Игры на консолях третьего поколения — Ninja Golf, Rush'n Attack, Wonder Boy in Monster Land
Несмотря на лидирующие с большим отрывом продажи Atari 2600, дальнейший вектор развития оказался задан одной из более поздних и менее успешных платформ второго поколения, ColecoVision (1982). Намеченная её видеоконтроллером TMS9918 разработки Texas Instruments тайлово-спрайтовая архитектура с динамической графикой высокого (по тогдашним меркам) разрешения, 256 на 192 точек, послужила концептуальной основой, которую качественно и количественно на протяжении 1980-х годов развивали системы третьего и четвёртого поколений — в том числе наши любимые Денди и Сега. С третьим поколением в домашние видеоигры пришли многоцветная графика, музыкальное сопровождение, более комплексный и разнообразный игровой процесс и жанровое разнообразие.
Поздние игры на консолях четвёртого поколения — Contra Hard Corps, Castlevania: Rondo of Blood, Donkey Kong Country
Прогресс, разумеется, не стоял на месте. В первой половине 1990-х годов наступила новая эпоха — эпоха мультимедиа и трёхмерной графики в играх, потребовавшая концептуально иных подходов, которые не замедлили реализоваться в новейших игровых консолях. Также в борьбу включились и возмужавшие, прокачавшие свои мегабайты и мегагерцы персональные компьютеры. Несмотря на великое разнообразие технических решений, каждое из них смогло вполне успешно решить поставленные задачи, и в конечном счёте определить привычный нам сегодня облик современных видеоигр.
Пятое поколение крайне интересно тем, что переход к нему потребовал смены устоявшихся парадигм практически во всех составляющих процесса разработки игр, равной которой не случалось ни до, ни (пока что) после. С зарождения индустрии и до этого момента происходило постепенное планомерное развитие, только повышающее количественные показатели в рамках однажды установившихся подходов — больше цветов, больше элементов, больше слоёв, больше бит, в конце концов.
Новое же поколение принесло принципиально иные способы визуализации, новые способы производства контента, даже сами его формы. Случилось невиданное доселе столкновение технологий, архитектур, даже подходов к организации бизнеса. На уже устоявшемся рынке помимо заслуженных ветеранов индустрии, удерживающих свои позиции уже на протяжении десятилетий, появились и полностью новые игроки. Для кого-то из претендентов на лидерство, включая новичков и старичков, это поколение стало последним, а для кого-то — первым оглушительным успехом и началом истории, которая длится и по сей день.
Приметы времени
Общий вектор развития видеоигр, представление о том, во что они превратятся со временем, формировался на всём протяжении 1980-х годов, и к началу нового десятилетия был вполне понятен: игры будущего должны становиться всё более кинематографичными, позволяя игроку почувствовать себя героем интерактивного фильма с увлекательной историей и богатой визуальной составляющей.
Четвёртое поколение игровых систем, не обладая достаточными техническими возможностями, чтобы осуществить это в полной мере, всё же сделало значительные шаги на пути к этой цели, опробовав на практике несколько различных подходов, но главенство какого-либо из них всё ещё не определилось.
Успешные эксперименты в области трёхмерной графики на консолях четвёртого поколения
Проще всего было со звуковым оформлением. Продолжился уход от синтетического звучания первых видеоигр к реалистичному, популяризированному платформой Super Nintendo, некоторые игры для которой смогли обозначить вполне киношный музыкальный накал страстей (Final Fantasy 3, Chrono Trigger и другие).
В пятом поколении мы впервые начали на регулярной основе слышать в играх не просто мелодии, но полноценные песни с вокальными партиями, аранжировки для полноценных симфонических оркестров, а также «настоящую» музыку популярных исполнителей. Всё это стало возможным благодаря носителю огромной ёмкости — лазерному диску, но и немногочисленные новые картриджные системы также повысили свои стандарты звучания.
Адриан не-Джон Кармак манипулирует одной из самолепных фигурок, фото которых послужили основой для спрайтов в игре Doom
На роль технологии создания «кинематографической» графики, как сказали бы сейчас — контента, претендовало сразу несколько различных подходов, также опробованных в предыдущем поколении. В качестве замены классического пиксель-арта ручной работы предлагалось использование более реалистичных изображений, созданных на основе фотографий и видеороликов с живыми людьми или куклами — как в Prince of Persia или Mortal Kombat: то, что тогда называлось технологией захвата движения («motion capture»).
Для создания спрайтов игры Mortal Kombat использовался «захват движения» на видеокамеру
Набирало популярность сформированное полностью синтетическое изображение, так называемый 3D-рендеринг, когда двухмерные изображения создавались на основе трёхмерных моделей, подготовленных на мощных компьютерах — как в Donkey Kong Country, Killer Instinct и Super Mario RPG. Использование такого подхода являлось своего рода лайфхаком, позволяющим отображать самую современную компьютерную графику на недорогих домашних системах настоящего, пока не обладающих достаточной мощностью, чтобы показывать её в реальном времени.
Графика для первых трёх игр серии Donkey Kong создавалась в программе Alias на рабочих станциях SGI
Подоспели и голливудские технологии, предложившие целое интерактивное кино, так называемое «живое видео», когда вся игра снимается как настоящий, довольно дорогостоящий художественный фильм, с актёрами и декорациями, а интерактивность достигается переключением между сценами. При взгляде из дня сегодняшнего это не кажется большим достижением — подобный результат можно повторить с помощью любительской цифровой камеры и вполне обычного компьютера, однако в начале 1990-х годов это было далеко не так просто, и требовало весьма специфических подходов и оборудования.
Видеоэлементы игры Phantasmagoria снимались на видео на синем фоне
Первое время на роль новой серебряной пули прочили именно концепцию мультимедиа — возможность воспроизведения на экране компьютера реалистичных фотографий, звуков, музыки, и полноэкранного видео с качеством, сопоставимым с домашним VHS-магнитофоном. Такое видео могло содержать что угодно — классическую рисованную анимацию, живые съёмки, пререндерённое 3D.
Первые игры на основе этой технологии в её ранней аналоговой ипостаси появились на аркадных автоматах ещё в начале 1980-х годов (Dragon’s Lair, 1983), но потребовалось немало времени, чтобы она стала коммерчески состоятельной на массовом рынке. До домашних потребителей цифровое видео добралось только к концу четвёртого поколения игровых систем в лице Sega CD, Philips CD-i, Commodore CDTV и Pioneer LaserActive. Также мультимедийными возможностями обзавелись и IBM PC-совместимые домашние компьютеры.
Игры, открывшие нам двери в новое измерение
Однако в то же время свой столь же долгий путь проходила и другая перспективная технология: трёхмерная графика в реальном времени. Начавшаяся в самом конце 1970-х с проволочных каркасов и десятка-двух однотонных полигонов, к началу 1990-х годов она достигла достаточного уровня, чтобы лечь в основу новых, динамичных, и вполне детализированных игр. Так в аркадные залы пришла трёхмерная полигональная графика в лице Virtua Racing и Virtua Fighter, а на домашний ПК заявился всемогущий Doom, изменивший всё.
Несмотря на болезни роста, новейшие разработки в этой области сулили куда больший потенциал в разнообразии и интерактивности, чем заранее записанное цифровое видео, и довольно быстро стало очевидно, что именно это и есть то самое настоящее будущее, которому предстоит сделать широкий шаг в дома к игрокам.
Производители домашних игровых систем пятого поколения не сразу сориентировались в меняющейся на глазах ситуации. Общими чертами их платформ стали 32-битный центральный процессор с архитектурой RISC с целочисленными вычислениями, без поддержки плавающей точки, несколько специализированных процессоров для обработки графики и звука, пара-тройка мегабайт оперативной памяти, поддержка мультимедиа в лице CD-ROM и форматов сжатия звука и видео с потерями.
Также практически все консоли с дисководом для лазерных дисков предлагали поддержку стандартных, но ныне совершенно забытых универсальных форматов CD+G, Kodak Photo CD, и, конечно, никем не забытого CD-DA. Последнее обстоятельство позволяло использовать эти консоли и как простой проигрыватель аудио компакт-дисков, создавая добавочную ценность в глазах потребителя — да, с играми пока ничего не понятно, и стоит очень дорого, но зато два в одном, можно и поиграть, и музыку послушать.
Экраны, до боли знакомые многим счастливым обладателям первой PlayStation
В остальном хор получился нестройным. Кто-то ориентировался на мультимедиа, кто-то по старой памяти сделал уклон в сторону мощной двухмерной графики. Кто-то попытался реализовать лучшую в мире 3D-графику. Выиграли же те, кто смог удачно сбалансировать все возможности. Не будем показывать пальцем, но все мы знаем, что это была Sony. Кто-то оценил преимущества нового вида носителей, лазерных компакт-дисков, а кто-то убоялся простоты их копирования и решил придерживаться старообрядных картриджей. Не будем показывать пальцем, но это были Nintendo и Atari.
Примеры изданий игр на дисках и картриджах
Некоторые платформы получили крайне запутанную архитектуру со множеством программируемых элементов, которые оказалось крайне сложно заставить слаженно работать вместе. Другие же склонились к простоте, делая ставку на максимальную производительность отдельно взятых компонентов, таких как центральный процессор. Одни выбрали более простую UMA-архитектуру с единственным общим ОЗУ и шиной в системе. Другие, напротив, предложили выделенные блоки памяти со своими шинами для каждой специфической задачи. Правильный баланс между возможностями и сложностью их применения оказался в итоге решающим фактором.
Плата DTL-H2000, основа системы разработки игр для оригинальной PlayStation
Новые технологии, гораздо более масштабные по объёму и сложности решаемых задач, потребовали внедрения иного подхода к самой разработке игр. В архитектуре консолей появился BIOS и системные вызовы, впервые в истории появились официальные девкиты и SDK. Изменилась длительность проектов, состав и численность команд, управление процессом разработки — всё это стало приобретать современные черты.
Случился технологический переход от написания кода игры целиком на ассемблере к написанию на C/C++, так как и код игр значительно усложнился, и стали доступными вычислительные ресурсы, позволяющие пожертвовать часть производительности в угоду принципиальной осуществимости более сложных проектов. К тому же процессоры RISC-архитектуры больше располагали к компилируемому коду, чем к написанному вручную.
Переход к использованию языков высокого уровня открыл путь к настоящей мультиплатформе — до этого игры переносились между консолями путём полного переписывания кода заново, в результате чего могли получаться очень разные по внешности или игровому процессу продукты, носящие одинаковое название. Теперь же стало возможным использовать в основе всех версий игр один и тот же код.
Сумма технологии
В области отображения графики произошли кардинальные перемены. В прошлое ушли продержавшиеся так долго тайлы, спрайты и слои, формируемые на лету прямо во время прохода луча развёртки по экрану.
В пятом поколении основой графических архитектур стал буфер кадра, в который при помощи растеризатора рисуются графические примитивы, в том числе полигоны, а при необходимости и тайлы со спрайтами. Как правило, и буфер кадра, и исходная графика должны помещаться в видеопамять, представленную отдельной физической сущностью или областью в общем ОЗУ, объём которой ограничен одним-двумя мегабайтами. Это не так уж много, учитывая возросший объём контента, поэтому прежние техники экономии памяти за счёт использования палитр продолжали широко использоваться и в этом, и даже в следующем поколении.
Растеризация где-то делается аппаратно жёсткой логикой, или специализированным процессором с микропрограммой, или чисто программно, усилиями центрального процессора, или комбинацией этих подходов. Некоторые платформы ограничились только аппаратной растеризацией, другие предусмотрели ещё и аппаратную математику, необходимую для ускорения обработки трёхмерных сцен, так называемого этапа T&L (Transform and Lighting) графического конвейера — проецирования вершин, перемножения матриц поворота, отсечения невидимых частей сцены, расчёта освещения и тому подобных операций.
Поддержка освещения по Гуро на уровне растеризатора означает простую интерполяцию цвета между вершинами полигона
Возможности растеризации представлены, как правило, рисованием полигонов с наложением текстур и какой-либо реализацией затенения по Гуро — разные цвета для каждой из вершин с плавным переходом между ними. На разных платформах реализованы противоположные подходы к текстурированию, прямой или инверсный, и соответственно, использовались четырёхугольные либо треугольные полигоны. В дополнение к этому часто присутствует поддержка рисования линий и иногда быстрое прямое копирование прямоугольных растровых изображений (спрайтов) без лишних преобразований.
80 миллионов полигонов! It's Over 9000!!!
Главным мерилом производительности для трёхмерной графики стало количество полигонов в секунду, подсчёт которых стал одним из новых любимых занятий игровой прессы. Это, однако, крайне необъективный и даже манипулятивный показатель, ведь он зависит от опций отображения — наложения текстур, освещения, полупрозрачности. Каких-либо стандартных тестов производительности типа 3DMark тогда не существовало, а в собственных синтетических тестах и идеальных условиях можно было получить цифру на добрый порядок больше, чем в реальных играх. И, конечно же, рекламные материалы играли в игру «кто больше», предлагая всё возрастающие цифры, имеющие мало отношения к реальности.
К тому же, количество полигонов в секунду — не самая интуитивная для понимания величина, ведь геометрическая детализация сцены в этом случае напрямую зависит от частоты кадров. Так, 100000 полигонов в секунду при частоте обновления экрана 60 раз в секунду дают всего лишь 1666 полигонов в сцене — крайне малое количество. Но на частоте 20 кадров в секунду это уже более-менее приличные 5000 полигонов в сцене.
Туман, кругом туман: 3DO, PlayStation, Nintendo 64 — Blade Force, Disruptor, Turok
Проблемы с ограниченным бюджетом полигонов, которого на самом деле едва-едва хватало для отображения содержательных игровых ситуаций даже на лидирующих и самых мощных платформах поколения, вылились в рождение одного из самых заметных визуальных артефактов и узнаваемых элементов графики пятого поколения.
Речь идёт, конечно же, о тумане — способе маскировки находящихся не так далеко от камеры границы трёхмерной сцены за счёт плавного градиентного перехода изображения декораций в однотонный цвет фона. Со временем, когда разработка для новых платформ была лучше освоена, полигональный бюджет начал использоваться более эффективно, и туман в играх перестал так сильно бросаться в глаза, но в ранних играх он весьма заметен, и порой начинается в районе кончика носа главного героя.
Редкие примеры графики высокого разрешения на Saturn и PlayStation: игры Decathlete и Dead or Alive
Новые платформы стали способны на отображение графики с более высоким разрешением, чем раньше — многие из них поддерживают несколько разрешений, с шириной экрана 256, 320, 384, 512 и 640 пикселей при 240 прогрессивных или 480 чередующихся строках. Но по причине не очень высокой производительности графических систем игровой процесс в большинстве игр всё равно происходит в низком разрешении, практически таком же, как у консолей предыдущего поколения, около 320 на 240. Высокие же разрешения порядка 640 на 480 пикселей в основном использовались для титульных экранов и меню. Впрочем, некоторые игры смогли более-менее успешно применять повышенное разрешение и в игровом процессе. В основном это касается консоли Sega Saturn, а также Nintendo 64 при использовании расширителя ОЗУ до 4 мегабайт.
Помимо явных технологических улучшений в возможностях визуализации, качестве графики и звука, и в объёмах памяти и производительности, в пятом поколении игровых консолей случился и шаг назад. Речь идёт про вынужденный отказ от частоты обновления изображения на экране 60 кадров в секунду (или 50 для PAL-регионов).
Игровые консоли предыдущих поколений постепенно довели работу с двухмерной графикой практически до совершенства, и перерисовка экрана на частоте телевизионной развёртки стала для них нормой. Это означает максимально гладкое, плавное перемещение объектов по экрану, плавную прокрутку локаций без подёргиваний и разрывов, максимально отзывчивое управление. Эти качества на платформах пятого поколения сохранились в большинстве 2D-игр, но для трёхмерных игр производительности вновь созданных технологий хватало впритык.
Полигоны почти без текстур, но с освещением по Гуро в Tobal No.2 и сложные текстурированные сцены в Metal Gear Solid
Так как архитектура новых графических систем подразумевала отрисовку изображения в растровый буфер, возникла возможность выбора между детализацией (количеством полигонов, наличием освещения и текстур) и скоростью прорисовки.
Повышенная детализация давала играм возможность выглядеть более привлекательно и реализовывать более сложные игровые сюжеты, а зачастую и вовсе являлась необходимостью, чтобы сделать возможной реализацию того или иного игрового сюжета.
В итоге средняя частота обновления экрана естественным образом установилась в районе 15-20 кадров в секунду. Лишь в очень немногих играх, в основном в драках один на один без трёхмерных декораций, разработчики сумели найти баланс и совместить неплохую детализацию с идеально быстрой прорисовкой — зачастую за счёт отказа от текстур на полигонах или от освещения. Возвращение к прежним почти повсеместным 60 кадрам в секунду стало желанной целью разработчиков игр для консолей на несколько последующих поколений игровых систем вперёд.
Разные подходы к полупрозрачности на Saturn, PlayStation и Nintendo 64 — Alien Trilogy, Crash Bandicoot 2, Wave Race 64
Не самой очевидным полем конкуренции в области новой графики стала борьба за эффекты полупрозрачности, иначе говоря — альфа-блендинга. В четвёртом поколении отображение истинно полупрозрачных элементов, через которые частично просматривались другие, находящиеся под ними, смогла предложить только Super Nintendo. И хотя в местной реализации применение эффекта имело множество ограничений, он действительно выгодно выделял визуальный ряд среди конкурирующих платформ.
В новом поколении отображение полупрозрачных элементов изображения в том или ином попыталась предложить каждая платформа. Однако, так как эта задача решалась техническими средствами тех лет не так уж просто, реализовано это было при помощи различных ухищрений и с переменным успехом.
3DO Interactive Multiplayer (октябрь 1993)
Неожиданным образом первую действительно популярную систему пятого поколения вывели на рынок не признанные лидеры и не японские гиганты, а условный новичок в индустрии.
Созданная выходцами из американской Electronic Arts, набившими руку на разработке игр для Sega Genesis, компания The 3DO Company попыталась совершить революцию в самом деле издания игр. К слову, буквы в названии компании предположительно означают «трёхмерную операционную систему», но это не точно. Существует и другая версия, что это синтетический термин, призванный продолжить ряд — аудио, видео, тридео.
Panasonic. Just slightly ahead of our time
▍ Новая волна
Смелая задумка заключалась в создании платформы не в виде конкретного железа или набора чипов, а в качестве спецификации, которая должна была установить популярный стандарт, наподобие домашнего видео в формате VHS. Созданную архитектуру предполагалось лицензировать производителям, которые будут производить устройства, соответствующие спецификации.
Стартовая заставка консоли и ожидание запуска диска
Зарабатывать деньги предполагалось на лицензионных отчислениях с производства как самих консолей, так и копий игр, причём эти отчисления были значительно скромнее, чем у лидеров рынка, что открывало двери в большой геймдев небольшим независимым студиям. Эта экономическая модель, впрочем, оказалась не вполне успешной, так как привела к значительному повышению розничных цен на консоли, и в конечном счёте на итоговые позиции платформы на развивающемся рынке. Тем не менее, платформа продержалась на плаву вполне достойную пятилетку. Было продано примерно два миллиона устройств — приличное количество, хотя и крайне скромное в сравнении с действительно успешными конкурентами.
Так или иначе, компании 3DO удалось создать довольно впечатляющую платформу, настоящего next gen-первенца своего времени. Устройство получилось весьма непростым, со множеством хитроумных решений, что, вероятно, стало следствием разработки системы в формате спецификации, без непосредственной привязки к технической реализации.
Работать с этой архитектурой, однако, оказалось куда проще, чем, скажем, в случае с Sega Saturn или Atari Jaguar, о сложности разработки для которых постоянно говорили разработчики. Про консоль 3DO такого не услышать, и имея некоторый собственный опыт подобного взаимодействия с ней, я могу сказать, что её официальный SDK вполне прекрасен, причём не только фактом своего наличия в принципе (консоли предыдущего поколения не имели вообще никаких SDK), но и уровнем проработки.
Консоли разных производителей и переживания потребителей в 1993 году
Что касается производства консолей, компании удалось привлечь крупнейших производителей в лице Panasonic, GoldStar, Sanyo, Creative Labs и даже Samsung. Все они с честью справились с реализацией спецификации в кремнии, обошлось без больших проблем и критических несовместимостей. Примечательно, что в этом списке могла бы оказаться и Sony, но к тому времени она уже начинала работу над собственным конкурирующим продуктом и от участия в проекте отказалась.
В одной из презентаций для потенциальных разработчиков на 3DO кто-то обещал, что будет не больно
Как мы знаем теперь, низкий порог входа привёл к тому, что многие игры для 3DO делались в крайней спешке, усилиями немногочисленных разработчиков, не обладающих достаточным опытом. Результат, как говорится, налицо — достаточно вспомнить, каким получился порт Doom, фактически сделанный одним человеком (не Кармаком) всего за три месяца.
Только в недавние годы такие любительские проекты, как Tempest 3DO и порт Tomb Raider на основе движка OpenLara, смогли продемонстрировать, что у 3DO было чуть больше пороха в пороховницах, и она могла бы продержаться на рынке немного подольше, если бы у разработчиков игр было больше времени на освоение системы. Впрочем, эти же проекты показывают и наличие потолка, выше которого прыгнуть было нельзя.
▍ Разработка
Комплект разработчика для 3DO полон свежих и даже радикальных для своего времени подходов, поэтому стоит уделить ему внимание.
Для начала, инструменты ориентированы на платформу Apple Macintosh. Альтернатив для более традиционных MS-DOS или Windows предусмотрены не были. Связано это, вероятно, с тем, что на Mac были доступны более продвинутые средства для подготовки мультимедиа-контента, и в частности, средства для работы с видео в формате Cinepak. Напомню, что дело было во времена, когда Windows 3.1 являлась горячей новинкой, а мультимедийные инструменты появились на ней только в ноябре 1992 года — это были пакет Video For Windows и версия Adobe Photoshop 2.5, пока не имевшая даже поддержки слоёв. Разработка же платформы и инструментов начались в 1991 году.
Устройство рабочего места разработчика для 3DO. Изображение из официальной документации
SDK для 3DO называется 3DO Portfolio Toolkit и предназначен для работы на компьютерах Apple Macintosh с процессором 68040 или PowerPC. Он включает компилятор C, библиотеки и обширную документацию. Для отладки кода требуется огромный ящик под названием 3DO Network Station или более компактная плата расширения 3DO Development Card.
Другой элемент необычного подхода к разработке — исключительно высокоуровневое программирование на C. То есть низкоуровневые обращения к регистрам физических устройств в коде игр исключены, и соответственно, описания регистров в официальной документации нет. Хотя остальные платформы также предлагали компилятор C и библиотеки, они снабжались детальным описанием всех тонкостей устройства оборудования, включая карты памяти и регистры, а некоторые не смогли даже избавиться от написания части кода на ассемблере.
Элементы SDK как их видели разработчики
Консоль обладает своей многозадачной операционной системой под названием Portfolio, загружаемой с диска вместе с игрой. ОС выполняет менеджмент потоков исполнения кода, выделения памяти, а также предоставляет пару десятков функциональных API, называемых Folio: Graphics Folio, Sound Folio, Music Folio, Kernel Calls Folio, Timers Folio и так далее. Вызовы этих API покрывают все нужды для разработки игр и призваны абстрагировать их код от конкретной аппаратной реализации. Эдакий прото-DirectX, причём даже не на минималках.
В документации периодически упоминается возможность увеличения характеристик системы в будущем, например, увеличение объёма ОЗУ, наличие модуля декодирования MPEG и даже полноценных портов MIDI-интерфейса. Что-то из этого должно было появиться в консоли следующего поколения, 3DO M2, которая была разработана, так и не добралась до игроков.
К счастью, современным энтузиастам ретро-разработки, желающим прикоснуться к этой платформе, уже не требуется специальное оборудование и старый Мак, нет необходимости и запускать MacOS в виртуальной машине. Средства разработки для 3DO были адаптированы любителями под современный компилятор C, и могут быть использованы на обычном PC с Windows или Linux, а для отладки можно запускать код в одном из эмуляторов консоли.
.
▍ Архитектура
Так как архитектура не предполагает работы с ней на низком уровне, разработчикам игр были известны только общие положения. Это стало причиной довольно позднего появления эмуляторов — необходимая информация о деталях реализации была получена их авторами методом реверс-инжиниринга железа и изучения различных источников, включая патенты, только в середине 2000-х годов.
Архитектура 3DO в представлении автора текста. Всё начинается с батарейки!
В основе 3DO лежит 32-битный RISC-процессор ARM60, работающий на частоте 12 МГц. Система имеет основное ОЗУ объёмом два мегабайта и один мегабайт видеопамяти — стандартный объём по меркам поколения. Звуковая система представлена программируемым сигнальным процессором, который можно озадачить не только вопросами звука, но и вычислениями, и ЦАП. Все компоненты системы, включая оба вида ОЗУ, связаны между собой общей высокоскоростной 32-битной шиной.
Графическая система консоли реализована внутри большой заказной микросхемы с кодовым названием MADAM (позже интегрирована в чип ANVIL). Она содержит растеризатор CEL Engine, 36-канальный контроллер DMA для быстрого обмена данными между устройствами на общей шине, и небольшой математический сопроцессор, позволяющий быстро перемножать целочисленные матрицы размером до 4x4.
Плата Panasonic 3DO модели FZ-1
Для работы с графикой используется выделенная видеопамять. Её объём используется максимально рационально, даже слишком: в видеосистеме реализован целый набор хитроумных трюков, в каждом из которых прослеживается стремление к максимизации экономного использования имеющейся памяти. Видеопамять также оснащена отдельной высокоскоростной шиной SPORT, позволяющей выполнять быстрые блочные пересылки внутри видеопамяти.
▍ Видеосистема
Хотя в расхожих технических характеристиках для консоли указана поддержка разрешений 320 на 240 и 640 на 480 пикселей в 24-битном цвете, в реальности всё значительно сложнее и интереснее. Фактически, консоль всегда отображает на экране растр с разрешением 640 на 480 в 24-битном цвете, но при этом буфер кадра всегда имеет размер 320 на 240 пикселей и использует только 15-битный цвет (пять бит на канал). Формированием выходного видеосигнала из содержимого буфера кадра занимается видеопроцессор VDLP (Video Display List Processor).
Условное изменение разрешения экрана достигается за счёт применения настраиваемого аппаратного интерполятора. В зависимости от видеорежима цвета лишних пикселей или дублируется из соседних — два одинаковых пикселя дают визуальное понижение разрешения вдвое — или же для них вычисляется промежуточный оттенок между двумя соседями. В некоторых режимах каждый пиксель буфера имеет бит веса, влияющий на интерполяцию. Эта крайне хитроумная система также учтена в устройстве растеризатора, который может корректно отображать графику в буфер, включая бит интерполяции для некоторых пикселей и таким образом имитируя повышенное разрешение.
Такая весьма нетривиальная особенность видеосистемы отразилась и на формате буфера кадра. Он имеет довольно своеобразную организацию: память делится на пиксельные пары, расположенные в одном 32-битном слове, но на экране эти пары располагаются вертикально, один пиксель над другим. За исключением этих пиксельных столбиков-пар, буфер линеен. Вероятно, такая организация потребовалась для максимально эффективной реализации интерполятора.
Один пиксель в буфере растра всегда занимает 16 бит и использует 15-битный цвет, а его конкретный битовый формат зависит от видеорежима. Любую из строк буфера можно перемещать по видеопамяти изменением указателей в соответствующем списке, что позволяет реализовать как традиционную двойную буферизацию всего экрана, так и частичную — для экономии видеопамяти.
Организация буфера кадра. Иллюстрация из официальной документации
15-битный цвет, получаемый из буфера растра, перед отображением на экране преобразуется в 24-битный простым битовым сдвигом или же через подобие палитры, представленной в виде трёх наборов по 32 восьмибитных значения для каждого из цветовых каналов. Иначе говоря, можно преобразовать каждый 5-битный уровень яркости каждого из каналов в заданное программой 8-битное значение. Упомянутый выше интерполятор всегда оперирует именно финальными 8-битными значениями. Таким образом достигается поддержка 24-битного цвета на экране при всегда 15-битном цвете в буфере кадра.
Из других необычных возможностей в системе предусмотрено быстрое восстановление буфера кадра. По сути это очень быстрое блочное копирование целого буфера из одного места видеопамяти в другое с помощью шины SPORT во время обратного хода луча. Большинство консолей позволяет только быстро очищать буфер кадра, заполняя его одним цветом. 3DO помимо этого может копировать туда целое фоновое изображение, поверх которого будет рисоваться сцена.
Также в чипе предусмотрено аппаратное наложение изображения на внешний видеопоток. Оно предназначалось для приставок кабельного телевидения — создание таковых устройств входило в изначальные планы компании — но, вероятно, никогда не использовалось в реальности.
Растеризатор в архитектуре 3DO носит название CEL Engine. Собственно CEL в местной терминологии обозначает спрайт или полигон — прямоугольные текстуры различных размеров, которые можно выводить в буфер растра с применением цветовых и геометрических преобразований. Название является отсылкой к анимационным целлулоидным плёнкам в традиционной анимации, которые традиционно назывались cel’ами.
CEL Engine обладает весьма продвинутыми возможностями. Он способен на лету распаковывать прямоугольные текстуры из различных форматов, после чего трансформировать цвет их пикселей и растеризовать их в буфер кадра подобно полигонам. Как и на Sega Saturn, используются квады. Так как они считаются визитной карточкой именно Saturn, об особенностях этого подхода и отличиях их от треугольников я подробно расскажу в следующей части статьи.
Исходные изображения могут храниться в видеопамяти с различной глубиной цвета и палитрами — 1, 2, 4, 6 (представьте себе!), 8, даже 16 бит на пиксель (на один бит больше, чем в буфере растра). Мало того, эти данные могут быть сжаты RLE-подобным алгоритмом, и распаковываются они прямо в процессе растеризации.
Трансформации цвета применяются как к исходным пикселям текстуры, так и к дополнительным источникам, среди которых могут быть и пиксели буфера кадра. Между этими значениями может выполняться довольно сложная, хотя и фиксированная математика, включающая умножение и деление, а не только простое сложение. Таким образом поддерживается полноценная полупрозрачность при растеризации.
В части растеризатора, занимающейся трансформацией квада, так называемом «проекторе» в местной терминологии, есть сразу два блока текстурирования, Corner Engine, выполняющих проход по строке текстуры. Они способны работать одновременно, синхронно по паре строк, или асинхронно, чередуя строки по мере их отрисовки. Для полной производительности нужно использовать асинхронный режим, а также не забыть включить оба Corner Engine — один из них отключается на случай борьбы с артефактами, возникающими в некоторых редких случаях. Есть подозрение, что в некоторых играх фактически всегда работал только один текстурный блок.
▍ РЕАЛьные цифры
Конечно, платой за все эти выдающиеся способности стала невыдающаяся скорость работы видеосистемы. Скажем прямо, работает всё это великолепие без особой суеты и спешки. И к сожалению, по играм, вышедшим в период коммерческой жизни консоли, трудно оценить её действительный потенциал.
Не самые удачные игры платформы, AutoBahn Tokio и Mazer
Во-первых, это был рассвет 32-битной эпохи, когда форма будущих игр ещё не определилась. Поэтому, несмотря на заявленное прямо в названии системы 3D, добрую половину библиотеки игр составляют игры на основе технологии FMV, то есть видеозаставок. Консоль справляется с этой задачей явно лучше, чем все предыдущие системы, хотя и не идеально: видео не всегда полноэкранное, не особо плавное, и подвержено различным артефактам. Впрочем, это не помешало существовать эксклюзивному для платформы формату не-игровых видеодисков 3DO Video, в котором небезызвестная компания Vivid Interactive выпустила серию познавательных фильмов.
Игры на основе технологии FMV в версии для 3DO — Mad Dog McCree и Cyberia
В архитектуре консоли не предусмотрена аппаратная поддержка видео. В основном используется программный кодек Cinepak, выдвигающий специальные требования к подготовке исходного материала. В частности, он не очень хорошо справляется с большим количеством движения в кадре и с сохранением мелкой детализации. Впрочем, есть и аппаратный потоковый формат SANM, содержащий несжатые данные в нативном графическом формате, и потому способный на 30 кадров в секунду с хорошим качеством, платой за которое становится увеличение объёма видеофайла. В качестве радикального улучшения поддержки видео предусматривался опциональный модуль декодера MPEG 1.
Лучшие 3D-игры платформы, Need For Speed и Road Rash
Во-вторых, в том, что касается 3D, хоть архитектура консоли и предусматривает немало интересных вещей, можно сказать — даже слишком много, но главной проблемой является скорость их работы. Из-за непродолжительной коммерческой жизни потенциал платформы остался слабо раскрыт, хотя и смог явить миру такой культурный пласт, как серия гоночных игр The Need For Speed (и ещё очень классный перезапуск Road Rash). В целом же трёхмерные игры на 3DO страдают как несовершенством игровой формы, так и весьма низкой частотой кадров.
Реклама с техническими характеристиками
Рекламная кампания системы не очень фокусировалась на технических характеристиках, предпочитая обыгрывать разницу между РЕАЛьностью и игрушками (буквы R-E-A-L неизвестного значения в символике систем производства Panasonic). Вероятно, это не в последнюю очередь связано существованием платформы в виде спецификации, а не аппаратуры.
Технические характеристики из инструкции
Если речь всё же заходила о технике, использовались показатели разной степени абстрактности, такие, как 16 миллионов цветов на экране, высокая пропускная способность ОЗУ и скорость растеризации в пикселях в секунду. Последняя фактически составляет 9-16 миллионов честных пикселей в реальных играх, или 36-64 с учётом пикселей, добавляемых интерполятором. Именно 60 миллионов пикселей в секунду указано в оригинальном мануале для 3DO FZ-1, и помимо указания на двойную скорость привода CD-дисков это единственная техническая характеристика в нём.
Alone In The Dark и Total Eclipse
Что касается пресловутых полигонов в секунду, рекламные материалы вообще не упоминали эту характеристику, вскоре ставшую главным мерилом в битве платформ. И даже в перекрёстных сравнениях платформ в игровой прессе тех лет эта цифра не фигурирует. Причина вполне понятна: по современным оценкам она находится в районе 20-30 тысяч практических полигонов в секунду, то есть текстурированных и применяемых в реальной игре, что в несколько раз меньше средних показателей двух главных конкурирующих платформ.
PO'ed и Escape from Monster Manor
В отличие от прочих лидеров рынка, выделить какие-то характерные особенности визуальной эстетики платформы довольно затруднительно, так как она не обладает специфическими, сильно бросающимися в глаза артефактами. Больше всего визуал напоминает игры эпохи 386-го процессора и VGA, так как значительная часть игр являлась кросс-платформой и выходила на ПК тех лет.
Если же пытаться описать графику 3DO словами, прежде всего это низкая частота кадров, причём повсеместно — даже двухмерные игры за редкими исключениями не работают привычных на 60 кадрах в секунду. В полигональных играх число полигонов крайне мало, трёхмерные игры больше рассчитывают на спрайтовые объекты. С другой стороны, разрешение текстур в среднем чуть выше.
В двух словах о 3DO
▍ Продолжение следует
В следующей части мы подробно рассмотрим две главные платформы поколения, между которыми развернулась основная борьба: Sony PlayStation и Sega Saturn. В спорах о решающем превосходстве каждой из них было сломано немало копий. Приносите свои, сломаем ещё.
«Графика древности» — цикл статей, посвящённых детальному разбору разнообразных аспектов способов визуализации в видеоиграх прошлых лет, от самых истоков игровой индустрии до конца века, а также анализу технологических оснований, формирующих узнаваемую визуальную эстетику компьютерной графики различных исторических периодов. Предыдущие публикации цикла:
- Графика древности: от текста к видеоиграм
- Графика древности: легендарный Mode 7
- Графика древности: палитры, часть 1/2
- Графика древности: палитры, часть 2/2
Продолжение следует!
Автор: Александр Семенов