Создание игр для мобильных телефонов - Страница 22

Рис. 4.6. Мидлет Slideshow реализует интерактивное слайд-шоу, в котором выводятся изображение и описание
Резюме
В этой главе вы узнали многое о программировании графики в MIDP API. Большая часть главы была посвящена объектам Graphics и Canvas, которые просты в применении. Вы познакомились с координатными системами и их использованием в мидлетах. Затем вы научились рисовать графические примитивы, настраивать шрифты и применять анкеры. Наконец, глава завершилась рассмотрением вывода изображений. Но, вероятно, самое важное в этой главе – написание двух примеров программ, демонстрирующих все приобретенные навыки работы с графикой.
Я думаю, что вам уже надоела эта подготовка, и вы готовы приступить к созданию полноценной игры. В следующей главе рассматривается наиболее важная тема, относящаяся к программированию игр, – спрайтовая анимация.
Заключение
Самая большая трудность, стоящая перед разработчиком мобильных игр – это необходимость работы с большим числом мобильных устройств с экранами различных размеров. Если в своих программах вы используете простейшую графику, нет необходимости заботиться о масштабировании и изменении изображений. Мидлет Olympics – хороший пример того, как вы можете масштабировать изображения в зависимости от размеров экрана. Как вы, вероятно, заметили, мидлет рисует олимпийский символ фиксированного размера вне зависимости от размеров экрана. Ниже приведены шаги, которые необходимо сделать, чтобы олимпийский символ занимал все свободное место на экране вне зависимости от размера экрана:
1. вызовите методы getWidth() и getHeight() и определите размеры эк рана;
2. вычислите диаметр каждой окружности символа как одну четвертую высоты экрана устройства;
3. измените код метода paint() так, чтобы окружности имели вычисленный диаметр и располагались соответственно, все изображение должно быть центрировано;
4. соберите и запустите мидлет в эмуляторе J2ME. Измените эмулируемое устройство на QwertyDevice и посмотрите, как символ будет изображен на экране.
Это очень важное заключение, поскольку оно демонстрирует важность масштабирования изображения в зависимости от размеров экрана. В реальности далеко не всегда возможно сделать универсальный мидлет для любого типа экрана, однако простейший графический мидлет проиллюстрировал это.
Глава 5
Использование спрайтовой анимации
Архив Аркад
Единогласно признанная классикой почти всеми поклонниками аркад игра Battlezone была выпущена в 1980 году компанией Atari. В этой игре применяется фреймовая векторная графика. Игрок видел картинку через видоискатель, имитировавший наблюдательный прибор танка. Трехмерная перспектива в Battlezone была новинкой для игроков во время игрового бума. Изначально Battlezone разрабатывалась для военных как тренажер боевой машины Bradley, бывшей на вооружении у США. Хотя официального подтверждения этому нет ни со стороны Atari, ни со стороны военных, военная версия игры со специально оборудованным местом была выставлена в Atari годы спустя после зенита славы Battlezone.
Сердце почти любой компьютерной графики – это анимация. Без анимации не было бы движения, и мы бы так и играли в текстовые и примитивные игры. В этой главе вы познакомитесь с основополагающими концепциями анимации в мобильных играх, спрайтовой анимацией. После того как вы познакомитесь с теорией создания анимации, вы узнаете, как использовать спрайты в MIDP 2.0 API. Речь о спрайтовой анимации пойдет и далее, однако в этой главе вы познакомитесь с основами анимации в мобильных играх и узнаете, что необходимо для ее реализации.
Из этой главы вы узнаете:
► об основах анимации и принципах ее работы;
► об отличиях 2D– и BD-анимаций;
► о разных типах 2D-анимации, о том когда целесообразно применять конкретный метод;
► как использовать MIDP-класс Sprite для разработки анимационных мидлетов;
► как применять класс GameCanvas для обеспечения плавной анимации в мидлете.
Понятие об анимации
Перед тем как начать изучение анимации как части мобильной игры, необходимо уяснить основы. Давайте начнем с фундаментального вопроса: «Что такое анимация?» Если говорить просто, анимация – это иллюзия движения. Действительно ли вся анимация, которую вы видите, – всего лишь иллюзия? Именно так! И, вероятно, самая удивительная иллюзия, захватившая внимание человека задолго до появления компьютеров, – это телевидение. Когда вы смотрите телевизор, то видите множество вещей, передвигающихся по экрану. Но то, что вы воспринимаете как движение, – лишь трюк, разыгрываемый у вас на глазах.
Анимация и частота обновления кадров
В случае телевидения иллюзия движения создается за счет быстрой смены изображений, немного отличающихся друг от друга. Человек из-за низкой остроты зрения воспринимает эти изменения как движение. Наши глаза очень легко обмануть и заставить поверить в иллюзию анимации. Если говорить более подробно, то человеческий глаз воспринимает смену изображений как анимацию, если изменения происходят не менее 12 раз в секунду. Неудивительно, что это значение минимально для большей части компьютерной анимации. Скорость анимации измеряется в кадрах в секунду (fps, frames per second).
Хотя 12 кадров в секунду – технически достаточная скорость, чтобы обмануть ваши глаза, такая анимация будет очень прерывистой. Следовательно, для создания более качественной анимации требуется более высокая частота обновления кадров. Например, телевидение работает на частоте 30 кадров в секунду. В кино вы смотрите фильмы, в которых частота смены кадров равна 24 кадрам в секунду. Очевидно, что этого вполне достаточно, чтобы привлечь ваше внимание и создать иллюзию движения.
В копилку Игрока
Разница в частоте обновления кадров на телевидении и в кино связана с техническими причинами, а не с организационными. Раньше частота обновления в фильмах составляла лишь 16 кадров в секунду, но, в конечном счете, стандартом была принята частота 24 кадра в секунду, что оказалось наиболее подходящей скоростью для воспроизведения звука. Американское телевидение, также известное как NTSC (National Television Standards Committee – Национальный комитет по телевизионным стандартам), за эталон времени выбрала частоту тока в электросети (60 Гц), таким образом была получена частота 30 кадров в секунду. Тот факт, что телевидение работает на более высокой частоте, означает, что для показа фильма по телевидению его необходимо конвертировать.
В отличие от телевидения и кинофильмов, мобильные игры имеют гораздо больше ограничений по частоте обновления кадров. Большая частота означает высокую загрузку процессора, поэтому разработчикам мобильных игр приходится искать компромисс между частотой обновления кадров и ограниченной производительностью и ресурсами устройства. Вероятно, при разработке игры вам придется упрощать графику с целью увеличения частоты обновления кадров и получения плавной анимации.
При программировании анимации для мобильных устройств вы можете самостоятельно изменять частоту обновления кадра. Наиболее очевидное ограничение частоты обновления кадров – это скорость, с которой мобильный телефон может создавать и отображать картинки. На самом деле это ограничение должно рассматриваться разработчиками вне зависимости от платформы или используемого языка программирования. При определении частоты обновления кадров в игре целесообразно понизить частоту смены кадров и разгрузить процессор устройства. Но пока не беспокойтесь об этом. Просто помните, что, создавая анимацию в играх, вы, словно волшебник, создаете иллюзию движения.
Шаг в направлении компьютерной анимации
Большинство методик, применяемых для создания компьютерной анимации, были заимствованы или основаны на аналогичных техниках создания анимации в мультфильмах. Классический подход при создании анимации – это создавать фон отдельно от движущихся объектов. Объекты анимации рисуются на отдельных целлулоидных листах так, чтобы их можно было разместить поверх фоновой картинки и перемещать независимо от нее. Этот тип анимации носит название буферной анимации (cel animation). Такая анимация помогает художникам сэкономить массу времени, необходимо лишь перерисовывать объекты, которые изменяют свою форму, размер или положение от фрейма к фрейму. Это объясняет, почему во многих мультфильмах хорошо проработано фоновое изображение, а герои столь просты. Спрайты, применяемые в компьютерных играх, о которых вы узнали чуть ранее в этой главе, – это те же самые традиционные движущиеся объекты в буферной анимации.