Создание игр для мобильных телефонов - Страница 23
С ростом производительности компьютерных систем за последние два десятилетия аниматоры увидели возможность автоматизации многих этапов, выполняемых вручную. Например, с появлением компьютеров стало возможным сканировать изображения и накладывать их на другие с использованием настроек прозрачности. Это похоже на буферную анимацию, но с одним значительным отличием: компьютер не ограничивает количество накладываемых объектов. Буферная анимация ограничена количеством целлулоидных листов, которые можно наложить друг на друга. Как вы вскоре узнаете, техника наложения объектов с применением прозрачности является основополагающей формой компьютерной анимации.
В копилку Игрока
Современные мультипликационные фильмы доказали, что компьютерную анимацию можно применять не только в компьютерных играх. Популярные мультфильмы, например, «История игрушек» (Toy Story), «Ледниковый период» (Ice Age), «Корпорация монстров»(Monsters, Inc.), «В поисках Немо» (Finding Nemo), – лучшие примеры того, как традиционные анимационные методы применяются на компьютерах. Вероятно, наиболее совершенная компьютерная анимация была создана для фильма «Последняя фантазия» (Final Fantasy) – это первый фильм, в котором компьютерная анимация применялась на протяжении всего фильма.
Хотя компьютеры используют методы создания анимации, применявшиеся ранее, возможности разработчиков компьютерных игр более гибкие. Как программист вы можете получить доступ к любому пикселю растрового изображения и изменять его в соответствии с потребностями.
2D против 3D
Перед тем как приступить к созданию игры, вам необходимо выбрать один из двух существующих типов анимации: 2D или 3D. В случае 2D-анимации объекты перемещаются в плоскости. Объекты при таком типе анимации могут быть трехмерными, они просто не могут перемещаться в третьем измерении. Большинство методик двумерной анимации имитируют трехмерную анимацию, придавая объектам глубину. Например, чтобы создать иллюзию того, что автомобиль уезжает, его изображение можно просто уменьшать пропорционально увеличению расстояния. Тем не менее не нужно использовать 3D-анимацию, поскольку вы добиваетесь желательного трехмерного эффекта, используя простое масштабирование. Хотя эффект трехмерный, машина – двухмерный объект.
В отличие от 2D-анимации трехмерная анимация размещает объекты и работает с ними в трехмерном мире. Трехмерный объект определяется моделью, а не изображением, поскольку любое изображение – это плоский объект. 3D-модель определяет форму объекта и число точек в пространстве. Иначе говоря, трехмерная модель – это математическое представление объекта. Поэтому 3D-графика и анимация могут быть весьма сложными и зачастую связаны с большим объемом математических вычислений.
В реальности многие игры используют сочетание этих двух типов графики. Например, в игре Doom трехмерная графика используется лишь для построения ландшафта, в то время как монстры – это двухмерные графические объекты. Монстры выглядят объемно, но они – плоские изображения.
Смесь 2D– и 3D-графики дает хорошие результаты в игре Doom, поскольку плоские изображения выглядят достаточно реалистично в 3D-окружении. Конечно, со времен Doom многое изменилось. Так, Quake и другие современные трехмерные игры этого жанра используют теперь трехмерные объекты.
Оставшаяся часть главы и книга в целом сфокусированы на рассмотрении 2D-анимации, поскольку она проста и более эффективна, а следовательно, лучше приспособлена для написания мобильных игр. Хорошая новость – вы можете создавать великолепные эффекты с использованием 2D-анимации.
Анализ 2D спрайтовой анимации
Хотя эта глава целиком посвящена спрайтовой анимации, необходимо понять основные типы анимации, используемые в программировании игр. Существует множество различных типов, каждый из которых целесообразно применять в определенных случаях. Рассматривая анимацию в контексте создания мобильных игр, я разбил ее на два типа: фреймовую (frame-based animation) и композиционную анимации (cast-based animation). С технической точки зрения, существует еще и третий тип анимации – анимация палитрой (palette animation), – анимация цвета объекта, однако он не является основным.
Фреймовая анимация
Наиболее простая анимация – фреймовая, она распространена очень широко. Фреймовая анимация имитирует движение путем быстрой смены заранее созданных изображений – кадров (или фреймов). Фильм – это хороший пример такого типа анимации. Каждый кадр фильма – это фрейм анимации, а когда эти фреймы сменяют друг друга с определенной скоростью, создается иллюзия движения.
Фреймовая анимация не предусматривает разделения объекта и фона, любой объект фрейма является его неотъемлемой частью. В результате каждый фрейм содержит статическую информацию. Это основное отличие фреймовой анимации от композиционной, с которой вы познакомитесь в следующем разделе. На рис. 5.1 показаны кадры из фреймовой анимации.

Рис. 5.1. При использовании фреймовой анимации для создания иллюзии движения изменяется весь фрейм
На рис. 5.1 показан парашютист, он является неотъемлемой частью каждого фрейма, нет разделения между ним, деревьями, небом. Это означает, что парашютист не может перемещаться независимо от фона. Иллюзия движения достигается за счет того, что каждый фрейм немного отличается от предыдущего. Эта техника создания анимации редко применяется в играх, поскольку в играх требуется, чтобы объект мог передвигаться свободно в любом направлении и независимо от фона.
Композиционная анимация
Более совершенная методика создания анимации, используемая в большинстве игр, – это композиционная анимация, которая также известна как спрайтовая. При этом объект анимации – это графический объект, который может перемещаться независимо от фона. С этой точки зрения, вы можете быть немного озадачены применением термина «графический объект», когда речь идет о различных частях анимации. В данном случае графический объект – это объект, который логически может быть отделен от фона. Например, при создании анимации для космического шутера корабли пришельцев – это отдельные графические объекты, которые логически отделены от фона.
В копилку Игрока
Термин «композиционная анимация» (cast-based animation) происходит потому, что спрайт можно представить как часть композиции (изображения). Можно провести аналогию между компьютерной анимацией и театром. Представьте спрайт актером, а фон сценой, тогда о спрайтовой анимации можно думать как о театральном действе. Это не так далеко от истины, потому как цель театрального представления – развлечь зрителя, рассказывая какую-нибудь историю и разыгрывая спектакль. То же можно сказать и про спрайтовую анимацию, которая развлекает пользователя, повествуя историю.
Каждый графический объект композиционной анимации, называемый спрайтом, имеет определенное положение, которое может меняться с течением времени. Другими словами, спрайт может иметь скорость, которая и определяет, как изменяется его положение с течением времени. Почти все видеоигры используют спрайты. Например, каждый объект в классической игре Asteroids – это спрайт, перемещающийся независимо от фона. Несмотря на то, что в игре Asteroids применяется векторная графика, игровые объекты – спрайты. На рис. 5.2 показано, как композиционная графика упрощает пример с парашютистом, который вы видели в предыдущей главе.

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