в видеоиграх цифры в фильмах

Латинские префиксы к не очень большим числам

При работе с большими числами, выражающимися в миллионах (millions), миллиардах (billions), триллионах (trillions) и так далее, мы знаем, что названия меняются через каждые три разряда. Имея число в экспоненциальной записи, мы знаем, что оно выражается в миллионах, если его порядок от 6 до 8, в миллиардах — от 9 до 11, и в триллионах, если показатель от 12 до 14, и т.д. В общем виде для числа с экспоненциальной записью:

M x 10N

Нам нужно выразить N следующим образом:

N = 3(U+1) + V, где V < 3

Тогда конечной строкой числа будет:

где Name(U) можно получить из этой таблицы латинских префиксов:

Например, если мы обрабатываем число 123 000 000 000 000 000, можно выразить его в экспоненциальной записи так:

1.23 x 1017, откуда M = 1.23 и N = 17

Переписывая N, мы получаем:

17 = 3*(4+1) + 2, откуда U = 4 и V = 2

Это значит, что наше число выглядит как:

▍ Текстовые видеорежимы

Исторически визуализация результатов работы компьютера начиналась далеко не с привычной нам сейчас графики. Поначалу это были просто мигающие лампочки, затем телетайп — печатное устройство, выдающее текстовую распечатку на бумаге. Со временем телетайп преобразовался в компьютерный видеотерминал, делающий всё то же самое, но на экране, и главной его особенностью, унаследованной от электромеханического предшественника, была работа исключительно в текстовом режиме, причём строго последовательная, без возможности поменять ранее отображённую на экране информацию (переместить курсор), заложенная глубоко в его устройстве. Именно в таком виде работа с экраном была реализована в одном из первых в истории персональных компьютеров, Apple I (1976). Легко догадаться, что отсутствие возможности вывести информацию в заданное место на экране делало практически невозможным создание динамических видеоигр.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Игра Lunar Lander на Apple I, 1976 год. Этот текст печатался на экране примерно 30 секунд

Текстовый видеорежим позволяет оперировать только целыми символами на экране. За счёт этого он выгодно отличается экономным расходом оперативной памяти и времени процессора — очень ценных ресурсов в микрокомпьютерах конца 1970-х годов, когда оперативная память стоила очень дорого. Чтобы отобразить страницу текста на экране, нужно всего один-два килобайта оперативной памяти. Слабый процессор без особых проблем справится с обработкой такого количества данных для быстрого обновления экрана. Платой за эти удобства становится некоторое усложнение устройства видеоадаптера, или видеокарты — оно должно уметь формировать картинку из символов в ПЗУ и текста в ОЗУ на лету, во время прохода луча по растру.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Commodore PET показывает знаменитый лабиринт из слэша и бэкслэша. Фото CC-BY Dave Ruske

Ранние реализации текстовых видеорежимов в микрокомпьютерах, например в Commodore PET (1977), позволяли отображать одну или несколько страниц текста размером 40×25 или 80×25 монохромных символов, расположенных по регулярной сетке — в так называемых «знакоместах». Изображения символов хранились в небольшом ПЗУ, закладывались при изготовлении компьютера, и их нельзя было изменять программно. Текстовая страница стала доступна процессору целиком, и теперь он мог обновить текст в любом участке экрана, а значит, стали возможными какие-никакие игры. Для хоть какой-то минимальной визуальной манипуляции изображением в ПЗУ шрифта на том же PET хранилось большое количество псевдографических символов, а каждый символ был представлен в двух вариантах — нормальном и инверсном изображении. Таким образом один бит в 8-битном коде символа работал на атрибут инверсии, и это можно считать началом концепции «атрибутов»: набора бит, устанавливающих опции отображения для отдельной фиксированной области экрана. Как правило, это был выбор цвета, и атрибуты назывались «цветовыми», но иногда присутствовали и другие опции.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Игра Karateka в версии для IBM PC с видеоадаптером CGA, 1986 год

Первые видеоадаптеры строились на логических микросхемах, но так как задача отображения текста стала типовой, появились специализированные БИС для её решения, такие как Motorola 6845 и Intel 8275. Они добавили более широкую поддержку атрибутов: теперь можно было задавать символам на экране мигание, подчёркивание, повышенную яркость и даже смену цвета. На контроллере 6845 был построен видеоадаптер CGA для платформы IBM PC (1981), в котором реализация атрибутов символов обрела свою современную, наиболее практичную форму: каждому символу на экране отводится два байта, один на 8-битный номер (код) символа в шрифте, другой на цвет символа и его фона, по четыре бита, 16 цветов. При этом можно было выбрать режим, в котором количество цветов фона ограничивалось до восьми, а оставшийся бит работал как атрибут мигания символа — забавный рудимент, вероятно сохранившийся со времён, когда видеотерминал никак не мог вернуться к ранее отображённому тексту, чтобы реализовать мигание программным способом.

Измеряй и властвуй!


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

В центре внимания книги — “free-to-play”-проекты. Во-первых, потому что такими проектами занимается автор книги. А во-вторых, “именно условно-бесплатные игры требуют особого подхода, именно они подразумевают аналитику, именно в применении к ним аналитика может раскрыться во всей красе”, — ведь жизненный цикл и экономика таких игр требуют нон-стоп-аналитики.

Первые главы книги максимально популярным языком объясняют, в чем заключается работа продуктового аналитика и его “стандартный рабочий день”. Автор сравнивает их с работой доктора, который ежедневно замеряет температуру и берет анализы, чтобы в итоге выписать наиболее подходящее лекарственное средство и вылечить пациента. При этом найти на рынке кандидата, идеального для роли аналитика, сложно даже по нынешним временам. По мнению автора, лучший способ — это “выращивать” аналитиков внутри компании, руководствуясь, прежде всего, общей адекватностью кандидатов, любовью к играм и техническим бэкграундом.

Потребность в аналитике возникает сразу, как только у будущей игры появляется прототип: то, что будет делать будущий игрок, даже на ранних этапах, должно передаваться в аналитическую систему. Но не совсем “всё”, а те ключевые события, которые считаются значимыми для игры, и “события-окружения” (то, что игрок делает непосредственно до или после). К примеру, если вы отслеживаете событие “внутренней покупки”, то целесообразно включить в список то, что его окружает: вход в магазин, выбор товара, первое применение приобретенного товара, отзыв о покупке в социальных сетях и т.п.

Важнейший этап развития проекта — soft launch (выпуск игры для ограниченной аудитории для тестирования и “проверки на прочность”). Наиболее популярные метрики на этом этапе:

Карта популярных метрик

Все метрики, при этом, в идеале должны быть основаны на определенном идейном фундаменте. И это тоже метрика, которая называется North-Star Metric (метрика Полярной звезды, NSM) и напрямую связана с уровнем лояльности пользователей. “ Полярная звезда” объединяет доходность проекта, ценность для пользователей и измеримость. Определяя свою NSM, разработчики тем самым отвечают на вопрос “для чего всё это”, что в их бизнесе является ключевым.

Автор не только подробно разбирает виды метрик удержания, но и дает много советов и рекомендаций по увеличению лояльности пользователей. В частности, очень важно, чтобы уже во время первой сессии игрок дошел до совершения целевого события — т.н. “ага!-момента”, которым, к примеру, будет прохождение уровня или победа над первым боссом. Это означает, что пользователь разобрался с приложением (говорят, что произошла “активация” игрока) и вернется в него на следующий день.

Одна из важных задач аналитика — выявить закономерности “оттока” (churn rate) игроков. Причинами оттока могут быть различные факторы — качество самого продукта, высокая стоимость, привлечение нецелевой аудитории, переполненный рынок, проблемы с уровнем сложности (слишком хардкорный или, наоборот, без челленджа) и т.д. Соответственно, книга предлагает несколько путей уменьшения churn rate, в том числе:

Количество активных пользователей – один из важнейших показателей продукта, который косвенно указывает на его успешность, сочетая в себе и качество привлечения новых пользователей, и метрики удержания, непосредственно влияя на доход. Поэтому при анализе активных пользователей стоит обращать внимание еще и на скорость роста аудитории, ведь эта метрика является одним из самых позитивных признаков активного развития продукта.

▍ Famicom, NES и Денди


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Игровая приставка Family Computer. Фото CC-BY MiNe

Считается, что инженеры Nintendo оглядывались именно на архитектуру TMS9918 (и на общую архитектуру построенной на нём игровой приставки ColecoVision) при создании графического контроллера для собственной приставки Famicom (1983), известной на Западе как Nintendo Entertainment System (NES), и в наших краях под названием «Денди». В отличие от западных коллег, они не стали размениваться на довольно неуклюжий набор неудобоваримых, компроммисных видеорежимов с различными нетривиальными ограничениями в каждом, и сделали всего один режим, в котором окончательно сформировали концепцию тайлово-спрайтовой графики. Эта архитектура оказалась достаточно удачной, чтобы на протяжении десяти лет на Famicom выходили всё более визуально впечатляющие игры, а аналогичная архитектура была реализована во всех игровых приставках конкурентов, как текущего, так и следующего поколения.

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


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Максимально классический скриншот игры для Famicom. Здесь герой представлен слоем спрайтов, а фон соответственно слоем фона

Слой спрайтов похож на спрайты контроллера TMS9918, но сами они немного мельче — 8 на 8 или 8 на 16 точек, зато многоцветные, по четыре цвета на точку, ещё и с выбором одной из четырёх программируемых палитр. На экране их может быть до 64 штук, и хотя это самый ценный ресурс на приставке, которого всегда не хватает, даже с таким количеством мелких спрайтов разработчики игр добивались очень впечатляющих результатов.

Как и у всех платформ с поддержкой аппаратных спрайтов, у Famicom есть ограничение на количество одновременно отображаемых спрайтов в одной строке экрана — до 8 штук. Если превысить это количество, лишние спрайты просто не отображаются. Чтобы обойти эту проблему, в играх повсеместно реализовано перемешивание порядка спрайтов, за счёт чего при превышении лимита они не исчезают, а начинают перемигиваться. В играх это случается довольно часто, и этот характерный визуальный артефакт стал одной из узнаваемых визуальных особенностей платформы.

Перемигивание спрайтов в игре Super C, 1990 год

Слой фона по сути представляет собой текстовый экран с видимой областью 32 на 30 символов, с символами размером 8 на 8 пикселей, из набора в 256 символов. От обычного текстового режима его отличает наличие плавной прокрутки, размер буфера текста — он больше чем экран, и может иметь размер 64 на 30 либо 32 на 60 символов. Как и спрайты, символы четырёхцветные. Присутствуют и атрибуты для дополнительной раскраски символов фона путём выбора одной из четырёх палитр, отдельных от палитр спрайтов. Всего Famicom может отображать до 25 цветов на экране: у всех символов один общий цвет фона, у всех спрайтов один цвет всегда прозрачный, четыре палитры с тремя разными цветами для символов, и четыре палитры с тремя разными цветами для спрайтов.

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

В отличие от многих других платформ, размер атрибутов не равен размеру символа: он применяется к группе из четырёх символов, то есть блоку 16 на 16 пикселей. Эта небольшая деталь очень существенно повлияла на визуальную эстетику большинства игр платформы, особенно ранних — это хорошо заметно в Super Mario Bros, Bomberman, Lode Runner, Battle City и многих других. Из-за небольшого количества графических элементов, которые можно одновременно отображать на экране, разработчикам было проще не пытаться замаскировать переходы из одного набора цветов в другой, а напротив, сделать эти переходы явными, и строить уровни из чётко очерченных блоков размером 16 на 16 или 32 на 32 пикселя. Со временем художники научились эффективнее использовать доступные ресурсы и маскировать эти переходы, но в целом такой квадратно-гнездовой способ построения игровых карт стал одной из наиболее визуально заметных особенностей платформы.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Явно заметная сетка 16 на 16 пикселей в Metroid 1986 года


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Сетка 32 на 32 пикселя в Mega Man 1987 года

Видеоконтроллер имеет открытую системную шину, выведенную на разъём картриджа, что дало системе большую долю гибкости, и, вероятно, способствовало поддержанию её актуальности на протяжении десяти лет. На плате картриджа может использоваться ПЗУ символов шрифта, либо ОЗУ с подгрузкой символов из ПЗУ кода, либо схема управления ПЗУ большого размера, что позволяет мгновенно подменять весь набор символов или его часть, и таким образом увеличивать количество одновременно отображаемых на экране символов либо анимировать слой фона. Наиболее продвинутые аппаратные расширения способны даже увеличить количество символов в шрифте до 16384, и уменьшить размер атрибута до 8×8. К сожалению, использование этих решений в реальных играх было очень ограничено, так как появились они под конец жизненного цикла приставки, и были относительно дорогостоящими.

Все эти оптимизации привели к тому, что с одной стороны Famicom очень плохо справляется с произвольными визуальными сюжетами, особенно с 3D графикой, которая вполне неплохо даётся ZX Spectrum и даже C64. Даже для отображения элементарных статичных детализированных картинок, таких как загрузочные экраны в играх для упомянутых компьютеров, на Famicom приходится прибегать к особым трюкам. С другой стороны, как показала история, такая архитектура видеосистемы прекрасно справляется с динамичными двухмерными играми — платформерами в духе Super Mario Bros, боевиками типа Contra, и им подобными. Немалое достижение, учитывая, что первоначальная задача, поставленная перед инженерами примерно в 1982 году, требовала лишь обеспечить возможность запуска порты аркадных игр Galaxian и Donkey Kong с близким к их оригинальным версиям качеством. Можно сказать, что в случае с Famicom речь идёт не просто о технологии, определяющей визуальную эстетику, но о технологии, определившей преобладающие жанры игр на два поколения игровых систем вперёд.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Всё, что требовалось от железа Famicom в 1983 году — отображать эту картинку


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

К 1989 году разработчики научились отображать на Famicom и такие картинки, к тому же с хорошей анимацией

▍ Spectrum и клэшинг

Так как ZX Spectrum не имеет аппаратной поддержки спрайтов, игры вынуждены программно отрисовывать все подвижные объекты в видеобуфере, накладывая несколько разноцветных изображений друг на друга. Как следствие, приходится выбирать, какие именно цвета (фона или одного из объектов) должны отображаться в каждом из блоков. Эта проблема в рамках платформы имеет устоявшееся название «клэшинг» («attribute clash», конфликт атрибутов). Аналогичная проблема присутствует и на многих других 8-битных платформах, иногда она известна под названиями «color clash» (конфликт цвета) или «color spill» (протечка цвета).


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Всенародно любимый Диззи страдает от жестокого клэшинга

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

Самый простой способ избавления от конфликта атрибутов заключается в полном отказе от использования цвета там, где такой конфликт возможен. Поэтому многие игры на ZX Spectrum монохромные, по крайней мере в основной игровой области, а раскрашен только интерфейс вокруг этого окна. Или же цвет используется на фоне очень эпизодически, таким образом, чтобы персонажи никогда не пересекались с игровыми элементами.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Robocop на ZX Spectrum, 1988 год. Никакого цвета в игровом окне — никакого клэшинга

Другой способ — использование в основном однотонного фона в местах, где перемещаются игровые объекты. Как правило, это был чёрный цвет, и в результате на платформе доминируют игры с космическим сеттингом, либо же где действие происходит ночью, а не днём — вспомните, сколько факелов можно видеть на улице в каждой части Диззи. А иногда игровой условностью и вовсе являлся день с чёрным фоном вокруг.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Яркая цветная графика в сочетании с чёрными коридорами для одноцветных игровых объектов в игре Firelord, 1986 год

Наиболее эффективная техника избежания клэшинга при использовании чёрного фона была применена в играх Exolon, Cybernoid, Rex, Jack the Nipper II, и ряде других. В них все подвижные объекты при взаимодействии с элементами фона рисуются как бы позади этих элементов, а если точнее — в знакоместах, где есть фоновое изображение, части спрайтов не выводятся вовсе. Это полностью устраняет конфликт атрибутов и смотрится довольно неплохо, хотя и создаёт квадратную маску, затеняющую спрайт в месте пересечения.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Игра Exolon 1987 года выглядит яркой и цветной, ловко маскируя клэшинг


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Когда спрайт персонажа пересекается с любым цветным элементом фона, он просто не выводится в этом знакоместе

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

Ряд игр с плавной прокруткой экрана также вполне успешно избегал конфликта атрибутов в фоновой графике за счёт особого визуального дизайна. Например, при горизонтальной прокрутке фон раскрашивался полосками шириной во весь экран, а переходов цвета в пределах строки экрана просто не было. Или же между рядом расположенными элементами разных цветов всегда находился пропуск размером в одно знакоместо. Конечно, оставался цветовой конфликт с подвижными объектами, но, например, в R-Type эту проблему обошли, совместив плавную прокрутку фона с перемещением всех спрайтов по целому знакоместу. А в игре Zynaps применили технику, аналогичную Exolon, и хотя некоторое количество клэшинга в игре всё же есть, работает это очень неплохо.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

R-Type 1989 года эффективно сочетает прокрутку цветного фона с цветными спрайтами, почти без клэшинга


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Игра Zynaps 1987 года также весьма успешно скрывает клэшинг, хотя и не так хорошо, как R-Type

Достаточно спорный, но очень эффективный способ борьбы с конфликтом атрибутов был реализован в играх Savage, Astro Marine Corps, Teenage Ninja Mutant Turtles, и в отечественном Буратино. В них перемещение вообще всех объектов — и фона, и спрайтов — происходило по целому знакоместу, то есть с шагом 8 пикселей. Это создавало довольно неприятное на вид дёрганое движение, но позволяло максимально раскрасить и фон, и персонажей. Для уменьшения заметности квадратной маски, возникающей вокруг персонажей при таком способе наложения их на фон, сами персонажи рисовались максимально квадратно-гнездовым способом, чтобы их знакоместа или были почти заполнены графическим содержанием, или оставались пустыми.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Буйство цвета в Teenage Mutant Hero Turtles 1990 года. Контуры атрибутов видны на цветном фоне при повышенной яркости в спрайтах, но это едва ли бросается в глаза

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

Большие числа недостаточно велики

Числа двойной точности с плавающей запятой позволяют работать с числами до 10308, или U=101. Если в вашей игре требуются числа большей величины, то можно попробовать хранить числа с произвольной точностью. Таким образом можно сделать игроков миллиллионерами.

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

Станет ли ваша игра интереснее от выхода за пределы чисел двойной точности? Для некоторых игр ответ может быть положительным, но в большинстве случаев я советую вам подумать ещё раз о балансе и дизайне игры (1, 2, 3, 4).

Что книга “Игра в цифры” рассказывает об игровой аналитике

Время на прочтение

Из когда-то нишевого сегмента рынка игры сегодня превратились в высокодоходный транснациональный бизнес, опережающий по масштабам музыкальную индустрию и кинематограф. В игры уже вовлечено более 2,5 млрд человек (и это совсем не предел), а выручка ежегодно бьет новые рекорды. Причина этого — не только в доступности игр и в росте свободного времени у населения: под капотом современных игр находятся технологии вовлечения, эффективно использующие математику, поведенческую экономику, психологию и дизайн. А в основе этих технологий — системы игровой аналитики: именно они позволяют отследить поведение пользователей и определить наиболее “цепляющие” инструменты. И, в конечном счете, сделать так, чтобы люди проводили в играх как можно больше времени, получали максимум удовольствия — и приносили максимум денег разработчикам.

Аналитика, таким образом, — это кровеносная система современных игр, особенно в сегменте free-to-play (большинство бесплатных игр, в которых вам оставляют возможность заплатить за улучшения).


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

В конце прошлого года вышла книга Василия Сабирова “Игра в цифры” — первое российское издание, полностью посвященное игровой (и продуктовой) аналитике. Под катом — обзорный пересказ книги.

▍ Genesis и так далее

Несколько слов о дальнейшем развитии тайлово-спрайтовой концепции. Своего пика она достигла в игровых системах четвёртого поколения, взявшего старт в 1987 году — в 16-битных Sega Genesis и Super Nintendo, в условно 16-битной PC Engine (TurboGrafx-16), а также в современных им аркадных игровых автоматах.

Концепция сохранила все черты, оформившиеся в Famicom, но показала количественный и качественный рост. Больше оперативной видеопамяти, стандартно 64 килобайта. За счёт внедрения в архитектуру контроллера DMA стало больше времени на доступ к видеопамяти со стороны центрального процессора. Увеличилось количество одновременно отображаемых спрайтов, увеличился их размер. Больше одновременно отображаемых символов на слое фона — достаточно, чтобы показать уникальное изображение на весь экран. Больше самих слоёв фона — от двух у Genesis до трёх-четырёх на SNES. Больше цветов — теперь это всегда 16 цветов на точку спрайта или тайла, каждому спрайту и тайлу может быть назначен один из нескольких 16-цветных наборов цветов, а эти цвета выбираются из более богатой палитры оттенков — 512 на Genesis, и даже 32768 на SNES. Расширился и набор атрибутов тайлов, помимо выбора палитры появилась возможность индивидуального переворота каждого символа на экране по горизонтали или вертикали, а также изменения его приоритета, чтобы он отображался перед или за другими слоями фона и спрайтов.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Один из первых хитов, показавший мощь 16-битной графики, игра Sonic The Hedgehod, 1991 год


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Разбор изображения того же по слоям — слой спрайтов, два слоя фона

Эти изменения позволили разнообразить визуальные сюжеты, реализация которых была затруднена во времена Famicom. Снова стали возможными разнообразные детализированные изображения и изображения, не укладывающиеся в сетку из тайлов, например, игры с трёхмерной графикой. Конечно, при этом всё равно приходилось преобразовывать графику в тайловый формат, но скорость работы оставалась приемлемой.

Такие более мягкие ограничения стали оказывать меньшее влияние на визуальную эстетику. Остатки их влияния наблюдаются в ограниченном количестве блоков, из которых строятся уровни, и лёгких следов 8-пиксельной сетки в дизайне. Возникла и новая визуальная эстетика, свойственная 16-битной графике. Прежде всего это, конечно, эффект параллакса, имитации глубины сцены за счёт движения разных её элементов с разной скоростью. Также это изображения на фоне вместо однотонных заливок, иногда дитеринг для получения промежуточных оттенков, и некоторые визуальные эффекты, свойственные отдельно взятым платформам (лёгкие наклоны фона на Genesis, полупрозрачность и особо плавные градиенты цвета на SNES).


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Эффект имитации вращения (наклона) картинки, являющийся одной из узнаваемых особенностей графики Sega Genesis. Игра The Adventures of Batman & Robin, 1995 год


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Узнаваемые плавные цветовые градиенты, на которые способна SNES. Игра Super Turrican 2, 1995 год

Уже в этом поколении были и первые ласточки смены парадигмы, например, Neo-Geo использует исключительно спрайты, а единственный классический тайловый слой применяется там для отображения очков и вспомогательных текстовых сообщений. Такой подход вкупе с огромным объёмом видеопамяти (десятки мегабайт) снял практически все ограничения и позволил пиксельным художникам довести своё мастерство до совершенства, создавая уникальные, очень детально прорисованные игровые локации почти без повторяющихся элементов.

В то же самое время более дорогие домашние и персональные компьютеры, на которых также расцветала игровая индустрия — Amiga, Atari ST, IBM PC с 386 и 486 процессорами, и множество менее известных — шли иным путём, в основном комбинируя различные подходы с полноценными графическими режимами, битпланами, аппаратными спрайтами или с чисто программной отрисовкой. Как правило это давало гораздо большую гибкость в визуальных сюжетах за счёт меньшей скорости работы, но более мощные процессоры позволяли компенсировать эту проблему. В результате это сделало возможным Doom и приблизило следующую, принципиально иную эпоху визуализации в играх. Впрочем, это уже совсем другая история.

Дружелюбный гайд с небольшими недостатками

Василий Сабиров — известный и опытный игровой аналитик, создатель компании devtodev, оказывающей аналитические услуги разработчикам. Главная целевая аудитория книги — это те, кто интересуется механизмами создания и продвижения игр, но пока не имеет достаточной теоретической и практической базы: студенты, начинающие специалисты, стажеры и просто любители игр. Автор взял курс на дружелюбное “объяснение на пальцах” и выдерживает его до последней страницы, в равной степени доходчиво и терпеливо освещая большинство тем, с которыми сталкивается аналитик в повседневной работе — от выбора профессии до когнитивных искажений.

Однако книга не лишена недостатков. Один из них — то, что материал не вполне актуализирован. Точнее, не создает такого впечатления. По мере чтения понимаешь, что основой “Игры в цифры” стали статьи из корпоративного блога, публичных докладов и выступлений автора, которые дополнили и собрали под одной обложкой. На момент первой публикации, — а это период с 2016 по 2019 гг., — это была очевидно актуальная информация. Но сейчас скриншоты, диаграммы и примеры с 3-5-летними датами, как минимум, выглядят устаревшими: всем известно, какими темпами развивается и меняется игровая индустрия. И читатель, встретивший не очень свежую диаграмму, может и остальную информацию воспринять как устаревшую (хотя это совсем не так).

Еще один минус — слегка искусственное вкрапление в книгу иллюстративных элементов. Василий Сабиров берется объяснить важные вопросы аналитики на примере условной игры “про бегемотика, собирающего монетки”. Для целевой аудитории это могло бы стать великолепным сквозным примером, который объединил бы все главы и всё повествование вокруг себя. Но, увы, автор использует эту игру поверхностно, в основном как сюжет для картинок. Как итог, книга выглядит менее целостной, чем могла бы быть за счет реализации единого сквозного примера.

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

Тем не менее, перед нами первое оригинальное российское издание об игровой аналитике, которое полностью справляется со своими задачами: дает объемное представление об этой области и понятно рассказывает, как именно применение аналитических инструментов помогает оптимизировать игровой процесс на всех его этапах.

А если U = 1000?

Тогда число называется миллиллионом (прим. пер.: в длинной шкале — квингентиллиардом).

▍ От текста к графике

Определяющим свойством классического графического видеорежима является возможность программно изменять цвет каждого отдельно взятого пикселя на экране — то, что называется all points (или pixels) addressable. Поэтому для работы с произвольными растровыми изображениями нужно значительно больше памяти. Если текстовый режим, отображающий на экране 40×25 символов размером 8×8 точек, требует только 1000 байт ОЗУ, графический монохромный режим такого же разрешения потребует уже 8000 байт.

Технически устройство графического видеоадаптера несколько проще, чем текстового, но теперь то, что делала более сложная аппаратная часть, вынужден делать центральный процессор. Например, для вывода визуально идентично текста с тем же разрешением теперь вместо записи одного байта с кодом символа нужно прочесть из основной памяти или ПЗУ и записать в соответствующую область видеопамяти восемь байт с изображением символа. Таким образом, проблема перехода от текстового режима к графическому заключается не только в увеличении количества дорогостоящих микросхем памяти — хотя и одного этого в начале 1980-х годов было более чем достаточно, чтобы быть определяющим фактором — но и в необходимости обеспечить достаточно быстрое обновление экрана силами маломощного микропроцессора.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Freeway, одна из встроенных игр приставки RCA Studio II, 1977 год. Такая вот графика

Начинался переходный процесс довольно просто. Первые полностью графические режимы были монохромными или очень малоцветными, и не имели никаких опций отображения: один или два бита просто задавали цвет каждой точки. Например, микросхема видеоконтроллера RCA CDP1861, на основе которой была построена одна из первых в истории игровых приставок RCA Studio II (1977), формировала графический растр размером от 64 на 32 до 64 на 128 монохромных пикселей (всегда 64 пикселя в ширину, с разным количеством строк), один бит на точку, что требовало для описания экрана всего лишь 256-1024 байта оперативной памяти. Четырёхцветный графический режим CGA использовал два бита на точку, и для разрешения 320×200 требовалось уже 16000 байт памяти, что создавало проблемы со скоростью перерисовки экрана в эпоху процессора Intel 8088, работающего с частотой около 4.7 МГц, и сильно затрудняло создание динамичных игр с плавной анимацией.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Игра Alley Cat для IBM PC с видеоадаптером CGA, 1984 год

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

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

Первый подход — полноценные графические растровые режимы с ограниченным цветовым разрешением. Как правило, они позволяли отображать графику (относительно) высокого разрешения без ограничений на её содержание, с адресацией всех индивидуальных пикселей, но с большим расходом памяти, и, как следствие, часто со значительными ограничениями на отображение цвета, на разрешение и на скорость обновления экрана. Этот подход применялся в основном в домашних компьютерах конца 1970-х и начала 1980-х, а также в некоторых игровых приставках, и со временем стал единственным, используемым в современности.

Второй подход — так называемая тайлово-спрайтовая графика, лежащая в основе подавляющего большинства игровых приставок третьего и четвёртого поколения, с начала 1980-х до середины 1990-х годов, а также аркадных игровых автоматов тех же лет. Это компромиссное решение, накладывающее значительные ограничения на визуальное содержание, но позволившее снизить стоимость устройств и при этом повысить их производительность. По сути это более продвинутый текстовый режим: изображения символов шрифта заменили на графические элементы фона и назвали их «тайлами», добавили больше цветов и возможность попиксельной прокрутки изображения, но сохранили регулярную сетку и ограниченное количество символов-блоков, из которых строится картинка. Для подвижных элементов добавили аппаратную поддержку «спрайтов» — небольших изображений, накладываемых поверх слоя фона (например, курсор мыши) без изменения находящегося под ними фона.

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

Монетизация и как ее не упустить

Именно на эффективной монетизационной системе строится успех всех “условно-бесплатных” игр — и, конечно же, “Игра в цифры” отводит этой теме центральное место. Сенсаций здесь нет: все метрики выстроены вокруг “конверсионной воронки”, приводящей определенный процент игроков к платежу. Тем не менее, книга дает множество практических рекомендаций по анализу и повышению конверсии.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Пример, показывающий суммы и количество транзакций разных сегментов пользователей

Одним из результатов применения метрик становится воронка конверсий. Фактически это последовательность пользовательских действий, которая показывает, сколько уникальных игроков совершили каждое из них. Воронка используется для исследования поведения пользователей и “слабых мест”, на которых они отваливаются. С помощью воронки можно анализировать совершенно разные процессы в продукте: от прохождения туториала до совершения покупки, а также изучать и оптимизировать маркетинговые процессы: email-рассылки, привлечение трафика и, конечно, акции — об их проведении автор рассказывает в отдельной главе. Не менее важны профили пользователей, хранящие информацию об истории покупок, пройденном прогрессе в игре, данные о времени установки, устройстве и т.д.

Minecraft

7 октября 2011

▍ Креативные атрибуты

Концепция цветовых атрибутов, безусловно, является фактором, вставляющим палки в колёса художников. Но иногда за счёт креативного подхода из него можно получить и пользу, или хотя бы интересные эффекты. Известные мне примеры такого использования атрибутов в основном касаются ZX Spectrum, но есть и пара примеров для Famicom.

Одной из особенностей цветовых атрибутов является возможность формирования с их помощью изображений, вообще не обращаясь к пикселям. Говоря иначе, можно закрасить на экране квадрат 8 на 8 пикселей путём записи восьми байт в экранной памяти, соответствующих этим пикселя, а можно получить тот же визуальный результат записью всего одного байта атрибута. Это создаёт импровизированное сверхнизкое разрешение экрана 32 на 24 пикселя, в котором каждый пиксель может иметь свой цвет.

Эту особенность часто используют на ZX Spectrum в различных целях. Это и оптимизация по скорости, и различные вычислительно сложные эффекты в демо и 256-байтных интро. Также существует так называемый режим 53c — когда все пиксели экрана заполнены шахматной сеткой, сочетание разных цветов фона и изображения в атрибутах даёт условную имитацию новых оттенков цвета (всего 53, отсюда и название), недоступных в стандартной спектрумовской палитре. Этот режим полюбился организаторам и участникам различных конкурсов, так как столь низкое разрешение без сложных для понимания ограничений по цветам позволяет рисовать осмысленные изображения даже начинающим художникам, не знакомым с платформой.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Графика в формате 53c, работа Dog авторства Buddy, 2016 год

Другой особенностью, которую открывают атрибуты, является своего рода стеганография. Если установить одинаковый цвет фона и изображения в знакоместе, содержание экранной памяти, описывающей пиксели этого знакоместа, не будет давать никакой визуальной разницы. Этот эффект на ZX Spectrum применяли как для скрытия различных авторских надписей на загрузочных экранах, так и в чисто практических целях: в условиях нехватки оперативной памяти в кассетных копировщиках часть их кода размещали в экранной памяти, и выводили в соответствующем месте экрана служебные надписи крупного размера, используя только атрибуты.

Загрузочный экран игры Arkanoid II скрывает, внезапно, логотип The Beatles

Крайне лаконичный интерфейс кассетного копировщика TF-Copy скрывает под атрибутным счётчиком байт полезные данные, хранимые в экранной области

Ещё одним примером креативного использования наименее полезной возможности ZX Spectrum, а именно признака мигания, являются атрибутные анимации. При установке в знакоместе признака мигания цвета фона и изображения в нём меняются местами два раза в секунду. С помощью хитро спланированной расстановки атрибутов, часть из которых мигает, можно создавать анимацию из двух кадров. Это может быть просто две перемигивающиеся надписи, а может быть удивлённый котик (больше примеров с миганием по тегу Flash на ZX-Art).

Загрузочный экран классической игры Manic Miner, 1983 год

Работа «Nichosi» авторства Al-Rado, 2022 год

На Famicom легко увидеть атрибуты, вытащив или слегка недовставив картридж во время работы приставки. Когда ПЗУ или ОЗУ с графикой на плате картриджа не подключено, приставка считывает вместо графики байт FF. Данные же цветовых атрибутов находятся в ОЗУ видеоконтроллера, и таким образом они проявляются на экране в виде закрашенных квадратов.

Из-за довольно крупного размера атрибутов на Famicom их практическое применение по аналогии с ZX Spectrum затруднено. Чаще они пригождаются для раскрашивания в разные цвета одного и того же объекта, например, знаменитый пример облака и куста в Super Mario Bros. Также таким образом удобно раскрашивать строки текста в разные цвета, подсвечивать пункты меню.

Знаменитые облака, перекрашенные в кусты при помощи выбора другой палитры

Довольно интересный частный случай перекраски можно видеть в Mitsume ga Tooru (всеми любимый «трёхглазик»). На второй локации этой игры реализован эффект параллакса за счёт дополнительной прокрутки в видеопамяти содержимого графики тайлов фонового узора (аналогично Battletoads и ряду других игр). На этом фоновом узоре используется два разных атрибута, раскрашивающих его в более светлый и тёмный оттенок. Таким образом создаётся убедительный эффект полупрозрачной тени.


В ВИДЕОИГРАХ ЦИФРЫ В ФИЛЬМАХ

Убедительная имитация полупрозрачной тени с помощью атрибутов в игре Mitsume ga Tooru, 1992 год. В движении смотрится ещё лучше!

Строки стандартного числового формата

Числа меньше миллиона достаточно малы и не требуют серьёзной обработки. Можно положиться на встроенные возможности форматирования чисел C#, они сделают за нас бóльшую часть работы:

double x = 987654.321
x. ToString (“N2”); // возвращает “987,654.32”

Добавляя соответствующий аргумент к методу ToString, мы почти без труда группируем разделители и ограниченные десятичные разряды. Нам не нужно выполнять дополнительное деление или использовать функции округления вниз.

Сочетания префиксов для больших чисел

В Википедии есть полезная статья, объясняющая, как даются названия большим числам. Я не буду повторять то, что там написано. Вместо этого я дам описание того, как можно подойти к алгоритму и представлю несколько примеров.

Получив значение U числа (прим. пер.: здесь и далее у автора написано N, но это явно неправильно), как мы делали это в числах с латинскими префиксами, нужно разбить его на разряды (единицы, десятки, сотни), а затем сформулировать название следующим образом:

(префикс единиц) + (модификатор) + (префикс десяток) + (префикс сотен) + (удаление “a” в конце) + “llion”

Префиксы единиц, десяток и сотен можно взять из таблицы в статье Википедии. В некоторых случаях необходимо добавить модификатор, если кроме определённых префиксов единиц мы ставим префиксы десяток или сотен, но в большинстве случаев модификатор не нужен. Давайте рассмотрим несколько примеров.

Если U = 12, то для единиц цифра будет равна 2, что соответствует «duo», а для десятков — 1, соответствующая «deci». При переходе от «duo» к «deci» модификатор не нужен. По приведённой выше формуле мы получаем «duodecillion».

Если U = 27, для единиц цифра равна 7 (соответствует «septe»), для десятков — 2 (соответствует «viginti»). Согласно таблице, переход от «septe» к «viginti» требует модификатора «m». Соединяя всё вместе, получаем «septemvigintillion».

И наконец, если U = 30, то цифра для десятков равна 3, что соответствует «triginta», которое имеет окончание «a». Поэтому мы отбрасываем её и получаем «trigintillion».

Если вы пытаетесь понять, как всё это будет выглядеть в коде, то отвечу: это будет сочетание поисков по массиву, нескольких конструкций if и операций конкатенации и подстановки строк. Если вам повезло и вы работаете с языком, поддерживающим сравнения с паттернами, то можно использовать их.

Про урокцифры:  Спрос на товары на рынке труда в США растет

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *