что такое восьмибитные игры
Как писали игры для приставок: чудеса оптимизации и жёсткий кодинг
Для всех, кто вырос, проходя восьмибитного Марио.
В 1980-х годах, когда приставки только появлялись, вышла NES — Nintendo Entertainment System. В Россию она попала в виде китайского клона «Денди», «Кенги» и прочих, поэтому если у вас была восьмибитная приставка, то это была NES.
У NES было очень мало памяти и очень медленный по нынешним меркам процессор. Эта статья о том, как сделать крутую игру в очень ограниченных условиях.
Та самая приставка, справа пока ещё две кнопки вместо четырёх. Для разбора мы взяли видео из канала Morphcat Games — How we fit an NES game into 40 Kilobytes. Там разработчики повторяют опыт геймдизайнеров прошлого и пишут игру для старого железа. Как обычно, если знаете английский, то лучше посмотрите видео целиком, а если нет — держите наш текстовый вариант.
Почему именно 40 килобайт
В 1980-х объём памяти на цифровых устройствах измеряли в килобайтах, потому что ещё не было таких продвинутых её технологий. В большинстве картриджей для восьмибитных приставок было по 40 килобайт памяти. Для сравнения, это в сто тысяч раз меньше, чем на флешке в 4 гигабайта. Даже эта статья весит больше, чем 40 килобайт, так что по современным меркам этого действительно мало.
Два блока памяти в картриджах, 8 и 32 килобайта, в сумме — 40 килобайт.
Чтобы использовать больше памяти, нужно было идти на всякие ухищрения — ставить расширители памяти или отдельные блоки для работы с несколькими картриджами одновременно. Так как почти ни у кого из геймеров такой роскоши не было, то разработчики использовали только 40 доступных килобайт.
Когда у тебя мало памяти, у тебя мало возможностей: уровни однообразные, враги однообразные, геймплей одинаковый. Но иногда разработчики шли на безумные ухищрения, и в игру получалось запихнуть много «миров», секретов и вариантов геймплея.
Одна из игр, которая взорвала мозг всем в своё время, была та самая «Супер Марио»: в ней было огромное количество разнообразных уровней разной сложности, боссы, секретные уровни и непростой, очень насыщенный геймплей. Были уровни на земле, под землёй, под водой и даже на небе; у героя было несколько режимов — низкий, высокий, в белом комбинезоне. А как вам идея разрушаемого мира? А как вам атаки с воздуха? Короче, «Марио» была безумной, невероятной игрой для своего времени, а всё благодаря оптимизациям.
В видеоролике разработчики поставили себе похожую цель: сделать насыщенную, разнообразную игру с большим количеством уровней, миров и настроений. И они показали, как этого добиться с помощью жёстких оптимизаций.
«Супер Марио» — игра, в которую играл каждый, у кого была приставка.
Логика игры
Чтобы в игру было интереснее играть дольше пяти минут, разработчики поставили такие требования:
Так как у нас ограничения по памяти, всю игру пишут на Ассемблере — это язык, который работает напрямую с процессором. С одной стороны, код Ассемблера исполняется очень быстро; с другой — в нём работа идёт тупо с перекладыванием данных из одной ячейки процессора в другую. Это примерно как готовить суши, работая с индивидуальными рисинками.
Память распределили так:
Персонажи
В игре есть два вида графики: статичный фон и движущиеся предметы — игроки, противники, боссы и выстрелы. Всё, что движется, называется спрайтами. Разработчики делят всю графическую память на две части — одну под спрайты, вторую под фон:
Каждая клеточка — это мини-квадратик 8 на 8 пикселей.
В каждом таком квадратике можно что-то нарисовать, но использовать при этом только три цвета.
Если объединить несколько квадратиков в один, получится метаспрайт. В нашем случае — персонаж.
Приставка может использовать одновременно только 4 вида палитры, поэтому у нас получается 4 цветных главных героя и нераскрашенный злодей.
Новое ограничение: на экране одновременно может быть только 8 спрайтов — на большее не хватает памяти. Поэтому для злодея места не остаётся. Можно пойти на хитрость и показывать их быстро-быстро по очереди, но тогда картинка будет мерцать и выглядеть хуже.
Разработчики радикально уменьшили размеры героев и злодея до одного спрайта. Теперь они выглядят более условно, зато помещаются на экран.
Меньше размер героя — больше свободного места для дизайна злодеев, боссов и спецэффектов. Сейчас в табличке собраны все варианты того, как может выглядеть персонаж в игре — и в прыжках, и на бегу.
Большой босс и оптимизация памяти
Если с персонажем всё стало проще, когда его уменьшили, то с боссом всё немного сложнее. Он большой, занимает много места и у него много анимации. Задача — сделать так, чтобы боссы занимали как можно меньше места в памяти.
Большой босс и все его варианты анимации.
Если мы распределим все спрайты по таблице один в один, то у нас быстро закончится место и один кусочек не поместится. Запомните эту картинку как пример неоптимизированной работы с памятью.
Для начала разработчики разбили босса горизонтально на три части, и каждая анимируется отдельно. Видно, что анимация причёски состоит из трёх картинок, каждая из которых немного отличается от остальных.
Если разбить картинки с причёской на отдельные квадратики, то мы заметим, что у них есть повторяющиеся части. Поэтому достаточно нарисовать одну деталь, а потом использовать её во всех трёх вариантах причёски.
Находим оставшиеся одинаковые части и тоже оставляем только одну из них.
А вот тут видно, что это один и тот же спрайт, только в зеркальном виде. Компьютеру несложно нарисовать его отражённым, поэтому тоже можно смело оставить только один из них. С последними треугольничками в каждой картинке — то же самое: это отзеркаленные первые спрайты.
В итоге вся верхняя часть босса вместе с анимацией поместилась в четырёх спрайтах. Это и есть оптимизация: было 16 спрайтов, стало 4.
То же самое делают для средней части. Сейчас она занимает 3 × 8 = 24 спрайта.
А сейчас — 7.
После полной оптимизации босс занимает всего 21 спрайт. Из этих кусочков собирается итоговый вид босса.
Сравните с первоначальным вариантом до оптимизации 🙂
Карта
Для карт у нас столько же памяти, сколько и на спрайты (то есть мало), поэтому разработчики будут действовать так же:
Главная задача на этом этапе — максимальная экономия видеопамяти. Для этого каждый экран с уровнем игры разбивается не на метаплитки 2 × 2, как в примере выше, с персонажем, а на метаметаплитки или суперплитки — 4 × 4 ячейки. Вот для чего это нужно:
Если разбить просто на квадратики 8 × 8, как в памяти, то вся видимая на экране часть уровня займёт 960 байт. Это почти килобайт, и это очень много.
Разбивают уровень на метаплитки 16 × 16. Теперь на одну карту нужно 240 байт, чтобы пометить каждую такую метаплитку, но это всё равно много. Уменьшаем дальше.
Теперь уровень делится на супербольшие плитки по 16 ячеек в каждой. В итоге для того, чтобы пронумеровать каждую такую суперплитку, нужно всего 60 байт. Уже можно работать.
Вот так собираются метаплитки — из четырёх ячеек в памяти.
Теперь можно собирать такие метаплитки в виртуальные наборы и каждой присвоить какой-то код. Но и это ещё не всё.
Вот теперь получилась суперплитка. Это готовый блок для уровня, и чтобы собрать такое, нужно совсем немного памяти.
Коллекция виртуальных суперплиток. С ними можно сделать любые уровни и фоны.
Рисуем карты (и оптимизируем их)
Даже 60 байт на экран, которые у нас получились, — это всё равно очень много, ведь нужно сделать много разных карт, написать логику поведения персонажей и сделать меню, заставки и титры. Каждый байт на счету.
Первый вариант — уменьшить количество памяти для отрисовки карты: сделать их симметричными, что даст нам 30 байт вместо 60. Мы рисуем одну половинку карты, а потом просто отзеркаливаем её. Сравним с картой, которую мы бы хотели получить:
Вроде всё на месте, а выглядит плохо — сразу видна симметрия и доступ наверх закрыт блоками.
И вот тут разработчики делают очередной хитрый ход, который даст им немного дополнительной памяти для графики. Смотрите:
Если вы не знаете, что такое двоичная система счисления, — почитайте нашу статью об этом, а потом вернитесь сюда.
4 суперплитки дают 4 бита. Посмотрим, что можно с ними сделать.
Сначала делают симметричный уровень…
А затем сдвигают верхнюю полосу вправо по кругу. 1100 — это 12 в десятичной системе счисления, именно столько сдвигов вправо нужно сделать, чтобы получилось как на картинке.
То же самое делают с третьей строкой и получают уже приемлемое начало уровня.
Действуя таким образом, разработчики могут менять уровни до неузнаваемости, не затрачивая при этом вообще лишней памяти. Помним, что наш экран — это ещё не весь уровень, сверху нужно нарисовать ещё много раз по столько же.
Добавляем в игру сложный режим
Когда игрок прошёл все уровни, ему можно дать возможность поиграть на повышенной сложности: он уже знает всю игру и может пройти более сложные ловушки и боссов. Например, сложный режим может отличаться дизайном уровней и поведением противников.
Чтобы и этот режим поместился в оставшуюся память, снова используют трюки с памятью и графикой.
Чтобы игрок понял, что начались трудности, просто меняют палитру. Это почти столько же по памяти, но выглядит сложнее.
Уровень можно поменять так: берут исходную картинку, накладывают сверху новые детали и получают сложную локацию. В среднем на это уходит по 7 байт на каждый экран.
В чем оптимизация, брат
10 главных игр эпохи Dendy
В подборке я собрал лучшее, во что можно было поиграть, а 8-битной приставке Dendy. Многие игры даже сейчас помогают отразить в сознании как правильно пройти определенный уровень или даже воспользоваться читерским кодом. Сколько времени было проведено перед телевизором, а тот волнительный момент обмена картриджами с друзьями. В подборке представлены все игры, которые когда-то были у меня в коллекции и часы проведенные за прохождением были бесценны. Предлагаю вашему вниманию небольшую подборку игр в которые вы возможно играли и любили проходить.
Super Mario Bros
Пожалуй самая широко распространенная и многими полюбившаяся игра, которая распространялась сразу с приставкой, поэтому многие начинали играть именно с нее. Игра простая, но некоторые моменты заставляли встрепенуться. Сюжет игры развивается в фантастическом мире, где два брата Марио и Луиджи спасают принцессу от злого дракона. Несмотря на однообразную графику игра получила огромное количество поклонников.
Battle City
Вторая по популярности игра на легендарной приставке Денди. Графика была однообразна, но тут был интересный момент с созданием своих карт, что было не доступно на многих игрушках того времени. Игровой процесс затягивал на продолжительное время, а возможность играть вдвоем увеличивал счастье молодому игроману. Смысл игры заключался в обороне штаба, который был выполнен в форме орла и уничтожения противников. С каждым уровнем противники становятся более прокачанные (лучше вооружение и броня) поэтому защитить штаб смог не каждый.
Contra
Знаменитый экшен на двух игроков с динамическими сценами и затягивающим с головой игровым процессом. Стреллялка сталкивала с множеством врагов и ловушек, а сложные уровни и мощные боссы заставляли вспотеть прежде чем пройти очередной уровень. Обязательно рекомендую вспомнить игровой сюжет и процесс прохождения, тем более сейчас уже не требуется иметь под рукой картриджи и саму приставку.
Приставки 8 и 16-бит против титанов рынка консолей
Содержание
Содержание
На рынке игровых консолей можно заметить интересную тенденцию: пока титаны рынка (Sony, Microsoft и отчасти Nintendo) ведут упорную борьбу за продажи консолей нового поколения, добавляя полигоны, гигабайты и релизы игр с открытыми мирами, рынок 8- и 16-битных консолей благополучно существует и не думает сдаваться. Страшно сказать, но некоторые представители этого сегмента, например, NES, выпустили свои первые консоли более 30 лет назад.
Почему они до сих пор пользуются спросом? Что это, ностальгия? Усталость от графических наворотов и всех этих полигонов и трехмерностей, за которыми не видно души? Или просто желание сэкономить, купив консоль «с 500 играми», чтобы наиграться досыта и недорого? На самом деле, все вместе. Ведь недаром Nintendo, а затем и Sony выпустили NES Classic Mini, SNES Classic Mini и PlayStation Classic. Приставки разошлись миллионными тиражами.
Давайте подробнее поговорим о причинах популярности 8- и 16-битных консолей в наши дни.
Без сомнения, цена играет важную роль, часто она становится определяющей. Тем более, что такая покупка порой делается по принципу: «ребенок просит, пусть наиграется. И на игры тратить деньги не надо: вон, сразу 500 в комплекте».
Подход не совсем правильный, но порой 8- и 16-битные приставки покупают именно по финансовым соображениям: консоли нового поколения стоят в районе 20-30 тысяч рублей. Самые дорогие олдскульные приставки оценивают в пределах 5-6 тысяч рублей. Наиграется ли ребенок или потом все равно выпросит «нормальную консоль» — большой вопрос. Обычно ситуация все же заканчивается покупкой еще одной, более продвинутой приставки.
Ностальгия
В XXI веке впервые появился новый культурный феномен, который можно назвать «цифровой ностальгией». Именно он поддерживает и будет поддерживать рынок ретроконсолей на плаву.
Если говорить о 8- и 16-битных консолях, то в Россию они пришли с некоторым отставанием от мирового рынка. Позднее это отставание сгладилось: 32-битные консоли попали в наши магазины одновременно с появлением на рынках Японии, США и прочих стран. Но в 90-е годы все играли на «Денди», «Сеге», 3DO, первом Playstation или Sega Saturn. Менее популярна была SNES, что особенно удивительно, так как качество игр для этой консоли было, пожалуй, повыше, чем у Sega MegaDrive и уж тем более, чем у NES. Но в России SNES и особенно игры для нее продавались значительно реже, чем картриджи для конкурентов. Играть было банально не во что.
В те годы наличие приставки и картриджей с популярными играми стало своеобразным мерилом престижа. Картриджами обменивались, выпрашивали их на время, чтобы поиграть. С тем, у кого было много популярных игр, дружили все дети из окрестных домов.
Дети, которые играли в 90-е годы, давно выросли. Теперь у них появилась та самая «цифровая ностальгия» — желание вспомнить славные времена и наконец наиграться «до посинения». Потому что взрослому человеку никто не будет говорить о том, что «долго играть на приставке — вредно, от этого телевизор портится». Теперь уже он сам рассказывает своим детям, что от планшета, смартфона и компьютера портится зрение. Но при этом предложи ему вспомнить былое и пройти три-четыре уровня BattleToads & Double Dragon или перестрелять всех в Contra — и он с удовольствием согласится.
Тем более, что современные 8- и 16-битные консоли поддерживают автоматическое сохранение в играх. А в старые добрые времена на рынке покупали картриджи без батарейки, потому что других просто не было. И чтобы пройти, например, Shining Force 2 приходилось не выключать консоль несколько суток напролет. Не всякая приставка такое выдерживала. И уж тем более не каждый родитель.
Для тех, кому не понаслышке знакома «цифровая ностальгия», производители перевыпустили старые добрые консоли: Sega, Dendy, Nintendo NES, SNES Classic Mini, а также Playstation Classic. Конечно, современные приставки только отдаленно напоминают оригиналы: внутри находится совсем другое «железо», на котором работает программная оболочка (эмулятор старой консоли). Да и подключаются новые консоли к телевизору уже не через антенный вход или AV-разъем, а по-современному — через HDMI.
Считается, что эмулятор, написанный разработчиками для NES Classic Mini, наиболее точно повторяет работу знаменитой консоли, позволяя вспомнить, как все было раньше, и провести, наконец, Марио через все уровни к принцессе благодаря возможности сохраниться в любом месте уровня. В оригинале сохранений не было вообще.
Ностальгия оказалась отличным двигателем рынка: ретроконсоли, переработанные на новый лад, распродаются миллионными тиражами. Консоли разных производителей в стандартном и карманном исполнении часто можно увидеть на полках магазинов электроники.
Осознанный выбор игр с олдскульной графикой
Еще одна важная причина, по которой покупатели идут в магазин за 8- и 16-битными приставками — осознанный выбор именно этих консолей и игр с, казалось бы, несовременной и даже примитивной пиксельной графикой.
Тут, в свою очередь, есть несколько причин. Во-первых, если посмотреть статистику покупок игр в магазинах контента, окажется, что наряду с современными тайтлами, для запуска которых требуются мощные компьютеры, популярны и такие игры, как Terraria или Minecraft — нарочито пиксельные или нарисованные в олдскульном стиле.
На рынок вышло много ролевых и приключенческих игр, графика которых выполнена в стилистике 16-битного поколения. Поэтому стоит купить приставку только для того, чтобы опробовать огромное количество игр, вышедших за все время существования консолей. Библиотека насчитывает несколько тысяч проектов. Сотни из них можно и нужно причислить к хитам, в которые интересно поиграть и сейчас.
Во-вторых, все та же ностальгия тянет пройти игры, до которых в свое время «не дошли руки». Или наоборот, игра была пройдена вдоль и поперек, а теперь хочется повторить те самые виртуальные приключения. Можно, конечно, запустить эмулятор на компьютере, но это совсем другие ощущения. Вот и покупается 8- или 16-битная консоль, чтобы пройти, например, знаменитый Chrono Trigger, про который в свое время столько раз слышал, но так и не смог сыграть. Или, наконец, собрать 100 % бананов в Donkey Kong Country.
В-третьих, старые игры хороши тем, что в них можно просто играть. Не надо разбираться со сложным открытым миром или головоломным управлением и интерфейсом. Просто берешь в руки джойстик, на котором для управления имеется крестовина и максимум шесть кнопок — и вперед, в путешествие по уровням, от одного босса к другому.
Обычно сюжет игры прост и интуитивно понятен даже ребенку, но всегда интересно, что же будет после того, как удастся победить очередного босса. Хотя на 8- и 16-ти битных консолях тоже были зубодробительные проекты вроде Final Mission для NES, в которой далеко не всем покорился даже первый уровень.
Коллекционирование
Еще одна причина, по которой покупают 8- и 16-битные консоли — коллекционирование. Так же, как кто-то собирает марки и открытки, люди собирают видеоигры. Одним просто интересно поиграть в первые проекты. Другие пополняют коллекцию, которую начали собирать еще в детстве. Третьи разыскивают старые картриджи и консоли на барахолках и онлайн-аукционах из спортивного интереса. Надо сказать, что редкие картриджи, особенно в упаковке (то есть так и не проданные в магазинах в свое время), могут стоить достаточно дорого. Просто потому, что в наше время нераспечатанные оригинальные картриджи от 8- и 16-битных консолей стали раритетом.
Так победят ли ретроконсоли современных титанов рынка?
Конечно же, олдскульные консоли, бывшие лидер ами рынка 25-30 лет назад, уже не обгонят титанов игрового сегмента и уж тем более не вытеснят их с рынка. Но они занимают свою нишу, которая достаточно велика, чтобы консоли продолжили выпускать и успешно продавать, хотя новые игры для них давно не выходят.
На сегодняшний, да и, скорее всего, на завтрашний день, консоли 90-х годов прошлого века — нишевый, но интересный продукт для геймеров любого возраста — коллекционеров, детей и просто любителей цифровых развлечений.