Текст книги "Создание игр для мобильных телефонов"
Автор книги: Майкл Моррисон
Жанр: Зарубежная компьютерная литература, Зарубежная литература
сообщить о неприемлемом содержимом
Текущая страница: 28 (всего у книги 35 страниц)
Процесс загрузки и установки игры на мобильный телефон известен как распространение через беспроводное соединение (over-the-air provisioning) или OTA распространение.
Такой способ распространения мобильных игр характерен для беспроводных мобильных устройств. Идея состоит в том, чтобы позволить пользователям получить информацию о мобильном приложении до того, как они приступят к его загрузке и установке. Кроме того, распространение через беспроводное соединение полагается на существующие надежные технологии доставки файлов мидлета. Доступ к мобильным играм осуществляется через ссылки на web-страницах, загрузка осуществляется непосредственно с сервера.
Чтобы дать возможность пользователям загрузить игру через сеть, необходимо указать на нее ссылку на сервере. При распространении игры обычно используются следующие файлы:
► JAD-файл;
► JAR-файл;
► HTML – или WML-страницу с ссылкой на JAR-XJAD-файл.
Как вы уже знаете, JAD-файл – это небольшой текстовый файл, который содержит описание мидлета или пакета мидлетов. В данном случае – это сама игра, упакованная для распространения. Вы уже знакомы с упаковкой мобильных игр в JAR-файлы и созданием JAD-файлов для тестирования в эмуляторе J2ME. Единственный недостающий компонент – это HTML– или WML-страница, содержащая ссылку на JAR-или JAD-файл.
Совет Разработчику
Если вы забыли, то JAR-файл мобильной игры содержит все откомпилированные файлы классов игры, файл манифеста (аналогичный JAR-файлу) и игровые ресурсы (изображения, звуки и т. п.).
Используя беспроводное соединение для распространения игры, вы можете указать страницу в Интернет, содержащую ссылку на JAR-файл игры. Но это не очень удачный подход, поскольку пользователю, чтобы узнать об игре, придется загрузить файл целиком. Цель JAD-файла – дать информацию о том, что приобретает пользователь. Я не имею в виду, что пользователь получает представление о том, как в нее играть или что-то аналогичное, я говорю о размере файла, о версии игры и т. п.
В копилку Игрока
Не забудьте, что большинству пользователей мобильных телефонов важен объем данных, получаемых по беспроводной сети. Вот почему JAD-файлы играют столь значительную роль при распространении мобильных игр по беспроводной сети: они предоставляют пользователю информацию об игре при минимальных затратах на получаемые данные.
В реальности, несмотря на то что вы можете распространять созданные вами игры с собственного сайта, более эффективным способом является распространение через «игровые компании» или поставщиков беспроводной связи. В результате вашу игру может заметить большая аудитория. Сотрудничество с поставщиками беспроводных услуг намного сложнее для новичков, но есть ряд сайтов, на которые стоит обратить внимание: JAM DAT Mobile (http://www.jamdat.com) и MFORMA (http://www.mforma.com/). Здесь вы найдете специальные разделы, посвященные мобильным играм, и Handango (http://www.handango.com/), который посвящен мобильным играм и прочим приложениям.
Вы уже знакомы с упаковкой мидлетов в JAR-файлы и созданием сопроводительных JAD-файлов. Но пока вы не научились создавать Web-станицы, содержащие ссылку на игру. Для создания таких страниц можно применить одно из двух средств: HTML или WML. Как вы, вероятно, знаете, HTML (HyperText Markup Language – Язык гипертекстовой разметки) – это стандартный язык, используемый для создания большинства Web-страниц. Однако большинство мобильных телефонов используют сокращенную версию HTML, известную как WML (Wireless Markup Language – Язык беспроводной разметки). WML идеально подходит для мобильных телефонов, поскольку он ограничивает интерфейс Web-страницы так, что его легче воспринять на экране мобильного телефона.
Совет Разработчику
После упаковки мидлета в JAR-файл вы можете сделать цифровую подпись мидлета в целях безопасности. Подписанные мидлеты считаются более безопасными, чем неподписанные, поскольку их поставщик (вы) подтвержден, и никто другой не мог испортить мидлет. Полезно подписывать мидлеты, прежде чем распространять их. К сожалению, вопрос подписи мидлетов не входит в рамки этой книги. Чтобы подробнее узнать о подписях мидлетов, я советую обратиться к руководству пользователя J2ME Wireless Toolkit.
Выбор языка для создания Web-страницы целиком зависит от телефонов, на которые рассчитана ваша игра. К счастью, создать страницу на каждом из языков очень просто. Ключевой элемент, необходимый для создания такой страницы, одинаковый – тег, открывающий доступ к JAD-/JAR-файлу. Ниже приведена строка кода:
<a href="http://localhost:2728/HighSeas2/bin/HighSeas2.jad">HighSeas2.jad</a>
Даже если вы не знакомы ни с HTML, ни с WML, приведенную строку кода понять несложно. В ней ссылка на игру связана с текстом HighSeas2.jad. В этом примере URL – это локальный адрес файла, о чем говорит слова localhost. На Web-странице, служащей для загрузки игры этот код будет выглядеть так:
<a href="http://www.stalefishlabs/games/HighSeas2.jad">HighSeas2.jad</a>
В этом коде показано, как с текстом HighSeas2.jad связана стандартная ссылка URL.
Код ссылки, обозначаемой тегом <a>, одинаков для HTML– и WML-страниц. В листинге 16.2 приведена HTML-версия страницы загрузки High Seas 2, а в листинге 16.3 – WML-версия.
Листинг 16.2 HTML-страница HighSeas2.html содержит ссылку для загрузки JAD-файла игры High Seas 2
<html>
<head>
<title>HighSeas2</title>
</head>
<body>
<ahref="http://localhost:2728/HighSeas2/bin/HighSeas2.jad">HigsSeas2.jad</a>
</body>
</html>
Листинг 16.3. WML-страница HighSeas2.wml содержит ссылку для загрузки JAD-файла игры High Seas 2
<wml>
<card id="High Seas 2" title= "High Seas 2 MIDlet">
<ahref="http://localhost:2728/HighSeas2/bin/HighSeas2.jad">HighSeas2.jad</a>
</card>
</wml>
Очень важно, чтобы вы поняли код, расположенный вне ссылки на JAD-файл. Помните, что URL-ссылка должна содержать абсолютное расположение файла на сервере.
Когда страница для загрузки игры создана, необходимо выполнить еще один шаг, чтобы игру можно было успешно загрузить по беспроводной сети. Внутри JAD-файла мидлета есть ссылка, например:
MIDlet-Jar-URL : HighSeas.jar
Здесь вы должны также указать полный путь к файлу мидлета. Предположим, что этот файл располагается в той же папке, что и JAD-файл в листингах 16.2, 16.3:
MIDlet-Jar-URL : http://localhost:2728/HighSeas2/bin/HighSeas2.jar
И снова здесь указан полный адрес расположения файла на сервере, а не локальный.
Теперь вы успешно можете подготовить ваш мидлет для распространения по сети. Если вы уже пытались загружать и устанавливать мидлеты по беспроводной сети, и обнаружили, что этот подход не работает, то проверьте настройки сервера. Давайте узнаем, что нужно исправить.
Чтобы браузер распознавал файлы JAR и JAD, необходимо, чтобы он их распознавал в соответствии с официальными типами MIME. MIME-тип – это распознаваемый тип файла, который помогает приложению определить действия, выполняемые с файлом. HTML, GIF, JPEG и прочие популярные форматы – все они имеют распознаваемые MIME-типы. Поскольку файлы JAR и JAD новы для браузеров и сети, ваш сервер, вероятно, не распознает их по MIME-типу. Поэтому вам необходимо сконфигурировать сервер:
► JAD-файлы – text/vnd.sun.j2me.app-descriptor;
► JAR-файлы – application/java-archive.
Реализация этих настроек полностью определяется используемым вами программным обеспечением. Если вы администрируете собственный сервер, обратитесь к документации. Если у сервера есть администратор, то спросите его, как зарегистрировать эти MIME-типы.
Тестирование OTA с помощью KToolbarНесмотря на то что перед непосредственным распространением игры вашей целью является тестирование распространения на реальных мобильном телефоне и сервере, есть способ имитировать процесс загрузки и установки. Приложение KToolbar, которое поставляется в составе J2ME Wireless Toolkit, позволяет запускать мидлет в режиме OTA. Мидлет загружается и устанавливается из локального файла, как будто он был загружен по беспроводной сети. Это очень полезная функция для тестирования установки мобильных игр, при этом нет необходимости использовать реальные телефон и сервер.
Чтобы запустить мидлет в режиме OTA, выполните следующие шаги:
1. скопируйте папку с игрой (например, HighSeas) в папку apps, расположенную внутри папки установки J2ME Wireless Toolkit;
2. из меню KToolbar выберите Project ==> Run via OTA (Проект ==> Запустить через OTA);
3. выполните шаги в эмуляторе, чтобы установить мидлет.
Первый шаг необходим, чтобы проект был доступен из приложения KToolbar. Второй шаг запускает эмулятор в режиме OTA, который имитирует загрузку игры по беспроводной сети. Последний шаг – это взаимодействие с Менеджером приложений телефона, который отвечает за установку игры.
После вводного экрана эмулятор выводит ряд опций, позволяющих установить мидлет. Далее в окне появится текстовое поле, в котором необходимо ввести URL загружаемого мидлета (рис. 16.1.). В данном случае страница загрузки создается автоматически.
Рис. 16.1. Эмулятор J2ME запускает режим OTA, отображая URL-страницы загрузки мидлета High Seas 2
После ввода URL страницы загрузки эмулятор загружает страницу мидлета и ищет ссылку. На рис. 16.2 показана Web-страница, загруженная в эмулятор.
Рис. 16.2. Эмулятор J2ME загружает Web-страницу, чтобы получить доступ к ссылке на JAD-/JAR-файлы
После того как JAD-файл мидлета High Seas 2 обнаружен, эмулятор J2ME отображает файл, который вы можете выбрать (рис. 16.3).
Рис. 16.3. Отображается ссылка на JAD-файл мидлета, вы можете его выбрать
Когда файл выделен, эмулятор загружает его и извлекает информацию о мидлете. На рис. 16.4 показан экран подтверждения установки High Seas 2, вы можете увидеть информацию о мидлете до окончания установки. Обратите внимание, что на экран выводятся размер JAR-файла (95Кб), версия мидлета и поставщик программного обеспечения.
Рис. 16.4. Экран подтверждения эмулятора отображает информацию о загружаемом и устанавливаемом мидлете
Если вы выберите пункт Install (Установить), чтобы продолжить установку мидлета, то появится экран установки (рис. 16.5).
Рис. 16.5. В эмуляторе на экране загрузки отображается прогресс загрузки мидлета
В случае успешной загрузки мидлета он будет занесен в список установленных приложений (рис. 16.6).
Рис. 16.6. Успешно установленный мидлет отображается в списке установленных приложений и готов к запуску
Из рисунка видно, что вы можете запустить приложение и начать игру. Вы также можете заметить, что в меню эмулятора видна опция Update (Обновить). Обновление мидлета похоже на установку, но оно выполняется только в том случае, если есть более новая версия мидлета. Если вы вспомните, то версия мидлета указывается в JAD-файле. Чтобы быстро узнать версию мидлета, достаточно просмотреть JAD-файл. Тем проще вам предлагать пользователям обновленные версии игр.
РезюмеЭта глава осветила очередные аспекты создания мобильных игр, которые позволят вам поставлять качественные игры жаждущим игрокам. Первая затронутая тема – отладка. Вы научились не только обнаруживать и устранять ошибки, но также получили ряд советов, как предотвратить появление ошибок. Затем вы перешли к изучению методов распространения мобильных игр – подготовке игр для загрузки и установки через беспроводное соединение. Несмотря на то что для подготовки игры требуется выполнить целый ряд шагов, вы увидели, что этот процесс весьма прост. Также вы узнали, как J2ME Wireless Toolkit позволяет имитировать установку игры по беспроводному соединению без использования мобильного телефона и сервера.
Следующая часть книги посвящена оптимизации игр. Вы получите советы по оптимизации, узнаете, как можно сохранить список рекордов и создадите игру жанра «космический шутер».
ЭкскурсияПора применить полученные знания на практике. То ли это ваша собственная игра, к разработке которой вы приступили, будь то один из примеров, приведенных в книге, – выберите игру и подготовьте ее к распространению через беспроводное соединение. Выполните шаги, описанные в этой главе и подготовьте игру к загрузке с Web-страницы. Теперь уйдите подальше от своего компьютера (можете даже отправиться на каникулы), но непременно возьмите с собой мобильный телефон. С помощью телефона перейдите на страничку с вашей игрой, загрузите и установите игру. Это позволит вам понять всю мощь и гибкость распространения игр через беспроводное соединение.
Часть V
Оптимизация игр
Глава 17
Оптимизация мобильных Java-игр
Архив Аркад
В 1983 году компания Midway выпустила, несомненно, самую известную шпионскую игру Spy Hunter. В игре ваш герой – секретный агент, похожий на Джеймса Бонда. Он управляет автомобилем или катером, оснащенными всевозможным оружием. Вид в игре – сверху, но стрельба в плохих ребят – это задача, сравнимая с погоней за ними. Название главного автомобиля – G-6155 – дань разработчику игры, Джоржу Гомесу (George Gomez), а цифры – дата его рождения. В раннем прототипе игры использовалась музыкальная тема из фильма про Джеймса Бонда, но в конечном варианте она была заменена на тему Питера Гунна (Peter Gunn) из-за проблем с авторскими правами.
Вы знаете, что мобильные телефоны имеют ограничения памяти и мощности процессора. Несомненно, за последние годы эти устройства претерпели массу изменений, но и на сегодняшний день их возможности нельзя сравнить с возможностями персонального компьютера или игровой консоли. Поэтому вы должны разрабатывать игры и создавать код, постоянно осознавая технические ограничения. К счастью, MIDP API помогает вам создавать эффективный код мидлетов, поскольку сам API оптимизирован для применения в мобильных устройствах. Стратегии оптимизации, о которых пойдет речь в этой главе, включают специфические MIDP-оптимизации, а также оптимизации Java и кода, применяемые при разработке мобильных игр.
В этой главе вы изучите:
► основы оптимизации мобильных игр;
► различные методы оптимизации мобильных игр;
► приемы написания оптимального кода Java;
► как использовать анализатор для изоляции и оптимизации кода;
► как отслеживать расход памяти создаваемого приложения.
Понятие об оптимизации мобильных игрБольшинство мобильных телефонов имеют значительно меньшие вычислительные способности по сравнению с настольными компьютерами, игровыми консолями и даже карманными компьютерами. Обычно это не является проблемой, поскольку такие устройства призваны выполнять весьма обыденные функции. Однако в этой книге речь идет о разработке игр для мобильных телефонов, которые, как известно, весьма требовательны к ресурсам процессора и памяти. Очень непросто разработать хорошую игру для устройства, обладающего столь небольшими ресурсами, как мобильный телефон. Оптимизация – это одна из ключевых стратегий, которую используют разработчики мобильных игр, пытаясь преодолеть ограничения.
Хорошо или плохо, но Java – очень гибкий язык программирования. Вы можете создать «тяжелый», неэффективный код даже в такой эффективной среде, как J2ME. Кроме того, даже если ваш код достаточно эффективен, дизайн игры может оказаться неэффективным, что приведет к снижению производительности. Например, вы можете обрабатывать намного больше данных, чем позволяют ограничения мобильного телефона, или искусственный интеллект игры выполняет сложные расчеты, которые не подходят для устройства со столь малыми вычислительными способностями. Любой может попытаться включить в мобильные игры возможности игр для персональных компьютеров или игровых консолей, но это неправильно.
Вы должны делать все возможное, чтобы создать оптимизированные мидлеты, то есть эффективные мидлеты, минимально требовательные к ресурсам устройства. Очевидно, существуют ограничения, насколько можно оптимизировать мидлет. В реальности мобильные сетевые подключения имеют невысокую скорость, поэтому сетевые мидлеты будут работать медленнее несетевых. Означает ли это, что вы не должны разрабатывать сетевые игры? Если вспомнить предыдущий раздел книги, то ответ очевиден – нет. Однако вы должны попытаться минимизировать объем данных, передаваемых по беспроводной сети, чтобы уменьшить влияние эффектов сравнительно низкой пропускной способности сети.
Существует несколько подходов к оптимизации, некоторые из которых значительно более важны для программирования мобильных игр, чем другие. Ниже приведены основные аспекты мидлета, на которые следует обращать особое внимание при выполнении оптимизации:
► восстанавливаемость;
► переносимость;
► размер;
► скорость.
Наименее важный тип оптимизации мобильных игр – это оптимизация по восстанавливаемости, которая подразумевает принятие мер по созданию более легко управляемого кода, который можно использовать в будущем. Этот тип оптимизации как правило направлен на структуризацию и организацию кода, а не на модификацию применяемых алгоритмов. Вообще говоря, при оптимизации по восстанавливаемости изучается код игры, и вносятся изменения, чтобы помочь другим программистам понять и изменить ее код в будущем.
В большинстве случаев оптимизация по восстанавливаемости ведется в ущерб другим типам оптимизации, поскольку она сосредоточена на понимании и организации кода, а не на оптимизации по размеру и скорости. Поэтому такая оптимизация не занимает первых позиций в списке важных оптимизаций, применяемых разработчиками мобильных игр. Конечно, важно организовать код, соблюдать некоторую структуру и документировать код, но не ставьте это определяющим фактором. Игроки никогда не узнают, насколько элегантен или хорошо документирован ваш код, убедитесь, что в игру можно играть, перед тем как тратить время на его оформление.
В копилку Игрока
Несмотря на то что я принизил значимость оптимизации по восстанавливаемости, я ни в коем случае не призываю вас идти против организации и документирования кода. Помните, что если вы создаете успешную игру, вероятно, вы захотите создать продолжение, чтобы закрепить успех. Чем тщательнее и лучше документирован код, тем проще вам будет создавать игры на основе существующего кода.
Подобно оптимизации мобильных игр по восстанавливаемости, оптимизация по переносимости имеет дело с упрощением разработки кода, нежели с увеличением производительности. Под переносимостью я понимаю возможность установки игры на различных моделях сотовых телефонов. Как вы, вероятно, знаете, аппаратное обеспечение мобильных телефонов значительно варьируется от одной модели к другой, а следовательно, может и значительно влиять на работу игры. Возможно, еще более важны значительные вариации размеров экрана мобильных устройств, что зачастую влечет необходимость доработки игровой графики.
Чтобы оптимизировать мобильную игру по переносимости, вы должны четко определить основные отличия между телефонами, на которые рассчитана ваша игра. Например, вы могли бы определить, что процессоры у ряда телефонов практически одинаковы, а размеры экранов и доступной памяти варьируются значительно. В этом случае вы должны сосредоточиться на масштабировании графики, а также предусмотреть ряд настроек для телефонов с меньшим объемом памяти.
Совет Разработчику
Один из способов сделать игровую графику более переносимой – это использовать графические примитивы (линии, прямоугольники, эллипсы и т. п.), а не растровые изображения. Графические примитивы легко масштабировать, в то время как изображения приходится масштабировать в графическом редакторе, чтобы сохранить качество. Графические примитивы хорошо подходят, если вы создаете аналог классической векторной аркады, например, Battlezone или Asteroids.
Цель оптимизации по переносимости – избежать необходимости переделывать большую часть кода, чтобы игру было возможно запустить на другой модели телефона. Предвидя возможные отличия моделей телефонов и планируя игру, вы можете создавать переносимый игровой код, в котором необходимо выполнить минимальные графические изменения для установки на различных моделях телефонов.
Совет Разработчику
Из главы 3 вы узнали, как определить размер экрана и число поддерживаемых цветов. Используя эту информацию, вы можете разрабатывать игры, которые изменяются в соответствии с возможностями конкретного мобильного телефона. Это можно реализовать не для всех игр, однако такой подход хорошо работает для тех, в которых используются примитивы и растровые изображения, не нуждающиеся в масштабировании. Игра Connect 4, разработанная в главе 15 – хороший пример такой игры.
Правообладателям!
Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.