Вход/Регистрация
Создание игр для мобильных телефонов
вернуться

Моррисон Майкл

Шрифт:

Позвольте мне пояснить, что я имею в виду, говоря о пользовательском вводе и удобстве игры. Одна из самых популярных игр всех времен и народов – это 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.

...

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

Клавиши A B, C и D – это дополнительные клавиши, которые могут отсутствовать на мобильном телефоне. Поэтому вы не должны рассчитывать на эти клавиши, если не создаете игру для особой модели телефона.

Метод getKeyStates возвращает целочисленное значение, которое можно использовать для проверки нажатой клавиши. Чтобы проверить нажатие клавиши, вызовите метод getKeyStates и сравните возвращенное значение с одной из констант, например, так:

int keyState = getKeyStates;

if ((keyState & LEFT_KEY) != 0) {

// переместить влево

}else if ((keyState & RIGHT_KEY) != 0) {

//переместить вправо

}

Этот код следует поместить в игровой цикл так, чтобы состояние клавиш проверялось через равные промежутки времени. Важно понять, что метод getKeyStates не обязательно возвращает текущее состояние клавиш. Если клавиша была нажата после предыдущего вызова этого метода, то возвращаемое значение будет говорить о том, что она нажата. Это гарантирует перехват быстрых нажатий кнопок даже в случае медленной работы игрового цикла. Уверен, что вы не хотите развития такого сценария, однако, по крайней мере, вы не потеряете ни одного нажатия клавиш.

...

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

Некоторые телефоны могут поддерживать клавишные комбинации, но гарантии этому нет. Если вы создаете мидлет для конкретной модели телефона, то можете спокойно использовать все его возможности. В некоторые современные коммерческие игры, например, Tony Hawk\'s Pro Skater, невозможно играть, не используя клавишные комбинации.

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

  • Читать дальше
  • 1
  • ...
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: