Создание игр для мобильных телефонов - Майкл Моррисон
Шрифт:
Интервал:
Закладка:
Резюме
Эта глава осветила очередные аспекты создания мобильных игр, которые позволят вам поставлять качественные игры жаждущим игрокам. Первая затронутая тема – отладка. Вы научились не только обнаруживать и устранять ошибки, но также получили ряд советов, как предотвратить появление ошибок. Затем вы перешли к изучению методов распространения мобильных игр – подготовке игр для загрузки и установки через беспроводное соединение. Несмотря на то что для подготовки игры требуется выполнить целый ряд шагов, вы увидели, что этот процесс весьма прост. Также вы узнали, как 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.