Майкл Моррисон - Создание игр для мобильных телефонов стр 27.

Книгу можно купить на ЛитРес.
Всего за 239 руб. Купить полную версию
Шрифт
Фон

Майкл Моррисон - Создание игр для мобильных телефонов

Рис. 5.7. Когда мидлет запускается, по экрану немедленно начинает летать НЛО

Поскольку на картинке сложно отобразить анимацию, то на рис. 5.8 показан летающий объект в другом месте экрана.

Майкл Моррисон - Создание игр для мобильных телефонов

Рис. 5.8. Как кролик из рекламы Energizer, НЛО беспрестанно летает по экрану

Все, чего не хватает в мидлете UFO, – это пара астероидов и возможность управления НЛО. Не беспокойтесь, мы восполним этот пробел в следующей главе.

Резюме

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

В следующей главе вы примените свои знания в области создания анимации для программирования управляемого объекта.

Еще немного об играх

Рассматривая мидлет UFO как первый пример работы с анимацией, полезно поработать еще с рядом ее свойств. Я имею в виду частоту кадров и скорость НЛО. Ниже приведены шаги, которые дают возможность изменить анимацию:

1. попробуйте увеличить значение переменной frameDelay, например, до 100 (10 кадров/с), а потом уменьшить до 20 (50 кадров/с). Обратите внимание на то, как работает анимация в каждом из случаев, а также – насколько она плавная;

2. измените частоту изменения скорости летающего объекта так, чтобы она изменялась чаще. Например, для этого измените код rand.nextInt() % 5 на rand.nextInt() % 2;

3. измените границу скорости НЛО так, чтобы он мог двигаться быстрее. Для этого необходимо изменить вызовы методов min() и max() и установить большую границу.

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

Глава 6 Обработка ввода пользователя

...

Архив Аркад

Выпущенная в 1980 году компанией Stern игра Berzerk – простой шутер в лабиринте, в ней вы управляете героем-гуманоидом, проводите его через комнаты и сражаетесь с роботами. Berzerk – это одна из первых игр, в которой в конце каждого уровня необходимо было сражаться с "главным монстром". В этой игре "главный монстр" – Злой Отто (Evil Otto), который заставляет героя войти в определенную комнату. Игра Berzerk известна тем, что роботы в ней могут совершать ошибки, например, случайно убить друг друга. Также эта игра известна гибелью игроков: в 1981 году мужчина скончался от сердечного приступа, случившегося после игры; в 1982 году еще один человек также скончался от сердечного приступа, при этом он возглавил список лучших результатов. Играйте в Berzerk на свой страх и риск!

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

Из этой главы вы узнаете:

► почему пользовательский ввод так важен в мобильных играх;

► как эффективно определять и обрабатывать нажатия клавиш;

► как управлять анимационным объектом, используя клавиатуру;

► как определять столкновения спрайтов;

► как создать спрайты, вид которых изменяется с течением времени.

Обработка пользовательского ввода

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

...

В копилку Игрока

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

Позвольте мне пояснить, что я имею в виду, говоря о пользовательском вводе и удобстве игры. Одна из самых популярных игр всех времен и народов – это Ring King, боксерская игра для Nintendo Entertainment System (NES, Игровая система Nintendo). По современным меркам эта игра считается старой, но, вероятно, зря. По сравнению с современными играми у нее слабая графика, анимация и звук, однако я до сих пор играю в нее, потому что это так просто! Простота достигается за счет хорошо продуманного ввода, что и делает игру приближенной к реальному боксерскому бою. В Ring King, конечно, есть ряд ограничений, но разработчики грамотно продумали время ударов.

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

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

...

В копилку Игрока

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

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

Обработка пользовательского ввода с помощью класса GameCanvas

В главе 5 вы познакомились с классом GameCanvas, который предлагает уникальное решение для создания графики – двухбуферную анимацию. Класс GameCanvas предназначен не только для этого, он реализует высоко эффективную обработку ввода, специально разработанную для мобильных устройств. Традиционный подход, используемый в J2ME, годится для большинства мидлетов, но не в полной мере отвечает требованиям игр. Поэтому класс GameCanvas содержит более эффективный метод обработки ввода – метод getKeyStates().

Метод getKeyStates() используется для получения снимка состояния клавиш мобильного телефона в любой момент времени. Этот метод не содержит информации обо всех клавишах мобильного телефона, а только тех, которые используются в играх. Ниже приведены константы, которые вы можете использовать вместе с методом getKeyStates() для определения нажатия клавиш:

► UP_PRESSED – клавиша вверх;

► DOWN_PRESSED – клавиша вниз;

► LEFT_PRESSED – клавиша влево;

► RIGHT_PRESSED – клавиша вправо;

► FIRE_PRESSED – клавиша выстрела;

► GAME_A_PRESSED – дополнительная клавиша A;

► GAME_B_PRESSED – дополнительная клавиша B;

► GAME_C_PRESSED – дополнительная клавиша С;

► GAME_D_PRESSED – дополнительная клавиша D.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3