Один из законов Мерфи гласит: «В каждой нетривиальной программе есть хоть один баг». В компьютерных играх тоже полно багов. И они веселее и зрелищнее любых других.
Kill Screen на игровых автоматах
Когда-то давным-давно компьютерные игры были не такими, как сегодня. Чтобы играть в них, нужно было идти в зал игровых автоматов, там покупать жетоны и тратить один за другим в попытках пройти практически непроходимые уровни. Впрочем, для настоящих мастеров нет ничего невозможного, и если, к примеру, в Pac-Man было 255 уровней, то рано или поздно находился герой, способный пройти их все.
Вот только 256-го уровня быть не может, и вместо него с игровыми автоматами случалось странное. В Pac-Man половина экрана замусоривалась буквами и кусочками спрайтов — это называется Kill Screen, то есть «экран-убийца». Причина его появления прозаична: процедура, отвечающая за отрисовку элементов игры, использует номер уровня для того, чтобы вычислять количество и местоположение бонусов. Выход за пределы однобайтового числа ведет к описанным результатам.
При этом игра после 255-го уровня не прерывается, и чемпионы Pac-Man могут продолжать проходить уровень за уровнем, несмотря на свалку на экране. Очки тоже продолжают засчитываться, но настоящие профессионалы стараются не доходить до «экрана-убийцы» и набирать максимальное количество очков раньше.
Kill Screen бывает не только в Pac-Man. Известно, к примеру, о существовании экрана-убийцы в «Утиной охоте» на NES: там после 99-го уровня утки становятся неуязвимыми и начинают носиться по экрану со страшной скоростью. В Donkey Kong на 22-м уровне Марио начинает умирать через несколько секунд после старта. Увы, этим эффектам далеко до зрелищности разваливающегося Pac-Man.
Чума в World of Warcraft
Город завален трупами, потоки людей пытаются вырваться из чумных зон, слышны крики о помощи. Нет, это не Лондон в 1666 году, а один из серверов World of Warcraft 13 сентября 2005 года. То, что произошло в тот день, стало полной неожиданностью и для игроков, и для разработчиков. Это событие вошло в историю WoW, да и компьютерных игр вообще, и получило величественное название Corrupted Blood Incident — инцидент Порченой Крови. Резонанс был так велик, что об инциденте говорили в теленовостях и писали в газетах.
Началось все с открытия Зул’Гуруба — нового рейдового подземелья. Его финальный босс — змееобразная когтистая зверюга по имени Хаккар, умеющая портить кровь игрокам не только в переносном, но и в буквальном смысле. Игрок, пораженный «порченой кровью», начинает быстро терять здоровье и может заразить других игроков. В условиях изолированного подземелья в этом нет ничего необычного, и либо игроки справляются с проблемой, либо персонажи гибнут и воскресают уже без порченой крови. В теории вынести заразу за пределы Зул’Гуруба было невозможно, но это в теории.
Охотники в WoW водят с собой своих охотничьих зверей и могут по желанию выпускать или отзывать их. Как оказалось, на животных тоже распространяется порченая кровь — это запланированный разработчиками эффект. Но никто не знал, что отозванное и затем выпущенное вне подземелья животное все еще будет переносчиком заразы. Первый же такой случай дал начало эпидемии.
Через определенное время техподдержка разобралась в ситуации и сбросила часть данных сервера, но это помогло ненадолго: игроки, прознав про возможность начать эпидемию, стали делать это умышленно, а форумы позволили распространить новость, и следом экспериментировать стали и на других серверах. Вирусный характер самой информации о «чуме» сослужил распространению виртуальной заразы добрую службу.
Corrupted Blood Incident мешал играть, и недостатка в жалобах не было, но для большинства заставших «чуму» игроков тяготы с лихвой окупились возможностью похвастаться участием в столь эпохальном событии. Разработчики WoW, вдохновившись ажиотажем, с тех пор неоднократно специально устраивали схожие (но не столь брутальные) «инциденты» — просто потехи ради и чтобы всем было что вспомнить.
Программирование Game Boy изнутри Pokémon
Вряд ли кому-то нужно объяснять, что такое «Покемоны». Оригинальная игра Pokémon выходила уже в 12 редакциях, начиная с Pokémon Red and Blue для Game Boy и заканчивая Pokémon X and Y для Nintendo 3DS. Всего на сегодняшний день продано около 245 миллионов копий разных версий «Покемонов», и неудивительно, что эти игры (в особенности самые первые) изучены от начала до конца, включая, конечно, всевозможные глюки.
Самый известный из глюков Pokémon — это покемон по имени Missingno, прячущийся в версии игры для Game Boy Color. Обнаружить его нелегко: нужно активировать другие известные баги в правильном порядке. Сначала «глюк со стариком», потом глюк дупликации предметов, потом перейти в определенную локацию и там встретиться лицом к лицу с Missingno. Это красивое имя на самом деле значит слова Missing Number («Номер отсутствует»), не влезшие в поле. Сам покемон выглядит как образцовый глюк — то есть как свалка из случайных пикселей и кусочков других картинок. Миссингно ведет себя как любой другой покемон, но пользоваться им нужно осторожно — того и гляди потеряешь все данные.
Но даже история Миссингно меркнет в сравнении с тем, что фанатам игры удалось сотворить с Pokémon Yellow. Начинается все с бага, позволяющего превысить лимит инвентаря и выйти за предел максимально разрешенных двадцати предметов. Звучит скучно? Есть один нюанс: игра при этом не выделяет память для новых ячеек, и номера предметов начинают попадать в области, где находятся другие данные. Дальше же открываются безграничные возможности.
Физик и программист Роберт Льюис Мак-Интайр не пожалел своего времени, чтобы реализовать способ внедрять произвольный код в Pokémon Yellow и делать буквально что угодно: не только читерить, но и добавлять в игру новые элементы. В качестве демонстрации он реализовал внутри «Покемонов» плеер MIDI и просмотрщик PNG.
Начинается все довольно прозаично: Мак-Интайр создает глючные предметы, за которые в игровом магазине дают почти бесконечное количество денег. На эти деньги покупается множество других предметов: десятки бутылочек с лимонадом и лечащих зелий, сотни камешков и так далее. Точное количество важно: информация о нем, как и номера предметов, попав в «расширенный» инвентарь, будет интерпретирована Геймбоем как программа.
Если продолжать раздувать инвентарь, игра рано или поздно окажется испорчена. Да и программировать в машинных кодах, используя бутылочки лимонада, бананы и прочие съедобные и несъедобные вещи, мягко говоря, утомительно. Мак-Интайр успешно решил все проблемы, создав сложную систему из оберточных программ. Теперь код можно набирать напрямую кнопками Геймбоя, видеть на экране распечатку и, конечно, сохранять программу в свободную область памяти, а не поверх других функций игры.
Иногда стоит начать ковырять баг и оказывается, что под ним не видно дна.
Легендарные глюки Ultima Online
Создатели Ultima Online делали то, чего до них не делал никто: графическую массово-многопользовательскую игру с обширным миром и впечатляющими возможностями. Первопроходцы часто действуют по наитию, и, возможно, именно поэтому Ultima Online так непохожа на современные MMORPG. Не обошлось и без ошибок — в том числе обыкновенных багов. Те из них, что игрокам удалось заметить и использовать себе на благо, теперь стали легендарными.
О природе глюков UO отлично рассказывает в своем блоге один из разработчиков Раф Костер. Костер объясняет, что часть объектов игрового мира «Ультимы» была записана на установочный компакт-диск и считалась статической. Динамические же объекты подгружаются с сервера каждый раз, как игрок должен их увидеть. Например, дерево или озеро — это статические объекты, а стоящий в доме стул — динамический. В UO стул можно передвинуть или даже сломать.
Но что, если с информацией на диске что-то не так? Например, разработчики обнаружили, что один тайл с водой близ берега отсутствует и на его месте — черный квадратик. Новый тайл был добавлен как динамический объект. Вот только сделали это неаккуратно и забыли указать, что предмет нельзя поднимать. Результат? Когда игроки нашли кусочек моря, который можно взять в инвентарь, они, конечно, немедленно это сделали. И продолжали делать каждый раз, как тайл восстанавливался на своем месте после очередной перезагрузки сервера. Иметь переносную воду оказалось очень полезно: ее, например, можно бросить на землю, ловить в ней рыбу, а потом забрать обратно.
Так в Ultima Online появились редкие предметы — такие, которые нельзя выбить из монстров, купить в магазине или создать при помощи крафтинга. Редкости можно было только найти и тащить по одной, что и делалось с большим успехом. Еще бы — даже безделушку можно было выгодно продать на eBay.
Не менее поучительна история с «настоящей черной краской», распространившейся по миру UO почти как чума по WoW. Источником краски была ванночка для окрашивания со сглючившим индексом цвета: все, что в нее помещалось, начинало выглядеть как абсолютно черный предмет, дыра в мире. Поскольку краску в UO можно переносить из ванночки в ванночку, игроки стали с удовольствием распространять «настоящий черный» и красить в него одежду. Даже когда администраторы спохватились и уничтожили все нелегальные черные ванночки, предметы остались. Надо ли говорить, как высоко они ценились?
Приняв первые меры пресечения, разработчики смилостивились и решили, что, если оставить игрокам их уже существующие абсолютно черные вещи, ничего плохого не случится. Так родилась легенда.
Ермак из Mortal Kombat
История Ермака из Mortal Kombat — это история бага (или, вернее, небольшой ошибки разработчиков), который умудрился зажить своей независимой жизнью. Началось все с одной строчки — ERMACS. Ее можно было найти на экране статистики в одной из самых первых версий Mortal Kombat сразу после строк о количестве появлений и побед скрытого персонажа Рептайла. Строка эта полностью звучит как Error Macroses. Разработчики добавили ее, чтобы смотреть, сколько раз за время игры выполнялись макросы, срабатывающие при возникновении ошибок.
У игроков (особенно, надо думать, юных) имелась иная теория о том, что такое ERMACS. Стоящий после другого скрытого персонажа ERMACS в их коллективном воображении превратился в такого же ниндзя, как Сабзиро, Скорпион и Рептайл, только в красной одежде и со своими спецприемами. В одной из последних версий первой части Mortal Kombat строку ERMACS вообще убрали, чтобы никого не путать, но легенда Ермака жила несмотря ни на что.
В Mortal Kombat II разработчики решили немного пошутить с поклонниками Ермака и добавили пару упоминаний о нем. Так, секретный персонаж Джейд мимоходом бросает фразу «Ермак кто?», а после прохождения игры внизу экрана можно заметить строчку CEAMR ODSE NTO EXITS, что, если переставить буквы, означает Ermac does not exist — то есть «Ермака не существует».
По-настоящему авторы игры сдались к моменту выпуска Ultimate Mortal Kombat 3 — расширенной версии третьей части игры. Там Ермак наконец-то появляется среди персонажей — в том самом красном комбинезоне, который ему когда-то приписывали. Как и у других персонажей, у Ермака есть красивая легенда: он рожден из душ, похищенных Шао Каном, владеет телекинезом, возможностью переходить между мирами, а также серьезным расстройством личности. О себе Ермак говорит исключительно во множественном числе — ссылаясь то ли на то, что у него больше одной души, то ли на множественное число в той злополучной строке, из которой он вышел по-настоящему.
Creepy Watson
Компьютерная игра «Sherlock Holmes: Nemesis», возможно, не так известна, как оригинальные произведения Конан Дойля, да и среди компьютерных игр сколько-нибудь важного места не занимает. Зато она знаменита одним из самых пугающих глюков, что только можно встретить в играх.
Большую часть времени игрок управляет Шерлоком Холмсом и видит все от первого лица. Доктор Ватсон, как и положено, всегда находится где-то поблизости и помогает своему гениальному напарнику расследовать преступления. Однако «где-то поблизости» в интерпретации разработчиков игры оказалось очень странной штукой. Дело в том, что у Ватсона нет анимации ходьбы и, как на него ни посмотришь, он просто стоит посреди очередной комнаты.
Казалось бы — что может быть страшного в спокойно стоящем Ватсоне? Вот только стоит отвести от него взгляд, пройти вперед, а потом снова повернуть голову, как Ватсон оказывается на новом месте. Иногда можно себе представить, что он туда прошел, пока его не было видно, но зачастую Ватсон телепортируется в самые неожиданные места, куда просто не мог проникнуть незамеченным. В итоге если внимательно следить за Ватсоном, то понимаешь, что он подобен кошмару из какого-нибудь ужастика и преследует Холмса как наваждение. Ни звука шагов, ни дружеского приветствия — лишь немигающий взгляд неподвижно стоящего джентльмена с армейской выправкой.
Зверства Red Dead Redemption
или
Фирма Rockstar Games знаменита замечательным игровым жанром собственного изобретения. В нем сочетаются огромные миры, свобода действий, необязательный, но интересный сюжет, а также погони и перестрелки — в огромных количествах. Речь, конечно, об играх серии Grand Theft Auto и ответвлений вроде Bully и Red Dead Redemption.
Открытый «живой» (вернее, симулирующий реалистичные события) мир — штука сложная, и нередки случаи, когда игровые персонажи начинают делать что-то совершенно незапланированное. Хуже всего получилось с Red Dead Redemption — аналогом GTA, только на Диком Западе и с лошадями вместо машин. Почему-то именно RDR кишел странными глюками, которые не столько мешают играть, сколько заставляют игроков смотреть на экран круглыми глазами, показывать пальцем и звать всех окружающих вглянуть на происходящее.
Движок RDR иногда путает людей и животных, смешивая их модели и сценарии поведения в невообразимый коктейль. Как вам женщина-осел, на которой можно ездить? А летающая по небу собака, держащая в лапах дробовик и время от времени выкрикивающая ругательства? А смертоносный карлик-кугуар? Впрочем, глючить могут не только модели, но и физика. Почему эта повозка, запряженная лошадьми, так странно раскачивается? А почему она вдруг улетает в космос? Кто знает, кроме разработчиков!
Мутанты в Sims
Как и нетленка Rockstar, игры серии Sims симулируют реальную жизнь и при этом, конечно же, время от времени шикарно глючат. Выглядит это очень по-разному. Кто-то из симсов может вести свою размеренную жизнь и заниматься повседневными делами, а потом внезапно спутать пол с бассейном и начать плавать по дому.
А что иногда происходит с моделями! Кошки, выглядящие так, будто их случайно вывернуло наизнанку (и они этого не заметили), люди-кентавры, дети с пугающей внешностью... В худшем случае вместо ребенка у невезучей пары симсов может родиться такая неведома зверушка, что сразу даже не поймешь, что это. Вглядевшись, понимаешь, что перед тобой причудливо размазанное в пространстве взрослое тело с детской головой. И это если повезет — вместо модели взрослого человека может оказаться, например, лошадь. Вообразите, как это должно пугать домохозяек и школьниц, составляющих большую часть поклонников Sims!