Вряд ли кому-то нужно объяснять, что такое «Покемоны». Оригинальная игра 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 можно переносить из ванночки в ванночку, игроки стали с удовольствием распространять «настоящий черный» и красить в него одежду. Даже когда администраторы спохватились и уничтожили все нелегальные черные ванночки, предметы остались. Надо ли говорить, как высоко они ценились?
Приняв первые меры пресечения, разработчики смилостивились и решили, что, если оставить игрокам их уже существующие абсолютно черные вещи, ничего плохого не случится. Так родилась легенда.