Повелители DOOM - Дэвид Кушнер
Шрифт:
Интервал:
Кроме того, стало очевидным, что Адриан настолько не любил высовываться, что становился практически незаметным. Он по-прежнему не понимал, как ему вести себя с этими геймерами. Кармак был похож на робота из-за своей странной манеры речи: отрывистых предложений и неизменного «М-м-м» в конце фразы. Он мог сидеть и программировать весь день, не проронив ни слова, но его работа была потрясающей. Ромеро и вовсе выглядел чудаком, который отпускал дикие шутки про всякую расчлененку и рассказывал истории про извращенные комиксы, которые он до сих пор рисовал. Адриан считал его довольно забавным.
КАРМАК ПИСАЛ ГЕНИАЛЬНЫЙ КОД, А РОМЕРО ПРОЕКТИРОВАЛ ЗАХВАТЫВАЮЩИЙ ГЕЙМПЛЕЙ.
А вот Тома Холла – совсем нет. Адриан впервые встретил его, когда тот ворвался в комнату в голубом трико, белой майке и кепке, размахивая при этом пластиковым мечом. Потом он замер, поднял бровь и издал странный инопланетный вопль, на который Ромеро ответил каким-то зловещим смехом. Том всего лишь зашел похвастаться своим костюмом на Хэллоуин. И, как обычно, задержался, помогая друзьям с разработкой дизайна и программных инструментов. Адриан был рад, что он вообще ушел.
Впрочем, однажды Том засиделся допоздна. Ромеро, Адриан и другие сотрудники Softdisk давно разошлись по домам. В офисе остались лишь Том и Кармак. Работа над Slordax близилась к завершению, и Кармак затеял кое-что новое. Сова по натуре, он сидел в офисе до утра. Ему нравилась жизнь затворника: она давала возможность погрузиться в работу еще глубже. Кармак делал то, чем всегда хотел заниматься: писал код для игр. И он был счастлив в кои-то веки не переживать, что ждет его в будущем. Если бы он мог и дальше создавать здесь игры, получая достаточно денег на еду и жилье, ему этого хватило бы. Как он сказал друзьям в один из первых рабочих дней, его можно запереть в шкафу с компьютером, пиццей и запасом диетической колы, и ему будет вполне комфортно.
* * *
Том расположился в кресле, а Кармак стал демонстрировать придуманный им способ анимации графических тайлов. Экран состоит из тысяч пикселей, группа пикселей образует тайл. При создании игры художник сначала создает из пикселей тайлы, а потом располагает их вместе, чтобы создать виртуальное окружение. Это похоже на укладку кафеля на кухне. С новым трюком Кармака тайл мог обладать небольшой графической анимацией.
– Я смогу сделать так, – объяснял он, – что когда персонаж запрыгивает на тайл, с самим тайлом что-то происходило.
– Разве это так просто? – спросил Том.
– Конечно, м-м-м… – ответил Кармак.
Ему только нужно было знать, что программа должна будет делать, когда игрок достигнет определенного тайла. Том понял: это потрясающе. Игры вроде Super Mario Brothers 3 были полны анимированных тайлов. Например, игрок мог запрыгнуть на мерцающий блок, и тогда из него начинал сыпаться дождь из монеток. Том был взбудоражен. Но это было еще не все.
Кармак нажал пару клавиш на клавиатуре и показал Тому свою новую фишку: сайд-скроллинг. Эффект, моду на который ввели Defender и Mario, создавал впечатление, будто игровой мир продолжался, когда персонаж двигался в направлении края экрана. Потратив несколько ночей на эксперименты, Кармак наконец-то разобрался, как перенести этот эффект на PC. Как и всегда, он сумел найти оригинальный подход к решению проблемы. Слишком многие, думал он, пытались с самого начала выстраивать свои программы вокруг хитрых уловок. В этом не было смысла. Первым делом он подошел к проблеме максимально прямолинейно: написал программу, которая должна была плавно прорисовывать графику на всем экране целиком. Программа не работала, и всем было очевидно почему: PC были слишком медленными. Тогда Кармак перешел ко второму шагу: оптимизации. Был ли способ эффективнее использовать память компьютера, чтобы изображения прорисовывались быстрее? После ряда попыток он понял наверняка: это было невозможно.
Наконец, он спросил себя: «Так, а чего я вообще тут пытаюсь добиться? Мне нужно, чтобы экран как будто плавно сдвигался, пока пользователь по нему бежит». Он вспомнил свою прошлую игру, The Catacomb. В ней экран прокручивался как единое целое, когда персонаж подходил к границе подземелья. Это было популярным трюком: скроллинг, основанный на тайлах, смещал экран крупными кусками, по одному набору тайлов за раз. Он хотел добиться более плавной прокрутки, когда персонаж сдвигался на самую капельку. Проблема была в том, что компьютеру требовалось чересчур много времени и мощности, чтобы перерисовывать весь экран при каждом маленьком движении. И в этот момент его осенило.
Кармак подумал: «А что, если вместо того, чтобы перерисовывать весь экран, я бы мог найти способ перерисовывать только те объекты, которые меняются? Тогда скроллинг будет отрисовываться гораздо быстрее». Он представил себе, как персонаж бежит по экрану на фоне большого синего неба и в какой-то момент над его головой проплывает белое кучерявое облачко. Если компьютер будет подходить к этому в обычном ключе, ему придется перерисовывать каждый пиксель синего неба на всем экране, тогда как единственное, что действительно меняется, – это белое облачко. Компьютер не может сам упростить себе задачу просто потому, что это кажется логичным. Поэтому Кармак придумал еще один гениальный ход. Он нашел способ заставить компьютер работать более эффективно. Он написал код, который заставлял компьютер думать, что, например, седьмой тайл слева на самом деле был первым тайлом на экране. Таким образом, компьютер начинал отрисовку строго в том месте, где это было Кармаку необходимо. Вместо перерисовки одних и тех же синих пикселей по пути к облаку, он начинал сразу с самого облака. Чтобы эффект ощущался более плавным, Кармак добавил еще одну деталь. Он заставил компьютер отрисовать дополнительный тайл синего неба за правой границей экрана и хранить его в памяти, когда игрок продвигался в эту сторону. Благодаря этому сохраненные в памяти тайлы выводились на экран мгновенно, без необходимости отрисовывать их в процессе. Кармак назвал этот процесс «адаптивным обновлением тайлов».
Том немедленно сообразил, что это означало: теперь они могли сделать Super Mario Brothers 3 на PC! Никто никогда и нигде не мог добиться подобного на PC. А они могли! Прямо здесь и сейчас они могли взять свою любимую игру, взломать ее и заставить работать на компьютере. По сути, это была революционная диверсия, подумал Том. Особенно учитывая, как тщательно Nintendo оберегала свою платформу. Раньше не было способа, скажем, скопировать игру Nintendo на PC так же, как переписать альбом на кассету. А теперь они могли воссоздать ее тайл за тайлом, кусочек за кусочком. Это был величайший взлом.
– А давай так и сделаем! – воскликнул Том. – Давай воссоздадим первый уровень из Super Mario, сегодня же!
Он запустил Super Mario на телевизоре в кабинете Gamer’s Edge и начал играть. Затем он открыл редактор тайлов, которым они пользовались. Будто перерисовывая знаменитую картину, Том бережно воссоздал каждый маленький тайл из первого уровня Super Mario на PC, ставя игру на паузу, чтобы все тщательно рассмотреть. Он скопировал каждую деталь – и золотые монетки, и кучерявые облака. Единственное, что подверглось изменению, – персонаж. Вместо перерисовки Марио Том использовал графические элементы, оставшиеся от работы над Dangerous Dave. Тем временем Кармак оптимизировал код своего сайд-скроллинга, реализуя те элементы игры, о которых ему сообщал Том. Спустя несколько десятков банок диетической колы они закончили первый уровень. На часах было 5:30 утра. Кармак и Том сохранили уровень на дискету, положили ее на стол Ромеро и отправились по домам, чтобы отоспаться.
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!