Майкл Моррисон - Создание игр для мобильных телефонов
В этой главе вы узнаете:
► об основах разработки игр;
► как использовать J2ME для создания мобильных игр;
► как применять инструмент KToolbar для построения и тестирования мобильных игр;
► как с помощью эмулятора J2ME можно имитировать реальные мобильные телефоны.
Основы разработки игр
Перед тем как мы начнем изучать J2ME Wireless Toolkit и его использование для построения и тестирования мобильных Java-игр, полезно узнать об основах разработки игр. У вас есть идеи о том, какую игру написать? Если так, то вы, вероятно, уже осознали, что идея – это самая простая часть процесса создания игры. Разработка концепции игры и ее реализация – для многих из нас очень сложное занятие. Но ничего страшного, всему свое время, прежде надо продумать процесс создания игры.
Первый шаг на пути от концепции игры к ее реализации – четко ответить на вопрос, что вы хотите получить в результате. При этом не нужно все детализировать с точностью до отдельных сцен, существ и действий. Необходимо сформулировать несколько основополагающих принципов – цель и финал игры. Ниже представлены основные моменты, которые вы должны продумать, приступая к разработке игры:
► основная идея;
► режимы игры.
► сюжетная линия;
Основная идея
Первое, что вы должны сделать, – это определиться с основной идеей вашей игры. Вы хотите создать «стрелялку», лабиринт, ролевую игру или что-то среднее? Или вы придумали игру, которую нельзя отнести ни к одной из этих категорий? Цель игры – уничтожить плохих парней, спасти хороших или просто исследовать неизвестные миры? Как долго будет длиться ваша игра, или, может быть, она будет бесконечной? В любом случае, фиксируйте все мысли, поскольку идеи приходят и уходят, было бы плохо упустить что-либо. Фиксируя идеи, вы больше начинаете думать об игре и представлять ее более детально.
Если вы испытываете трудности с идеей игры, вспомните существующие компьютерные игры. Многие из них основаны на фильмах, исторических событиях или спорте. Очевидно, что компьютерные игры – это модели окружающего нас мира, неважно – фантастического или реального, поэтому старайтесь придерживаться этого принципа, создавая свою игру. Фильмы могут дать множество идей для отдельных сцен и сюжетной линии. Просто помните, что многие фильмы послужили основой для ряда коммерческих видеоигр. По этой причине вы должны воспринимать фильмы, как кладезь идей и концепций, а не как сценарий для игры.
...В копилку Игрока
В настоящее время есть несколько случаев, когда компьютерная игра послужила основой для создания фильма. Как пример можно привести фильмы Mortal Combat («Смертельная схватка»), Final Fantasy («Последняя фантазия») и Resident Evil («Обитель зла»).
Вне зависимости от ваших предпочтений, помните, что игра должна развлекать. На самом деле я думаю, что именно это делает компьютерные игры столь привлекательными для программистов. Главная цель игры – максимум развлечения. Кто не хотел бы проводить целые дни в мыслях о том, как развлечься? Если ваша игра не доставляет радости, то ей не помогут ни великолепная графика, ни потрясающий звук. Я стараюсь показать, что при разработке игры главное – это доставить максимальное удовольствие пользователю. После того как вы сформировали основную идею игры и решили во что бы то ни стало сделать ее максимально захватывающей, пора переходить к проработке сюжетной линии.
Разработка сюжетной линии
Даже если вы создаете игру в стиле «экшн», разрабатывая сюжетную линию, вы сможете более четко представить ландшафт и существ, населяющих ваш мир. Помещая игру в контекст истории, вы переносите игрока в свой мир. Для игр, в которых история является неотъемлемой частью, часто полезно дополнять сюжетную линию историческими справками, которые описывают историю от сцены к сцене. Исторические справки помогают создать визуальный план всей игры, основанный на истории. Такие справки помогут избежать отклонения от основной сюжетной линии при разработке игры.
Режимы игры
Последнее, что вы должны сделать на начальной стадии разработки игры, – это понять, какие режимы игр вы будете поддерживать. Вы хотите создать игру для одного, двух игроков, сетевую игру или некую комбинацию? Вероятно, такое решение может показаться чересчур простым, однако именно оно может оказать существенное влияние на логику игры в дальнейшем. Несмотря на то что Java предлагает значительную поддержку сетей, разработка сетевых игр обычно очень сложное занятие.
С другой стороны, многие игры, рассчитанные на одного игрока, требуют более сильного искусственного интеллекта, чтобы компьютер мог оказывать мощное сопротивление игроку. Создание искусственного интеллекта – задача не из легких, поэтому вам необходимо оценить свои силы и, прежде чем приступить к работе, выбрать режим игры. В главе 13 вы познакомитесь с принципами создания искусственного интеллекта.
Пример разработки игры на J2ME
Как и создание любой другой игры, разработка игр на J2ME требует разнообразных средств компиляции и тестирования. Откомпилированные на Java классы должны пройти процесс предварительной верификации, который необходим для проверки кода на соответствие ограничениям безопасности J2ME. Также игры, написанные на J2ME, требуют среду для тестирования, аналогичную реальному мобильному телефону. Конечно, всегда необходимо тестировать игры и на реальных телефонах, но прежде целесообразно делать это в эмуляторе, а уж затем переходить к реальным устройствам. Стандартный компилятор Java используется для построения игр, а затем на передний план выходят другие инструменты разработки.
...В копилку Игрока
Стандартный компилятор Java входит в состав пакета Java Software Development Kit (SDK), который можно бесплатно загрузить с Web-сайта Sum Microsystems (http://javasun.com/). Также там вы найдете и J2ME Wireless Toolkit, необходимый для разработки игр на Java.
Приложения, написанные с использованием J2ME, в соответствии со спецификацией MIDP называются мидлеты (MIDlet). Поэтому любая игра, созданная на J2ME, является мидлетами. Классы мидлетов хранятся в файлах байт-кода с расширением. class. Однако перед распространением классы должны быть проверены, чтобы гарантировать невыполнение запрещенных операций. Дело в том, что эта предварительная проверка необходима вследствие ограничений виртуальной машины, используемой в мобильных устройствах. Эта виртуальная машина называется K Virtual Machine, или KVM. Чтобы KVM была как можно меньше и эффективнее, необходимо минимизировать число верификаций, выполняемых во время выполнения приложения. Поэтому некоторые из этих верификаций выполняются еще на стадии разработки в процессе предварительной верификации.
...В копилку Игрока
Название KVM также имеет отношение к требованиям виртуальной машины к ресурсам: KVM необходимы килобайты памяти, а не мегабайты. Иначе говоря, KVM разработана так, чтобы она помещалась в килобайтах памяти, в отличие от виртуальной машины J2SE, которой могут потребоваться мегабайты.
Предварительная верификация выполняется непосредственно после компиляции, ее результатом является новый файл класса, который уже проверен и готов к распространению. Мидлеты (MIDlet) должны быть упакованы в специальные архивы JAR (Java Archive – архив Java), они очень похожи на ZIP-архивы, которые вы, вероятно, использовали для сжатия больших файлов. Мидлеты (MIDlet) также требуют дополнительного описания, которое включается в JAR-файл. Ниже перечислена основная информация, обычно включаемая в архив JAR:
► классы мидлета;
► вспомогательные классы;
► ресурсы (изображения, звуки и т. п.);
► файлы манифестов (.mf);
► дескриптор приложения (.jad).
...В копилку Игрока
Файлы JAR используются для упаковки Java-классов и последующего более эффективного распространения. Файл манифеста – это текстовый файл с описанием классов, включенных в JAR-архив.
Дескриптор приложения, файл JAD, – это файл, в котором содержится описание мидлетов, хранящихся в файле JAR. Обратите внимание, что я сказал «мидлеты» (множественное число). Да, зачастую в файле JAR хранится несколько мидлетов. Такой набор мидлетов называется пакетом мидлетов (MIDlet suit). В случае мобильных игр вам, вероятно, захочется предложить несколько игр в качестве единого продукта (например, набор простейших игр), в этом случае вам придется поместить все игры в один файл JAR.
В основе пакетов мидлетов лежит идея одновременного использования несколькими приложениями доступных ресурсов мобильного устройства. KVM-устройства необходимы для обеспечения навигации и выбора конкретного мидлета из пакета. Файл JAD, включенный в JAR-файл, очень полезен, поскольку в нем содержится информация, необходимая для установки и доступа к конкретному мидлету.