Создание игр для мобильных телефонов - Майкл Моррисон
Шрифт:
Интервал:
Закладка:
Другая вкладка в мониторе памяти – это вкладка Objects (Объекты), которая отображает информацию об объектах в памяти. На рис. 17.8 показаны данные о памяти для игры Henway.
Рис. 17.8. Вкладка Objects в мониторе памяти дает детальный обзор объектов мобильной игры в памятиВ панели слева на вкладке Objects (Объекты) перечислены все объекты игрового мидлета, находящиеся в памяти. В данном случае это объекты игры Henway. Ниже приведены назначения каждой из колонок списка объектов:
► Name (имя) – полное имя объекта;
► Live (активный) – число активных объектов в памяти;
► Total (всего) – общее число объектов в памяти;
► Total size (общий объем) – полный объем памяти, занимаемый объектами;
► Average size (средний размер) – средний размер одного объекта (в байтах).
Используя эту информацию, вы сможете узнать, какие объекты находятся в памяти в любой момент времени, а также каков объем используемой объектами памяти. Помните, что в мобильных играх процесс создания и удаления объектов требует времени, поэтому по возможности старайтесь повторно использовать объекты. Вы можете сравнить общее число объектов с числом активных объектов и понять, сколько объектов хранится в памяти между очистками мусора. В идеале эти два числа должны совпадать, что означает, что в памяти нет незадействованных объектов....Совет Разработчику
Несмотря на то что монитор памяти может быть очень полезным в анализе требований мидлета к памяти, в реальном мобильном телефоне все может обстоять иначе – управление памятью может отличаться от того, как это имитируется в J2ME-эмуляторе. Но даже в этом случае монитор памяти очень полезен для создания общей картины работы мидлета с памятью.
Выполнение оптимизации мобильных игр
У вас уже есть представление об оптимизации мобильных игр и приемах оптимизации кода мидлета. Теперь пора подойти к глобальному понятию важности оптимизации мобильных игр. В дополнение к тому, что вы разрабатываете достаточно эффективные мидлеты, нетребовательные к памяти, важно применять описанные выше стратегии оптимизации. Я не советую уделять очень много внимания оптимизации по скорости, пока вы не поймете, что мидлет работает действительно медленно. Иначе говоря, всегда хорошо снизить размер мидлета и объем используемой им памяти, однако не усложняйте код, выполняя оптимизацию по скорости, если только это действительно необходимо.
Последний вопрос, касающийся оптимизации мобильных игр, заключается в анализе необходимости. Если вы изучите код примеров, приводимых в книге, то не найдете специальной оптимизации. Оптимизация усложняет код, а цель этой книги – научить вас, как работает игровой код. Поэтому не думайте, что я – лентяй или ханжа, когда увидите, что большинство кода не оптимизировано. Я применил оптимизацию при разработке мидлетов. Вы увидите, что все мидлеты, приведенные в этой книге, сравнительно просты и нетребовательны, что и является лучшей оптимизацией.
Резюме
В этой главе я сделал отступление от программирования, которым мы занимались в предыдущих главах, и затронул интересный вопрос, касающийся мобильных игр, оптимизацию. Есть несколько аспектов оптимизации мидлетов, влияющих на разработку и программирование, но, несомненно, оптимизация в некотором смысле является важнейшим моментом работы разработчика игр. Эта глава началась с рассмотрения основ оптимизации и ее применения к мобильным играм. Затем вы познакомились с основными стратегиями оптимизации, которые помогут сделать мидлеты меньше и менее требовательными к памяти. Затем вы перешли к изучению особых приемов оптимизации Java-кода, позволяющие ускорить выполнение кода мидлета. Наконец, глава завершилась обзором анализа кода и мониторинга памяти, которые играют очень важную роль при выполнении оптимизации.
В следующей главе вы снова окунетесь в программирование мобильной игры. Вы пройдете весь путь разработки еще одного мидлета. Эта игра называется Space Out, которая очень похожа на классический космический шутер Space Invaders.
В заключение
Почти в самом конце главы я упомянул, что не уделял особого внимания оптимизации приводимых в книге мидлетов. Это вовсе не означает, что код примеров неэффективен, а лишь говорит о том, что я не сделал мидлеты максимально быстродействующими. Значительную оптимизацию размера можно провести для игры High Seas, в которой используется спрайт пиратского корабля, состоящий из четырех фреймов.
В этой главе я рассказал, как вы могли бы сократить число фреймов корабля до одного, используя преобразования спрайтов для динамического создания недостающих фреймов. Ниже приведены шаги, которые необходимо выполнить, чтобы уменьшить изображение пиратского корабля на 75 %:
1. отредактируйте изображение пиратского корабля, чтобы остался лишь один фрейм;
2. в методе update() игрового холста в ответ на нажатия клавиш вместо смены фрейма выполните трансформацию спрайта.
Ого! Как все просто! На самом деле это так просто, что вы без проблем можете выполнить аналогичную оптимизацию для большого пиратского судна. Однако фреймы этого спрайта изменяются в классе DriftSprite, поэтому вам придется поработать с методами этого класса.
Глава 18 Space Out: дань игре Space Invaders
...Архив Аркад
Выпущенная в 1985 году компанией Capcom, игра Ghosts 'n Goblins (Призраки и гоблины) на тему праздника Хеллоуин (Halloween) стала чрезвычайно популярной благодаря своей трудности. Я сам много играл в эту игру, поскольку это была любимая игра моего старого друга, моего наставника в программировании игр Рэнди Вимса (Randy Weems), который со временем приобрел эту аркаду себе домой. В игре ваш герой – рыцарь по имени Артур, который должен спасти принцессу Гиневру (Guinevere) от злых зомби, летучих мышей, демонов и призраков. В игре есть множество приемов и трюков. Так, например, если вы 15 раз выстрелите в надгробие, то появится демон, который превратит вас в лягушку.
В этой главе вы снова окунетесь в процесс разработки мобильной игры. Эта игра называется Space Out, в ней вы примените все, что узнали о программировании мобильных игр в этой книге. Игра Space Out – это вертикальный шутер, который очень похож на классическую аркаду Space Invaders. Пришельцы в этой игре, конечно, отличаются от пришельцев игры Space Invaders – они движутся намного быстрее и хаотичнее. Независимо от того, являетесь ли вы поклонником игры Space Invaders, я думаю, что игра Space Out будет хорошей мобильной игрой как с точки зрения разработки, так и с точки зрения самой игры.
В этой главе вы узнаете:
► об основах игры Space Out;
► как разработать игру Space Out;
► как разработать специальный класс движущихся спрайтов;
► об основных элементах программирования игры Space Out;
► о том, что тестирование – это один из самых веселых этапов создания игры.
Взгляд на игру Space Out
Один из классических жанров – это вертикальный космический шутер. Все началось с игры Space Invaders, выпущенной в 1978 году, затем многие игры повторяли ее, внося свои особенности. Один из самых интересных вертикальных шутеров – Galaga. В этой игре нескончаемые полчища пришельцев движутся на вас с верхней части экрана и атакуют ваш корабль, который может свободно перемещаться вдоль нижней части экрана. Игра Space Out, которую вы разработаете в этой главе, основана на играх Space Invaders и Galaga, хотя тема игры несколько фантастичнее.
В игре Space Out вы управляете маленьким зеленым автомобилем, который едет по дороге в пустыне. Верите ли вы в НЛО или нет, сложно спорить, что в пустыне трудно увидеть какие-либо достопримечательности. Поэтому ваш путешественник не стремится укрыться от постоянных нападений НЛО. К сожалению, НЛО в игре Space Out стремятся как можно быстрее прервать ваше путешествие. Движения пришельцев в игре Space Out очень комичны и делают игру забавнее. Ниже приведены три типа пришельцев, появляющихся в игре:
► галактические слизняки Bolbbo (Blobbo the Galactic Ooze);
► джеллибиафры, или просто Джелли (Jellybiafra);
► космический червяк Тимми (Timmy the Space Worm).
Конечно, эти пришельцы не очень реалистичны, а, скорее, комичны. Каждый пришелец имеет свой стиль движений, атаки и вид пускаемой ракеты. Идея заключается не в имитации реалистичного вторжения пришельцев, а в создании веселого вертикального шутера. В продолжение комичной темы, ваш герой стреляет не ракетами, а пирожными Twinkies.
...В копилку Игрока
Герои и концепция игры Space Out были созданы Ребеккой Роуз (Rebecca Rose), компьютерным художником и разработчиком игр.
Разработка игры
Теперь, когда вам ясна основная идея игры, давайте рассмотрим ряд деталей, касающихся ее дизайна. Игрок может перемещаться горизонтально вдоль игрового экрана – это означает, что его положение привязано к оси X.
Игрок может стрелять вверх пирожными-ракетами, долетающими до верхней части экрана.