Создание игр для мобильных телефонов - Майкл Моррисон
Шрифт:
Интервал:
Закладка:
В игре High Seas используется карта, размер которой много больше размеров экрана. Видимая область карты изменяется по мере перемещения корабля по экрану. Аналогично примеру Wanderer 2, рассмотренному в предыдущей главе, в игре High Seas используются два слоя. Слой с изображением воды – это фоновый слой. Поверх него располагается слой, содержащий землю, маленькие скалистые острова – препятствия на пути пиратского судна.
В игре High Seas сделан еще Game один шаг вперед по сравнению с мидлетом Wanderer 2. Здесь необходимо отображать игровую информацию, например, энергию пиратского корабля и число спасенных пиратов. Эта информация отображается в строке, расположенной у верхней границы экрана. Окно вида расположено непосредственно под этой строкой. На рис. 12.1 показана укрупненная схема игрового экрана приложения High Seas.
Рис. 12.1. Игра High Seas состоит из информационной строки, окна вида на слои, двух замощенных слоев и нескольких спрайтов
Рисунок 12.1 дает очень хорошее представление о том, как будет выглядеть экран игры High Seas. Информационная строка располагается в верхней части экрана над окном вида, в ней отображается важная игровая информация: оставшаяся у корабля энергия и число спасенных пиратов. Окно вида – эта та область экрана, в которой разворачиваются основные события игры. Чтобы создать виртуальный мир, океан с островами и скалами, используются два замощенных слоя – фоновый и слой-барьер. Наконец, несколько спрайтов формируют саму игру (осьминоги и мины, которые разрушают корабль, бочки, пополняющие энергию судна и пираты, которых необходимо спасти).
В этой игре нет определенной цели, например, прохождение уровня или уничтожение врага. Вы просто должны спасти как можно больше пиратов, прежде чем подорветесь на мине или угодите в щупальца спрутов.
Разработка игры
Обзор игры High Seas уже дал вам представление о внешнем виде игры, даже если вы не представляете его в деталях. Например, вы уже знаете, сколько нужно спрайтов в игре. Вы знаете, что есть один пиратский корабль, управляемый игроком. В игре должен присутствовать, по крайней мере, один спрайт потерявшегося пирата, спрайты бочки, мины и осьминога. Можно использовать по одному спрайту каждого вида, но в этом случае игра не будет такой захватывающей и привлекательной. Я предлагаю использовать следующее количество спрайтов: 2 пирата, 2 бочки, 3 мины и 3 спрута.
Обратите внимание, что в игре больше «отрицательных» спрайтов (мин и осьминогов), чем положительных (бочек и пиратов). Идея включать больше отрицательных элементов, чем положительных, заключается в том, чтобы корабль игрока с большей вероятностью потерпел крушение. Поверьте мне, что лучше сделать игру сложной, чем скучной. Игроки могут адаптироваться к сложностям, а вот сделать скучную игру интереснее нельзя....В копилку Игрока
Многие из популярных аркад оставались такими долгое время благодаря своей сложности. Сразу вспоминаются игры Joust и Defender в которые, несмотря на достаточно простой дизайн, не очень просто играть. Хотя вы можете переусердствовать и сделать игру чересчур сложной, многие игроки ценят трудности.
Вы можете догадаться, сколько изображений понадобится? Как показано ниже, в игре необходимо восемь растровых изображений:
► изображение информационной строки;
► фоновое изображение воды;
► фоновое изображение с элементами суши;
► изображение пиратского корабля (рис. 12.2);
Рис. 12.2. Изображение пиратского корабля состоит из четырех фреймов, нос корабля повернут в четырех различных направлениях
► изображение пирата (рис. 12.3);
Рис. 12.3. Изображение пирата состоит из четырех фреймов, создающих иллюзию того, что пират качается на волнах► изображение бочки (рис. 12.4);
Рис. 12.4. Изображение бочки состоит из четырех фреймов, которые создают впечатление, что бочка дрейфует в море► изображение мины (рис. 12.5);
Рис. 12.5. Изображение мины состоит из двух фреймов, имитирующих качание на волнах► изображение осьминога (рис. 12.6).
Рис. 12.6. Изображение спрута состоит из двух фреймов, создающих иллюзию, что он плыветПервое изображение (информационная строка) – единственное, что может удивить в этом описании. Изображение информационной строки – это просто чистое изображение, служащее фоном. Два фоновых изображения – замощенные слои, имитирующие воду и сушу. В следующих двух разделах вы узнаете об этих изображениях подробнее.
...В копилку Игрока
Информационная строка – это единственный элемент игры High Seas, который зависит от размеров экрана мобильного устройства (ширины). Чтобы масштабировать игру в зависимости от размеров экрана телефона, для информационной строки вы можете использовать или более широкое, или замощенное изображение. К счастью, больший размер экрана не повлияет на динамику игры, а лишь увеличит видимую область карты.
Остальные спрайтовые изображения используют фреймовую анимацию, что делает игру визуально интереснее. Например, спрайт пиратского корабля состоит из четырех фреймов, в каждом из которых нос корабля ориентирован в определенном направлении. Спрайты пирата, бочки и мин перемещаются по поверхности воды. Наконец, спрайт осьминога показывает свои щупальца, устрашая игрока.
Теперь, когда вы познакомились с большей частью графических объектов, используемых в игре, давайте рассмотрим остальные необходимые в игре элементы. Во-первых, очевидно, что необходимо следить за тем, сколько у корабля осталось энергии. Также нужно вести счет спасенных пиратов. Необходима булевская переменная, которая будет отслеживать, закончена ли игра. Итак, игра High Seas должна содержать средства контроля следующей информации:
► оставшаяся у корабля энергия;
► счет – число спасенных пиратов;
► логическая переменная, говорящая об окончании игры.
Теперь вы можете перейти к созданию карт слоев игры High Seas. Помните, что в игре необходимы и другие переменные, например, спрайты и проигрыватели, но приведенный список переменных отслеживает состояние игры и хранит необходимую информацию.
Создание водной карты
Как я объяснял ранее, в игре High Seas используются два различных замощенных слоя: слой воды и слой суши. Водяной слой – «пассивный» – он используется лишь как фон и не взаимодействует со спрайтами. Несмотря на это, в этом замощенном слое есть анимационные элементы, создающие иллюзию движения воды.
Подобно фоновому слою из мидлета Wanderer 2 из предыдущей главы, в этом слое не нужно задавать граничные элементы – это сделает слой суши. Поэтому края слоя воды – пустые элементы (рис. 12.7).
Рис. 12.7. В слое воды не нужны краевые элементы, поскольку они будут скрыты под слоем суши
Черная граница, которую вы видите вокруг замощенного слоя на рисунке – это прозрачная область, в которой не выводится никакая графика. Аналогично расположенные элементы в слое суши содержат изображения земли, которые препятствуют перемещению пиратского корабля. На самом деле, как вы увидите позже, часть водного слоя ограничена фрагментами суши. Ниже представлен код карты водного слоя:
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, 1, -1, 1, 1, -1, -2, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, -2, 0, 0,
0, 0, 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, -2, 1, -1, 1, 1, -2, 1, 1, -1, 1, 0, 0,
0, 0, -2, -1, 1, -1, 1, -2, 1, 1, -2, 1, 1, -1, 1, -2, 1, 1, -2, 1, 1, -1, 0, 0,
0, 0, -1, 1, -1, 1, -1, 1, 1, -1, 1, 1, -1, 1, -1, 1, -1, -1, 1, 1, -1, 1, 0, 0,
0, 0, 1, -1, 1, -1, 1, 1, -1, 1, 1, -1, 1, -2, 1, -1, 1, 1, -1, 1, 1, 1, 0, 0,
0, 0, -1, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, -1, 0, 0,
0, 0, 1, -1, -2, 1, 1, 1, -1, 1, 1, -2, -1, 1, 1, -2, 1, 1, -2, 1, -1, -2, 0, 0,
0, 0, -2, 1, 1, 1, -1, -2, 1, -1, 1, -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, -1, 1, 1, -1, 1, 1, 1, -2, -1, 1, 1, 1, -1, 1, -1, 1, -1, 0, 0,
0, 0, 1, -1, -2, 1, -1, -2, 1, -2, -1, 1, -1, 1, -1, -1, -1, 1, -1, 1, -1, 1, 0, 0,
0, 0, -2, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, -2, 1, 1, -2, -1, 0, 0,
0, 0, -1, 1, -1, -1, 1, -1, -2, -1, 1, 1, -2, 1, -1, 1, -1, 1, 1, -1, 1, 1, 0, 0,
0, 0, 1, -2, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, 0, 0,
0, 0, -1, 1, 1, -2, 1, -2, -1, 1, -1, 1, -1, 1, 1, -1, -2, 1, -1, 1, -2, 1, 0, 0,
0, 0, -2, 1, -1, 1, -1, 1, 1, -1, 1, -1, 1, -2, -1, 1, 1, -1, 1, -1, 1, 1, 0, 0,
0, 0, 1, 1, -1, 1, 1, -1, 1, 1, -2, 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, -1, 0, 0,
0, 0, 1, -1, 1, -2, 1, -2, -1, 1, 1, -1, 1, -1, 1, -1, 1, -1, -2, -1, 1, 1, 0, 0,
0, 0, -1, 1, -1, 1, 1, -1, 1, -2, -1, 1, -2, -1, -2, 1, -1, -2, 1, -1, -2, 1, 0, 0,
0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 0, 0,
0, 0, -2, -1, 1, 1, -2, 1, -1, 1, -1, -2, 1, -2, 1, -1, -2, 1, 1, -2, -1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0Приведенный код вам вряд ли что-то скажет, если не посмотреть на ассоциированное с ним изображение. На рис. 12.8 показаны изображения, ассоциированные с данным замощенным слоем. Конечно, вы уже знаете, что ячейки с отрицательными индексами содержат анимационные элементы.
Рис. 12.8. Можно представить, как выглядит водный замощенный слой, если вместо индексов подставить соответствующий код изображения