На какие только хитрости не пойдут разработчики, чтобы получить сертификацию своей игры для игровой приставки. На самом деле это долгий и трудный процесс, который занимает несколько недель. Он включает в себя проверку игры на баги с участием тестеров от производителя консоли. Любые сбои в игре могут стать причиной отказа в сертификации, тогда разработчик должен исправить недостатки — и начинать процедуру заново.

Спустя более чем 20 лет после своей афёры основатель студии Traveller's Tales (сейчас называется TT Games) Джон Бёртон (Jon Burton) рассказал, как он эпически прошёл сертификацию игры Mickey Mania для приставки Sega Mega Drive в 1994 году. Если вкратце, то он выдал сбои игры за своеобразные «пасхалки» — и обманул тестеров.

В игре Mickey Mania частенько происходили сбои. В этом случае игра вылетала с сообщением об ошибке и кратким описанием ошибки. Например, “DMA Over Frame Limit”.

Все варианты ошибок были прописаны в коде: например, среди них слишком большое количество спрайтов, которые игра пытается вывести на экран или слишком много спрайтов в списке для вывода, переполнение буфера DMA, отсутствие расположения для элемента, ошибка адресации и так далее.



Такие описания и сообщения полезны для отладки, если разработчик действительно собирается исправлять эти ошибки. Но у Джона Бёртона стояла другая цель — пройти сертификацию. Поэтому он использовал хитрый трюк: непосредственно перед самой сертификацией он заменил экран с информацией об ошибке на другое сообщение. Когда игра вылетала, показывалось сообщение, что Микки Маус нашёл портал времени, который переносит его на секретный бонусный уровень — и, соответственно, сразу после сбоя загружался другой уровень игры. Игра случайным образом выбирала предыдущий или следующий уровень, так что игра продолжалась даже несмотря на многократные сбои.



«Пасхалки» оказались настолько убедительными, что разработчику удалось обмануть настоящих тестеров компании Sega и получить сертификацию.

Бёртон впечатлился успехом игры Mickey Mania и не остановился на этом. Затем он использовал тот же трюк с другой игрой Toy Story в 1995 году. На этот раз в случае вылета из игры запускалась дополнительная мини-игра, позволяющая игроку заработать бонусные очки.

В 1996 году разработчик ещё более усовершенствовал процесс в игре Sonic 3D. Здесь вместо сообщения об ошибке на экране появлялась заставка с выбором уровня.



Такое решение привело к неожиданным последствиям. Например, несколько лет назад фанаты игры обнаружили, что если пинать картридж, пока он находится в консоли, то можно вывести на экран меню с выбором уровня — и они с восторгом начали использовать эту «хитрую пасхалку».

К сожалению, Джон Бёртон вынужден был огорчить фанатов. На самом деле тут нет какого-то особого специального секрета и это вовсе не «пасхалка». Просто если пинать картридж, то нарушается контакт между картриджем и приставкой, в результате чего система обнаружения ошибок выбрасывает сообщение о неизвестной ошибке и выводит на экран то самое окно с выбором уровня.


Кроме того, что в игре появляется новая «пасхалка», такой приём фактически означает, что игру невозможно обрушить! Любой сбой она превращает в полезную фичу.

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



История Джона Бёртона и как минимум трёх его игр, которые прошли сертификацию обманным путём, показывает, что читеры иногда добиваются успеха. За свою 26-летнюю историю британская студия Traveller's Tales (TT Games) разработала несколько десятков игр, а особую известность ей принесла созданная в 2005 году игра Lego Star Wars: The Video Game. В ноябре 2007 года компанию купила Time Warner. Сумма сделки не называется, но можно предположить, что читер Джон Бёртон стал миллионером.

Вполне возможно, что не он один использовал такие трюки, чтобы «превратить баги в фичи». Известно, что такой приём использовался в известной игре The Legend of Zelda: A Link to the Past. Там в случае сбоя игрок переносился в секретную комнату Криса Хулихана, победителя конкурса в журнале Nintendo Power. В честь него в 1991 году назвали тайную комнату. В неё можно было зайти не только в случае сбоя, но и выполнив невероятную комбинацию из применения суперскорости, взрывов и прыжков. Секретная комната была так запрятана, а сбои так редки, что о существовании этого помещения широкой публике стало известно только в 2002 году.


«Меня зовут Крис Хулихан. Это моя сверхсекретная комната. Оставим это между нами, хорошо?»

То есть игра The Legend of Zelda: A Link to the Past тоже была фактически «неубиваемой».

Комментарии (27)


  1. Zmiy666
    04.10.2017 20:04

    Хех все знают, что фича это баг, который разработчикам было проще внести в документацию, чем править) Все так делают и будут делать… ))


    1. amarao
      05.10.2017 13:36
      +6

      Этот трюк не работает, если нет документации.


      1. Norno
        05.10.2017 15:30

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


  1. Xpe6eT
    04.10.2017 20:55
    +5

    /режим_бреда=1/ а ведь это правильный подход! Все довольны, игрок продолжает играть, разработчик сертифицируется… вот бы в винде вместо бсод (само собой вызванный не проблемами с железом, а например… дрова) запускался сапер или косынка, а пока я играю — винда перегружалась) /режим_бреда=0/


    1. General_Failure
      04.10.2017 22:26
      +3

      Раньше, помнится, майкрософту предлагали в сообщения об ошибках вставлять рекламные банеры :)


      1. x67
        05.10.2017 09:16

        Только сегодня! СуперАкция! Обновись до последнего ядра линукс и отключи рекламу совершенно бесплатно!)


  1. interprise
    04.10.2017 21:02
    +1

    после бонус уровней, что дальше происходило? возвращался в начало игры или в место с которого «зашел» в бонусный левел.


  1. artskep
    04.10.2017 22:18
    +10

    Автор статьи, наверное, ни разу не проходил ад формальной сертификации, когда проблемы создаются там, где все понимают, что проблем нет (и да, те ребята, которые сертифицируют тоже это понимают). Назвать багу фичей (а в игре «пасхалкой») — это детский сад.

    Из моей практики (давно дело было, но до сих пор помню):
    1. Из области чуши: мы делаем 3G модуль (платка с 3G, GPS и прочей фигней). Сертификационные тесты у провайдера нарисованы для телефонов, поэтому в программу, работающую с модулем (ну, там простая прога для демонстрации возможностей, перепрошивки и прочее) необходимо иметь UI части, которые соответствуют спеку. Зачем модулю, который будет говорить (в лучшем случае с микроконтроллером) по UART/I2C/USB поддержка всех возможностей меню обычного телефона — пофиг.
    2. Из области «политики»: Система обновления железа «по воздуху». OMADM/FOTA тогда были новомодными словами (если кто в курсе). Сделали по спекам от провайдера, отдали на сертификацию. Вот только тесты на сертификацию (которых нам до окончания разработки не дали, но мы таки добыли не скажу как) содержали пункт (нет, в спеках этого не было), что если устройство выключилось до того, как обновление докачалось, то оно обязано не обновляться. А наша реализация докачивала обновление, так что формально мы не проходили сертификацию.
    Поговорив с нужными технарями выяснилось, что тест был добавлен потому что большинство производителей не могли сделать докачку обновления и, как результат, перегружали устройство и (самое главное) инфраструктуру. Поэтому тупо поправили тесты (а требования не поправили).
    Когда я продемонстрировал, что докачка вполне работает, если использовать последние либы и руки не из жопы, то народ чуть ли не аплодировал, но требования и тесты не поменяли (ибо бюрократия и политика), а багу в сертификации назвали фичей.


  1. dimonoid
    05.10.2017 06:30
    +3

    Я помню, что давным давно, лет 10 назад я играл в Sonic Heroes для pc, и при переходе на следующий второй? уровень меня закинуло в мини игру. Как я потом не старался, воспроизвести не смог. Теперь понял, что это фича.


    1. perfect_genius
      05.10.2017 08:32

      Как выглядела мини-игра?


      1. dimonoid
        06.10.2017 07:16

        Насколько помню, что то вроде полета в голубой трубе.


      1. dimonoid
        06.10.2017 07:40
        +1

        Я погуглил, но полета так и не нашел, только бег в похожей трубе —
        http://sonic.wikia.com/wiki/Special_Stage_(Sonic_Heroes)
        Я получил это когда вышел их игры после старого уровня, и потом загрузил новый после перезагрузки компьютера. Всех подробностей уже не помню.


  1. hdfan2
    05.10.2017 06:55
    +3

    Когда-то читал в Old New Thing про аналогичные читы при сертификации видеодрайверов. Драйвер определяет, что его запустили для WHQL, и отключает разные функции для ускорения, которые могут содержать баги. Скорость падает, зато сертификация проходится. И похожие читы для ускорения бенчмарков (типа если известно, что эта строка используется в бенчмарках, то её отрисовывают один раз из 4, и скорость резко повышается).


    1. RiseOfDeath
      05.10.2017 09:26
      +3

      Что-то подобное, некоторое время назад, проскакивало с автомобилями.


    1. LeoPoldGR
      05.10.2017 09:31
      +5

      Прямо как дизели от Фольксвагена, да?)


    1. zyph
      05.10.2017 16:34
      +1

      Более того, известны некоторые автопроизводители, которые использовали чит определения сертификации на нормы токсичности и занижали показатели. Только там за «этофичу» не просто помычали на форумах, а раздали государственные премии некоторым особо наглым читерам.


      1. lonelymyp
        05.10.2017 18:03

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

        А Фольксваген просто слишком явно обходила и без того читерские нормы.


        1. artyums
          05.10.2017 21:21

          Так по идее турбомотор и будет более экологичным, чем атмосферник, ибо во-первых максимально выжигает имеющееся топливо, а во-вторых имеет большую удельную мощность на единицу объема.


          1. lonelymyp
            06.10.2017 10:05

            Машина на бензине в основном едет на стехиометрической смеси (иногда, при разгоне, бензина льётся больше чем воздуха и он не догорает).
            Качество сгорания у бензиновых моторов практически одинаковое, поэтому количество выхлопа пропорционально количеству бензина.

            Читерство в том что в тесте на выхлоп, «приближенном к реальным условиям» мотор работает без нагрузки, весь тест евро проходится с ни разу не включившейся турбиной.
            Тест так составлен что любой серийный автомобиль его может пройти.
            Получается что турбомотор который в реальных условиях жрёт в среднем 14 литров на сотню, по тестам оказывается такой же экологичный как малолитражка с литровым мотором жрущая 7 литров.

            Невозможно сделать «экологичный» мотор?
            Окей, не проблема, придумаем такие тесты чтобы любой мотор их прошёл.

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


  1. untilx
    05.10.2017 09:56
    +3

    Буквально несколько месяцев назад в Eve Online обнаружился баг, который позволял мгновенно менять клонов на цитаделях без суточного таймера, как на обычных станциях. И CCP не то из-за того, что цитадели тогда ещё не очень хорошо прижились, не то просто потому, что не знали как это исправить, объявили баг фичей и написали об этом девблог.


    1. unlor
      05.10.2017 19:35
      +1

      Несколько патчей назад в WoT был обнаружен баг. После разбирательств баг был назван новой версий игры и отправлен в продакшн.


  1. rjhdby
    05.10.2017 10:53
    +8

    Приятель рассказывал, как они в стародавние времена писали игры под БК и был у них баг с наложением спрайтов друг на друга, что выглядело как мерцающий спрайт, который, емнип из-за критического дефицита памяти, исправить не получалось. В итоге в описание игры добавили фразу «Мерцающие скелеты в два раза крепче обычных и наносят двойной урон».


  1. TerminusMKB
    05.10.2017 11:30

    Надо отдать должное — изобретательно.

    — Но пользователям не понравится, что их будет перекидывать на другие уровни в случайные моменты!
    — С пользователями я потом разберусь, сертифицируйте уже!


  1. rrrrex
    05.10.2017 11:33

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


    1. artyums
      05.10.2017 21:25
      +1

      А вот интересно, почему такие случаи не обрабатывались в Dendy? Там чуть сдвинутый картридж (особенно, если слот в приставке и/или картридж уже были подраздолбанные) приводил к зависанию и… все.


  1. RobotexModel2
    05.10.2017 13:34

    А, так вот к чему отсылка с забагованными уровнями в Super Meat Boy


  1. Paradoxalniy
    05.10.2017 17:50

    Чего не сделаешь ради успеха своего детища, но в наше время и не такие трюки проходят...)