Хабрахабр

[Перевод] Как id Software создавала Wolfenstein 3D на основе технологий из Commander Keen

image

Данная статья является фрагментом книги Game Engine Black Book: Wolfenstein 3D — подробного исследования, посвящённого истории, коду и разработке оказавшего огромное влияние на игровую отрасль шутер от первого лица про убийство нацистов.

В этой главе раскрываются истоки игры и рассказывается о том, как она была построена на фундаменте успеха и технологий игры Commander Keen, которая сама была построена из останков неудачной попытки продать Nintendo порт Mario 3 для PC.

Созданную писателем и программистом Фабьеном Сангларом полную книга можно приобрести в бумажном или цифровом виде.

В 1990 году небольшая компания Softdisk из Шривпорта (штат Луизиана) успешно вела дела на рынке shareware.

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

Они создали новый способ программирования сайд-скроллинга и назвали эту технологию адаптивным обновлением тайлов (adaptive tile refresh). Они думали, что им хватает умений увеличить масштаб и они хотели это доказать. В начале 1990 годов они безостановочно работали по выходным над воссозданием Super Mario 3 на PC, чтобы продемонстрировать свои навыки Nintendo.
Команда «Ideas from the Deep», как они сами себя называли, смогла изготовить клон Mario, но, к сожалению, ей не удалось убедить Nintendo дать им контракт. Она позволяла выполнять аппаратный скроллинг (прокрутку экрана) на PC, благодаря чему компьютер мог соперничать с NES. Как ни была впечатлена японская компания, она хотела, чтобы серия Mario оставалась только на консолях Nintendo.

Высшее руководство посмотрело демо и было сильно впечатлено. «Мы отправили демо в Nintendo of America, а она в свою очередь переслала его в головной офис в Киото. — Джон Ромеро, программист Однако они не хотели, чтобы их интеллектуальная собственность была на каких-то других устройствах, кроме их оборудования, поэтому просто похвалили нас и сказали, что это невозможно».

Mario на PC. Аббревиатура IFD расшифровывается как Ideas from the Deep.

В феврале 1991 года четыре сотрудника Softdisk сделали «прыжок веры» и основали собственную компанию id Software. Этого эпизода им оказалось достаточно, чтобы убедить себя, что у них не только есть талант, соответствующий их амбициям, но и слаженная команда с рабочей этикой, которые потенциально смогут открыть им широкие возможности.

Основатели id Software.

(Подробнее об этом можно прочитать в книге Дэвида Кушнера Masters of Doom).

Не тратя времени, команда выпускала за год не менее трёх игр. Они сразу же воспользовались технологией, разработанной для PC-версии Mario 3, чтобы начать выпускать собственные игры и строить интеллектуальную собственность.

  • Commander Keen Episode 1, 2 и 3: Invasion of the Vorticons (14 декабря 1990 года)
  • Commander Keen Episode 4, 5, and 6: Good Bye Galaxy (15 декабря 1991 года)
  • Отдельная игра Commander Keen: Aliens Ate My Baby Sitter (декабрь 1991 года)

Эти игры, издаваемые FormGen, мгновенно обрели успех и очень хорошо продавались. Команда также продолжала писать игры для издания Softdisk, в большинстве из которых использовалось адаптивное обновление тайлов:

  • Commander Keen in Keen Dreams (1991 год)
  • Dangerous Dave in the Haunted Mansion (1991 год)
  • Rescue Rover (1991 год)
  • Rescue Rover 2 (1991 год)
  • Shadow Knights (1991 год)
  • Hovertank 3D (апрель 1991 года).
  • Catacomb 3D: A New Dimension (ноябрь 1991 года)

Весной 1991 года начало зарождаться новое поколение технологии id Software. В игре Hovertank 3D игрок оказывался внутри танка. Пока в ней ещё не было наложения текстур, а темп игры оставался довольно медленным. Catacomb 3D ознаменовала появление текстур и повысила уровень погружения в игру: игрок теперь управлял волшебником с видом от первого лица.

Её следующая игра будет использовать создаваемую парнями 3D-технологию и выйдет под названием Wolfenstein 3D. В ноябре 1991 года команда покончила со всеми обязательствами перед SoftDisk. Из-за масштаба и амбициозности игры в команду приняли ещё четырёх человек и теперь в ней было восемь сотрудников.

— Джон Кармак, программист. «Джейсон (Jason Blochowiak) был частью id с самого начала, но в процессе разработки „Вульфа“ наши пути разошлись».

Фотография команды из «пасхалки» в Spear of Destiny. Надпись внизу: «мы без штанов».

На самом деле, штаны всё-таки на них.

Организация

В сентябре 1991 года, руководствуясь школьными воспоминаниями Том и Джейсона, команда перебралась из Шривпорта в Мэдисон (штат Висконсин). Ребята обосновали свой офис в двухэтажном кирпичном здании жилого комплекса The Pines на High Ridge Trail, 2622. Все они жили на расстоянии пешей прогулки до офиса, за исключением Кармака, которого не волновали неудобства: он поселился прямо на втором этаже офиса.

Температура упала и с неба валил снег, поэтому команда полностью погрузилась в работу и редко покидала офис. Разработка Wolfenstein 3D началась в январе 1992 года. Wolfenstein 3D был выпущен в мае 1992 года. Разработка длилась четыре месяца.

На протяжении этих четырёх месяцев организация работы в команде была достаточно стандартной для игровых студий той эпохи: четыре парня, сидящие в одной комнате, поддержка быстрого темпа разработки и сильное чувство товарищества (и много шума из-за образа общения Джона Ромеро и Тома Холла).

То, что один из членов команды (Джон Кармак) жил прямо над студией, было вполне обыденным состоянием. На карте ниже показан угол со SNES, на которой было сыграно бесчисленное количество игр в F-Zero, и зона для Dungeons & Dragons, часто упоминаемая в Masters of Doom.

У нас не было системы контроля версий. «Мы начинали с переноса данных на гибких дисках, но в конце концов создали сеть Novell на основе коаксиального Ethernet*. — Джон Кармак, программист. Как ни удивительно, у нас её не было аж до Quake 3, при разработке которого мы начали пользоваться Visual Source Safe».

11 ценой 7000 долларов. * Комментарий Джона Ромеро: «Живя в Мэдисоне, в ноябре 1991 года мы купили систему Novell Netware 3. В неё входил файловый сервер, кабели и сетевые карты».

Все работали на лучших PC, которые можно было купить за деньги: самых мощных 386-DX 33MHz с 4МБ ОЗУ.

Программирование

Разработка выполнялась в среде Borland C++ 3.1 (но на языке C), которая по умолчанию работала в режиме VGA mode 3: текстовый экран размером 80 на 25 символов.

Джон Ромеро программировал многие инструменты (редактор карт TED5, упаковщик ресурсов IGRAB, упаковщик музыки MUSE). Джон Кармак занимался кодом времени выполнения. Джейсон Блоховяк писал важные подсистемы игры (диспетчер ввода, диспетчер страниц, диспетчер звука, диспетчер пользователей).

Решение Borland представляло собой систему «всё в одном». IDE под названием BC.EXE, несмотря на некоторую нестабильность, обеспечивала неуклюжее многооконное редактирование кода с приятной подсветкой синтаксиса. Компилятор и компоновщик тоже были частью системы и имели названия BCC.EXE и TLINK.EXE.

IDE позволяла создавать, собирать, выполнять и отлаживать проект. Однако переходить в режим командной строки не требовалось.

Чтобы компенсировать маленький размер ЭЛТ-экрана, некоторые разработчики использовали два монитора. (Примечание Джона Ромеро: «И Джон Кармак, и я работали с Turbo Debugger на небольших 12-дюймовых монохромных мониторах с янтарным экраном»).

Графические ресурсы игры

Все графические ресурсы создавались Адрианом Кармаком (Кевин Клауд создал несколько текстур, а также работал над дизайном и структурой буклета руководства к Wolfenstein 3D). Вся работа выполнялась в Deluxe Paint (написанном Брентом Иверсоном из Electronic Arts) и сохранялась в файлах ILBM (InterLeaved BitMap) (проприетарный формат Deluxe Paint).

Так как режим VGA основан на использовании палитр (цвета задавались не 24-битными значениями RGB, а индексами, указывающими на 256-цветную таблицу), процесс творчества был сложным. В первую очередь Адриану приходилось принимать ключевое решение — какие цвета попадут в палитру (в некоторых играх, например, в Monkey Island использовалось несколько палитр, менявшихся в зависимости от части игры. id Software выбрала более простое решение и использовала для всей игры одну палитру), а затем рисовать всё только этими цветами.

Палитра Wolfenstein 3D. Всё в игре отрисовывалось при помощи этих 256 цветов.

Горизонтальный синий градиент внизу начинается с 0xF0 и заканчивается на 0xFE. Координаты палитры меняются от 0x00 до 0x0F по горизонтали и от 0x00 до 0xF0 по вертикали. 0xFF (обозначенный розовым) — это особый цвет, считающийся движком прозрачным и всегда пропускаемый при рендеринге.

Так как при отображении буфера кадров на экране режим VGA растягивал его, Адриану приходилось быть аккуратным и рисовать всё в том разрешении, в котором должна была работать игра (320x200). Все ресурсы рисовались мышью вручную.

— Джон Кармак, программист. «Адриан и Кевин работали непосредственно в Deluxe Paint, в то время у нас не было никаких инструментов для сканирования».

Графические ресурсы разделены на две категории:

  • Элементы 2D-меню, поставляемые с игрой в файлах VGAGRAPH, VGAHEAD и VGADICT
  • Элементы 3D-режима (стены и спрайты), поставляемые в архиве VSWAP

Процесс производства ресурсов

После генерации графических ресурсов инструмент IGRAB упаковывал все ILBM в один архив и генерировал файл заголовка C с идентификаторами ресурсов. Движок ссылается на ресурс непосредственно с помощью этих ID.

Конвейер создания ресурсов для 2D-меню.

В коде движка использование ресурсов было жёстко прописано в перечислении. Это перечисление (enum) является смещением в таблице HEAD, из которой берётся смещение в архиве DATA. Благодаря этому слою косвенных ссылок ресурсы можно было заново генерировать и менять их порядок без модификации исходного кода.

Заголовок .h в его комплекте не соответствовал файлам ресурсов из shareware-версии или ранних версий Wolfenstein 3D. Интересный факт: такая система привела к проблемам после публикации исходного кода. Можете посмотреть, к какому графическому хаосу это приводило, в статье «Компилируем, как будто на дворе 1992 год» на сайте fabiensanglard.net [перевод статьи на Хабре]. Опубликованные заголовки были взяты из Spear of Destiny.

Он содержит множество рисунков Тома Холла и показывает кучу набросков, сделанных Томом и переведённых в пиксели командой художников. В официальном руководстве по Wolfenstein 3D, опубликованном в 1992 году, объяснён творческий процесс.

Ниже показаны примеры некоторых набросков дизайна экрана заставки, выполненных Томом. «Когда креативный директор Id Том Холл придумывал идею экрана, он отдавал набросок Адриану Кармаку. — «Официальное руководство по Wolfenstein 3D» Для игры был выбрал третий набросок».

Руководство также содержит несколько фотографий команды тех времён; советую прочитать его для понимания контекста.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть