5 ноября 2013 в 09:28

Новый взгляд на старые игры

Задумывались ли вы когда-нибудь над тем, как могли бы выглядеть ваши любимые игры времён 90-х, если бы среди кнопок джойстика была кнопка «Zoom out»? Как заядлого любителя (и ассистирующего спидраннера) игр Sonic the Hedgehog и их современных модификаций-хаков, меня однажды заинтересовала эта тема. Подробности под катом.



Мой интерес к данной теме вырос из этого видео:



Привычная мне игра выглядела в таком виде весьма необычно, и мне стало интересно, каким образом автор этого видео сделал это. Тогда я нашёл на его канале следующий видео-отчёт.



Нет-нет, вы не ошиблись: видео действительно полностью создано вручную, кадр за кадром его автор позиционировал маленькую картинку в нужное место большой. Безусловно, это мазохизм, но мазохизм этот вызывает уважение и восхищение железным терпением автора.

И тогда я задумался: а есть ли смысл во всей этой работе? Ведь в процессе игры сама игрушка всегда «знает» координаты видимого участка карты. А тасерский эмулятор позволяет с лёгкостью получить доступ к любой ячейке памяти и написать скрипт, выполняющий те или иные рутинные действия. Гениально! Достаточно просто делать скриншот каждого кадра игрового процесса, считывать из памяти координаты «камеры», затем, обзаведясь картой уровня, вырезать из неё нужные фрагменты, вставить в них наши скриншоты, и скомпоновать из них готовое видео!

Для работы с изображениями я выбрал lua-gd, так как с библиотекой gd уже достаточно хорошо знаком (работал с ней из PHP и C). К сожалению, моя первая попытка установки lua-gd в среду эмулятора не увенчалась успехом: периодически случались досадные падения.



На помощь пришёл друг-тасер AnS (кстати, наш соотечественник). Он обнаружил, что крах происходит только с последними версиями Gens, в то время как одна из более старых версий работает надёжно. Поэтому в качестве workaround было принято решение просто заменить Gens.

Дело сдвинулось с мёртвой точки — был написан первый код на Lua, найдены карты уровней. К сожалению, не для всех уровней классических игр Sonic существуют нормальные карты, а средства создания карт есть только у экспертов-ромхакеров. Исключение составляет лишь игра Sonic 3 and Knuckles, для которой есть программа Sonic Extractor, позволяющая с лёгкостью создавать карты самостоятельно, а также определять, какие объекты будут на этих картах отображаться, а какие — нет. Также отдельную благодарность заслуживает опытный TAS-ер и ромхакер marzojr, подсказавший, каким образом можно «спрятать» информационный блок, содержащий время, число собранных колец и тому подобную информацию.

В качестве заключения — видео, созданное с использованием указанного способа, а также оригинал этого прохождения.

Оригинал




Atlas encode




Ссылки


Илья @WST
карма
47,0
рейтинг 0,1
Инженер-программист
Похожие публикации
Самое читаемое Разработка

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

  • +9
    Comix Zone бы переделать под такой вид. Эх.
    image
    • +2
      Вот прямо предчувствовал, что комментирование начнётся с реквестов :)
      У меня была такая мысль, так как в Comix Zone я тоже в своё время играл. Так что я думаю, что ваша просьба вполне осуществима, и если TAS-еры Comix Zone подскажут мне нужные RAM-адреса (или алгоритмы получения координат «камеры», если они в явном виде в памяти не представлены), я думаю, я смогу сделать подобное и для Comix Zone. Правда, желательно, чтобы карты уровней были без объектов на них (и, тем более, без подсказок), так как Atlas-видео с такими картами будет смотреться несколько странно. Вот, если интересно, пример не очень удачного видео. В первых трёх актах наблюдается небольшое несоответствие цветов; а в первом акте второй зоны — как раз излишняя информация на карте.

      • +3
        в мен как раз понравился «чуть друго цает», он выделяет текущий экран, что на нем есть.
        • 0
          Возможно, но всё же было бы лучше, если бы цвета в карте соответствовали оригинальным. Потому что сделать такое «выделение» искусственно в случае необходимости не составит никакого труда, а вот избавиться от него, когда оно навязано самой картой, гораздо проблематичнее.
          • 0
            мое имхо — оно выделяет активную область
            и в ней видны «активные» элементы фона, и понятно что на карте, фон — статика, а тут — зона активности.
      • 0
        Если уж совсем заморочится, то можно и анимацию портировать? В конце концов там ведь все идет по циклу. Немного портит все впечатление, что «активная» область так мала.
        На самом деле этот вопрос, конечно не из за придирок, а для праздного интереса.
        • 0
          Можно, но это будет на порядок сложнее, и тут нужно участие ромхакера (того же marzojr), на что у него вряд ли есть силы, время и мотивация. Так что лучше остановиться на достигнутом, тем более, что это не основная цель существования тасерского сообщества и чрезмерное увлечение деталями может нанести вред основному занятию (тасингу) :)
    • 0
      Хоть и с опозданием, но… держите: www.youtube.com/watch?v=37FNq1ISfhs :)
  • +2
    Глядя на это прохождение, понял, что я играл наклсом как краб :(
    • +3
      Это ассистированное прохождение, про них я писал в одном из своих предыдущих постов (я не зря сослался на ту статью в тексте этой, так как ожидал, что могут возникнуть вопросы по поводу неестественно высокого игрового уровня). Чтобы делать качественные ассистированные прохождения, необязательно очень хорошо владеть джойстиком и обладать молниеносной реакцией — определяющими факторами становятся железное терпение и массивный багаж знаний об игре (в том числе об её багах, позволяющих сократить время прохождения и так далее). Качественно сделанное ассистированное прохождение ни один человек в принципе не может превзойти, и дело тут вовсе не в плохом игровом уровне :)
      • 0
        О, очень интересно. Спасибо :)
        • 0
          Пожалуйста. К слову, автор этого прохождения (TheYogWog) — новичок (в чём можно убедиться), и, в принципе, его можно было бы сделать ещё лучше. Но, с другой стороны, он и так потрясающе зрелищен, просто в тасерской среде принято считать, что любой TAS улучшаем, так как только такой критический настрой в итоге приводит к реальным улучшениям :)
      • 0
        Может быть вы в курсе, как называются speedrun, которые не tool-assisted? То есть когда игрок сам крайне быстро проходит игру не используя для этого стороннего ПО, а только свой скилл?

        В детстве таким образом добился прохождения Phantasy Star IV — The end of millenium за 5.5 часов без сохранений (и перерывов), жаль записать не удосужился. :(
        • 0
          RTS (real time speedrun), не?
          • 0
            Да, это то что нужно. Спасибо большое.
  • +1
    Немного не по теме поста: я как-то пытался вытащить данные геометрии из PS1 игрушек, запущенных на эмуляторе, не получилось (очень интересно узнать мнение спецов, возможно ли это вообще), но в других играх на OGL работали всякие фишки типа поворота и передвижения камеры. на скриншоте видно как камера «вида из глаз» становится камерой «от третьего лица», конечно алгоритмы отсечения невидимых плоскостей продолжают работать для изначального положения камеры и посмотреть что творится за спиной невозможно.


    Большая картинка.
  • +3
    Аналогичный пример, как люди бьются над воксельным движком и уровнями в Ectatica II, чтобы можно было организовать свободное перемещение по игре (изначально, там переход между сценами, как в Resident evil). Например, на снимке с поднятой камеры, видно, что в разных областях изначально обсчитано разное освещение. Подробнее можно почитать в жж проекта ecstatica2.livejournal.com
    image
    • 0
      Одна из любимых игр детства.
      Невероятно крутая для своего времени: крайне сложная (смерть была окончательной, никаких сейвов) но при этом жутко увлекательная.
      Странно, но при всём этом большой известности она не приобрела, насколько мне известно.
  • 0
    Ух ты, Applebloom на аватарке! По теме сказать нечего ;-)
    • 0
      Не только на аватарке — в рамке за моей спиной тоже есть. :)
  • +1
    Одна маленькая статья, а столько сразу интересного. Спасибо!
    • +3
      Пожалуйста ;)

      Кстати, буду рад, если читатели поделятся советом, стоит ли мне писать следующий пост на тему конструирования звукового усилителя на транзисторах? А то вот побаиваюсь — тема от IT достаточно далёкая, и ударить в грязь лицом не хочется, но, с другой стороны, пока что особо не о чем больше писать. Конечно, учитывая, сколько у меня свободного времени, можно с уверенностью говорить о том, что мой следующий пост вряд ли будет скоро, но хотелось бы услышать фидбэк заранее — нужна ли такая статья на Хабре. :)
  • +2
    В DIY — запросто. Вон по соседству спектроскопию изучают. habrahabr.ru/post/200786/
    Вообще хабр не только и даже не столько IT, тут скорее… хакеры в старом добром значении имхо.
  • +4
    Напомнило Worms Armageddon на 1080p дисплее. Там как раз без модификаций карты максимум 1920 пикселей по горизонтали



    Кстати, Team17 с WA сейчас участвует в Humble Bundle
    • +2
      Пятиминутка ненависти.
      Humble Bundle (или Steam) похоже решил пойти по пути мерзких магазинов. Раньше, чтобы купить что-то можно было просто оплатить пейпелом и полученный ключ закинуть в Steam. Теперь, чтобы заплатить нужно:

      1) Оплатить
      2) На странице, где были ключи теперь ссылка с токеном на сайт стима
      3) Перейти на сайт стима по ссылке и залогиниться (даже если клиент запущен)
      4) В качестве меры безопасности, сайт стима отправит вам на почту код
      5) Зайти на почту, ввести код на сайте стим
      6) Дать имя браузеру длиной не меньше 6 символов, чтобы SteamGuard без проблем его узнал среди списка устройств
      7) Дать разрешение Huble Bundle на доступ к Redeem and activate CD-KEys on your account
      8) Скачать игру программой-клиентом

      Ну или пойти на worms.org.ua и слить прекрасную сборку WA:BattlePack на 20 мегабайт

      • 0
        Гм… Теперь что хамбловые ключи не расходятся по десяткам стимовых аккаунтов — будут проверять?..
  • 0
    Стало напоминать Super Meat Boy.
  • +1
    Таким способом и играть наверно можно. Подложил картинку под окно генс и двигай в соответствии с координатами.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.