Создание Donkey Kong для Atari 2600

Жизнь Странная.

Летом 1982 года я потратил около трех месяцев на создание списка из 4096 номеров, тщательно следя за тем, чтобы каждое отдельное число имело правильное значение и находилось в нужном месте в списке. Когда я закончил, единственным реальным свидетельством моей работы был длинный список цифр.

Когда список был завершен, после почти 1000 часов работы бывшая компания Connecticut Leather Company¹ поместила числа (по порядку) в микросхему памяти компьютера и пластиковый корпус и продала их в магазинах по всей стране. И люди действительно купили это.

Список чисел, который я создал, был известен публике как версия популярной компьютерной игры Donkey Kong для Atari 2600. Чтобы составить список, я написал компьютерную программу на языке ассемблера 6502 примерно за 3 месяца, мало выспавшись. Под огромным давлением, чтобы отправить окончательный код вовремя для праздничных продаж, я закончил игру, потратив 72 часа подряд за своим столом, после чего мне сказали, что я выгляжу как зомби.

Это история создания этого списка.

Для справки: Donkey Kong (аркадная игра) от Nintendo была прорывом в дизайне видеоигр и одной из самых успешных игр с монетоприемником в начале 1980-х годов. Чтобы было понятно, Донки Конга изобрел не я. Игра была разработана легендарным Сигеру Миямото, который впоследствии стал, пожалуй, самым успешным дизайнером видеоигр в истории. Это была первая видеоигра, в которой был изображен Марио, который прославился и разбогател в серии игр Super Mario Bros (хотя в Donkey Kong он упоминался только как Jumpman). Donkey Kong была одной из первых видеоигр, в которой использовалась анимация и повествование как в мультяшном стиле, чтобы вовлечь игрока в действие. Моя роль ограничивалась созданием версии шедевра Миямото для Atari 2600.

Действие Осла Конга происходит на строительной площадке ». Полина, девушка, терпящая бедствие, и подруга Марио была похищена упрямой обезьяной. Как Марио, бесстрашный герой, ваша задача - спасти принцессу от дерзкого приматы. Аркадная игра показана ниже.

На первом этапе игры цель состоит в том, чтобы бежать и взбираться по балкам строящегося здания, чтобы добраться до Полины (обратите внимание, что девица в беде в верхней части экрана кричит «Помогите!»). Игрок управляет Марио с помощью джойстика и кнопки. Джойстик перемещает Марио вверх, вниз, влево и вправо, а кнопка позволяет ему прыгать. Чтобы не дать Марио добраться до Полины, обезьяна запускает непрерывный поток бочек по наклонным балкам, чтобы помешать ему продвигаться вверх по зданию.

Если Марио успешно уклоняется от бочек и достигает вершины здания, он поднимает Полину и поднимается с верхней части экрана на Этап 2. В аркадной игре всего четыре этапа (уровня) с похожими эскападами и игровыми проблемами в разные участки строительной площадки.

В 1982 году Donkey Kong был одним из самых ярких игроков в аркаде, высасывая четвертаки с рекордной скоростью. Даже если вы не играли в видеоигры, вы наверняка слышали о Donkey Kong.

В то же время рынок домашних видеоигр пережил скачок роста. В начале 1970-х годов ваш стандартный гаджет для домашних видеоигр подключался к телевизору и играл в одну или несколько игр типа PONG с мячом и ракеткой.

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

В 1977 году была запущена компьютерная система видео Atari (VCS, или 2600). 2600 за первые пару лет проникла на рынок домашних видеоигр, несмотря на гораздо более высокую цену, чем его предшественники, отчасти благодаря съемным игровым картриджам. Возможность покупать дополнительные игры в виде картриджа значительно продлевала срок службы устройства, позволяя семье попробовать что-то новое, когда им до смерти надоели игры, в которые они играли.

Однако событием, отправившим Atari 2600 в стратосферу, стал выпуск в 1980 году картриджа Space Invaders. Space Invaders, огромного аркадного хита, созданного Томохиро Нисикадо из японской игровой компании Taito была первой значительной лицензией на аркадный мегахит для рынка домашних видеоигр. Когда он появился на Atari, не только картридж продавался как сумасшедший, но и Atari 2600 за ночь выросла в четыре раза по продажам, поскольку толпе энтузиастов требовалась игровая консоль, чтобы играть с картриджем.

Промышленность извлекла ценный урок. Лицензирование популярной аркадной игры и перенос ее на домашнюю консоль потенциально могли стать настоящим золотом.

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

Со временем, в компании с блестящими людьми, но ограниченными ресурсами и привычкой многообещать, я быстро научился учиться на работе, в основном из-за того, что меня снова и снова бросали в огонь. Хотя это было нелегко, это было невероятно полезно и сыграло важную роль в определении будущего пути моей карьеры.

К 1979/1980 году, хотя я еще не получил диплом колледжа, я был полноценным инженером-самоучкой. К тому времени компания, к которой я присоединился в качестве четвертого сотрудника, выросла в размерах и сосредоточила большую часть своих усилий на портативных электронных игрушках (история для другого поста). Мне нравилось работать над электронными игрушками, но меня также восхищали рыночные успехи системы видеоигр Atari. При поддержке руководства я купил машину Atari, вскрыл ее и выяснил, как она работает. Этот процесс называется обратным проектированием. Вскоре после этого я разработал и запрограммировал свою первую игру для Atari 2600 (фактически, мою первую видеоигру), Space Jockey, выпущенную в 1982 году.

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

В мае 1982 года, когда я стал независимым и работающим не по найму, мне предложили контракт на разработку версии Donkey Kong, совместимой с Atari 2600. Coleco (вышеупомянутая компания Connecticut Leather Company), увидев коммерческий успех домашней версии Space Invaders на Atari, перешла к Nintendo и приобрела эксклюзивные права на домашние права на крупнейшую аркадную игру в мире того времени. В то время как сделка с Donkey Kong была сосредоточена в первую очередь на игровой консоли Coleco, которая должна быть запущена в ближайшее время, - системе, конкурирующей с Atari 2600, для Coleco было бы безумием не продавать версию для системы Atari с самой большой аудиторией. игроки на внутреннем рынке.

К счастью для меня, было очень мало независимых инженеров, которые обладали необходимыми ноу-хау для написания игры для Atari. Были сотрудники Atari (которые были очень заняты и недоступны), дизайнеры игр в Activision (дочерняя компания Atari, также полностью занятая и недоступная) и не так много других. Что касается меня, я недавно был безработным, хотел и мог, поэтому я взялся за проект.

Как я объясню ниже, это будет непростое мероприятие. Я был хорошо знаком с аркадной игрой и ее новаторской графикой, анимацией и игровым процессом. Перед нами стояла задача создать коммерчески жизнеспособную версию игры с монетами за 3000 долларов, которая работала бы на картридже Atari за 30 долларов.

Проблем было много, в том числе:

- На это у меня было около 3 месяцев. Я мог бы использовать год.

- У меня было 4 096 байт памяти для хранения всего кода, графики и звуковых эффектов. Кроме того, у меня было 128 байтов оперативной памяти, чтобы отслеживать все (ПРИМЕЧАНИЕ: не килобайты, а байты). Игра будет запрограммирована для работы на 8-битном микропроцессоре с частотой 1 МГц. Эти цифры почти гарантированно поставят знающих программистов на колени.

- В дополнение к вышеупомянутым ограничениям игровая консоль, на которой я программировал, Atari 2600, была сильно (я имею в виду СОВЕРШЕННО) ограничена с технической точки зрения (что является совершенно отдельным обсуждением), особенно по сравнению с аркадным автоматом за 3000 долларов. Система Atari 2600 изначально была разработана для игры в 2 игры - PONG и COMBAT. Следовательно, графические возможности 2600 были ограничены отображением двух (2) спрайтов (анимация, движущиеся персонажи), плюс один (1) шар и две (2) ракеты. Мяч и ракеты были простыми квадратными / прямоугольными объектами-снарядами, в то время как два спрайта имели ширину 8 бит и могли отображать элементарные кадры анимации.

У PONG было левое весло, правое весло и мяч. В БОЙЕ были танк Игрока 1, танк Игрока 2 и две ракеты, по одной для каждого игрока. При разработке Atari 2600 компания Atari исходила из предположения, что все будущие игры будут иметь два движущихся спрайта и до трех объектов-снарядов. Это отличалось от аркадной машины Donkey Kong, которая могла отображать «128 спрайтов переднего плана с разрешением 16x16 пикселей каждый».

В дополнение к ограничению количества объектов на экране, из-за ограничений памяти, Atari 2600 был ограничен отображением уникальной фоновой графики только для 1/2 экрана. Другими словами, правая сторона экрана могла отображать только копию или отражение левой стороны экрана. Поскольку знаковые наклонные пандусы Donkey Kong несимметричны по своей природе (не являются копией или отражением при сравнении слева направо), мне пришлось придумать способ «обойти» оборудование, чтобы получить наклонные пандусы.

Чтобы написать игру, я написал компьютерную программу на языке ассемблера 6502. Написанная программа была обработана компьютерным инструментом под названием ассемблер, который работал на моем Apple II личном компьютер. На выходе ассемблера получился список из 4096 чисел, каждое из которых имеет значение от 0 до 255 (из-за загадки двоичной системы счисления, которую я могу объяснить в какой-то момент в одном из будущих постов).

Помимо написания программы, мне также нужно было создать компьютерную графику, которая будет отображаться на экране телевизора. В то время не было инструментов для создания такой графики, поэтому я раскрасил квадраты на миллиметровой бумаге, чтобы создать фон, каждого из персонажей, таких как Марио, и других предметов, таких как молот, и отдельных персонажей. цифры, отображающие счет. Изображение слева показывает Марио в его стоячем положении, состоящее из 8 пикселей (то есть пиксель = элемент изображения) в каждой строке и 18 строк графики. Изображение справа - это увеличенный вид головы Марио, показывающий, как каждый пиксель залит цветом на графической бумаге шириной 8 ячеек. Поскольку система Atari была ограничена одним цветом на строку (для каждого персонажа), обратите внимание, что Марио состоит из 18 одноцветных линий.

После того, как графика была нарисована на миллиметровой бумаге, мне пришлось преобразовать ее в числа (да, мы вернулись к тому списку из 4096 чисел), при этом каждая строка рисунка Марио занимает одно число для образца точек, а второе номер для цвета. Итак, изображение стоя Марио, как показано выше, заняло около 36 (18 x 2) из ​​моих доступных 4096 байт данных.

Хотя я проделал большую часть своей работы на Apple II, в какой-то момент мне пришлось загрузить 4096 байт в машину Atari, чтобы проверить, делает ли программа, которую я писал, то, для чего я ее спроектировал (что программы редко делают). При написании игровой программы вы напишете код в течение часа или около того, соберете то, что написали, а затем опробуете программу, чтобы убедиться, что она работает. Один из способов сделать это - взять список чисел, называемый двоичным, и поместить его в компьютерный чип картриджа, чтобы подключить его к Atari. . К сожалению, этот метод требует много времени, и вам не стоит делать 20 раз в день.

Следовательно, я разработал специальную электронную доску, которая подключила систему Atari напрямую к компьютеру Apple II. После завершения сборки программы плата позволяла Atari мгновенно запускать программу (как если бы картридж был вставлен в игровую консоль). Моя пользовательская интерфейсная плата Atari показана ниже.

Когда у меня была игра в довольно хорошей форме (с точки зрения игры), у меня было около 1200 байт над выделенным мне 4096 байтами. В этот момент у меня не было выбора, кроме как начать процесс оптимизации кода, или, как мы привыкли называть это, сокращения байтов. Чтобы сократить количество байтов, я должен был просмотреть программу, подпрограмму за процедурой, и выяснить, как выполнить ту же задачу меньшим количеством кода (без нарушения функциональности). Звучит ужасно, но на самом деле это было одно из моих любимых занятий.

Наконец-то у меня была законченная версия игры.

На изображении ниже показан первый экран Stage версии Donkey Kong для Atari 2600. Что касается изображения, мне пришлось создать графику и написать компьютерный код для создания несимметричных наклонных пандусов (фиолетового цвета), 4 катящихся бочки (здесь показан только один), Марио, Донки Конга, Полина, молот, «жизнь» ”(Блок в правом верхнем углу) и шесть (всего) цифр оценки. Все объекты, которые я перечислил выше, учитываются при ограничении машины Atari в «два (2) спрайта плюс один (1) шар и две (2) ракеты». Сложный, замысловато синхронизированный код на языке ассемблера использовался для того, чтобы обмануть аппаратное обеспечение для отображения множества уникальных копий ограниченных доступных объектов (конечно, обсуждение в другой раз).

Хотя я чувствую, что сделал все возможное для почти невыполнимой задачи, порт не был идеальным. Из-за нехватки памяти я смог включить только два из четырех этапов аркадной игры (как упоминалось выше, в оригинальном игровом автомате было четыре отдельных экрана игрового процесса). За эти годы у меня было много горя из-за этого решения, но было технически невозможно добавить что-либо еще в картридж, если только издатель, Coleco, не согласился перейти на большую память картриджа, которая дала бы мне 8192 байта для работать с. Учитывая добавленную стоимость производства, они снизились. В этой реальности я сосредоточился на создании наиболее игровой и графически приятной версии игры, которую можно было бы сделать с учетом многочисленных ограничений.

Игровой картридж Donkey Kong 2600 имел огромный коммерческий успех для Coleco. Несколько лет назад я читал аналитический отчет, в котором говорилось, что, хотя версия Donkey Kong для Atari 2600 была одним из 550 продуктов, выпущенных Coleco в том же году, на нее приходилось 25% их общего дохода. По самым скромным подсчетам, розничная выручка от игры только в 1982 году составляла 100 миллионов долларов, что эквивалентно примерно 269 миллионам долларов в 2020 году, или примерно 65 670 долларов на каждое число в этом списке из 4096 номеров.

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

Надеюсь, вам понравился рассказ.

Сноски:

1. The Connecticut Leather Company? Прежде чем прославиться и разбогатеть благодаря куклам Cabbage Patch Dolls и видеоиграм, Coleco была известна как «Коннектикутская кожевенная компания».

1: Вы спросите, почему строительная площадка? Отличный вопрос. Ответ прост: это сработало для игрового процесса. По этой причине в видеоиграх можно увидеть много странных вещей, со стандартным возражением геймдизайнера «это видеоигра, мне не нужна причина». Вы когда-нибудь спрашивали себя, почему в Angry Birds вы используете рогатку, чтобы бросать птиц по строениям, построенным свиньями? Тот же ответ.

2: Упрямая обезьяна Разработчик игры, Сигеру Миямото, первоначально называл обезьяну упрямой обезьяной. При переводе с японского на английский слово «упрямый» по понятным причинам было переведено как «осел». Отсюда и уникальное название Donkey Kong.