Довольно часто играя в двумерные игры люди по ошибке называют персонажей и прочие объекты "модельками" совершенно не задумываясь о том, что в 2D играх совсем всю по другому. Нет никаких моделек. После прочтения этой статьи вы поймёте чем двумерные игры отличаются от трёхмерных. Заваривайте тарелку пельменей, на связи разработчик игр с девятилетним стажем и мы начинаем!
Понятие "Спрайт"
Если вы откроете Википедию и введёте слово "Спрайт" одно из первых определений слова будет Спрайт (англ. Sprite — фея; эльф) — графический объект в компьютерной графике.
Далее будет более подробное и заумное повествование. Но нам это ни к чему. Давайте просто и понятно разберём что такое спрайт.
В одной из первых статей мы рассматривали понятие "текстура". Как мы помним - компьютер видет все картинки в кодовом виде, как набор цифр, где каждый цвет имеет свой номер. Но некоторые форматы (например PNG, GIF) изображений имеют возможность по-мимо цветов записывать ещё и пустой фон. Тобишь, если компьютер видет в коде картинки пиксель с числом 0 - он делает этот пиксель прозрачным. Так и создаются прозрачные картинки (без белого фона).
Если мы возьмём четыре точки, соединим их - то получим один квадратный полигон. Далее мы просто можем нанести на этот полигон нашу текстуру и получим игрового персонажа, камень, дом или что-то ещё - смотря на то, что было на картинке.
Говоря просто, спрайт - это 3D модель состоящая из одного полигона и имеющая текстуру. Это определение довольно грубое, но всяко легче к пониманию, нежели статья в Википедии.
Спрайтовая 2D анимация
Но, как должно вы уже догадались, такое изображение будет статично. А мы любим игры за то, что в них можно играть, а не смотреть на статичные картинки. Процесс создания спрайтовой анимации до боли прост. Нужно просто, как в мультфильмах, нарисовать покадрово всю анимацию и вызывать её в зависимости от нужды. Чаще всего, по умолчанию, рисуют 3 вида анимации: покой, ходьба, прыжок. Далее, в зависимости от действий игрока, прокручивается нужная анимация. Эталоном сегодня являются анимации с 30 и 60 кадрами в секунду. Но разработчики могут отходить от этого стандарта.
Процедурная 2D анимация с привязками
Но бывают игры, где разработчик точно не может прорисовать все анимации. Например в игре Terraria неизвестно какой блок будет копать игрок и потому нереально предсказать под каким углом рисовать анимацию добычи ресурсов. Тут на помощь разработчикам пришла процедурная анимация.
Для её работы одного спрайта будет маловато. Тут необходимо отдельно прорисовать все части, которые будут анимированы. Далее нужно все объединить в игровом движке и соединить все "суставы". Например мы берём спрайт стопы и привязываем его конец к голени, голень мы за колено привязываем к концу бедра, бедро мы привязываем к туловищу. Далее мы записываем процесс анимации вручную, или благодаря редакторам. Теперь эти части тела выполняют свои движения будучи привязаны к другой части тела, что делает анимацию более реалистичной.
Процедурная 2D анимация с привязкой к скелету
Но некоторые разработчики пошли дальше. Зачем делить один спрайт на несколько, если можно просто один спрайт сгибать под нужным углом? Не поняли о чём я? Брали ли вы когда либо листок бумаги с нарисованным человечком и сжимали его таким образом что создавалось впечатление движения картинки? Именно так и делают разработчики. Они создают "скелет" на который записывают разные движения. Потом данный скелет "приклеивают" к спрайту и скелет делая движения, сгибает спрайт создавая впечатление настоящего движения персонажа.
Продвинутая 2D анимация
Часто разработчики дорогих игр используют сразу все эти технологии создавая продвинутую анимацию. Например, для лицевой анимации они используют спрайтовую анимацию, ноги и руки подвержены скелетной анимации, а более мелкие детали и предметы которые персонаж носит и берёт в руки, привязываются к телу или рукам анимируются анимацией с привязкой. Как бы там ни было - технологии уходят вперёд семимильными шагами и это далеко не все из существующих технологий!