Создание игр для мобильных телефонов Моррисон Майкл

Об авторе

Майкл Моррисон (Michael Morrison) – разработчик и создатель игр, а также автор различных книг по компьютерным технологиям и интерактивных курсов в Internet. Кроме своей основной профессии писателя и фрилансера, Майкл является креативным директором компании Stalefish Labs, развлекательной компании, которую он основал вместе со своей женой Машид (Masheed). Коммерческим дебютом этой компании была игра Tall Tales: The Game of Legend and Creative One-Upmanship (http://www.talltalesgames.com/). Когда Майкл не сидит за компьютером, не играет в хоккей, не катается на скейтборде и не смотрит фильмы со своей женой, он любит гулять у пруда. Вы можете посетить сайт Майкла в Internet (http://www.michaelmorrison.com/).

Посвящение

Моему давнему другу Рэнди Вимсу (Randy Weems), который научил меня почти всему, что я знаю о программировании игр, и помог разработать мою первую игру для мобильного телефона. Мы потратили на это целую ночь почти 15 лет назад.

Благодарность

Спасибо Майку Стефенсу (Mike Stephens), Лоретте Ятс (Loretta Yates), Марку Ренфроу (Mark Renfrow) и другим замечательным людям из компании Sams Publishing House за то, что они превратили работу над этой книгой в интересный опыт. Также хочу выразить огромную благодарность моему другу и жене Машид за поддержку.

Мы хотим услышать вас

Как читатель этой книги вы – самый важный критик и рецензент. Мы ценим ваше мнение и хотим знать – что делаем правильно, а что, с вашей точки зрения, можно улучшить, какие разделы мы должны еще осветить или рассмотреть более полно.

Как издатель Sams Publishing я жду ваших комментариев. Вы можете отправить мне электронное или обычное письмо, рассказать, что вам понравилось в книге, а что нет, а также поделиться мнением о том, как мы можем сделать наши книги лучше.

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

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

Электронная почта: [email protected]

Почтовый адрес: Michael Stephens,

Associate Publisher,

Sams Publishing,

800 East 96th street,

Indianapolis, IN 46240 USA

Поддержка книги

Если вы хотите узнать больше об этом и других изданиях Sams Publishing, посетите наш Web-сайт (www.samspublishing.com). В поле Search (Поиск) введите ISBN (0672326655) или название книги, которую вы ищете.

Введение

Итак, я сижу в кресле стоматолога, жду, пока подействует укол новокаина и мне запломбируют коренной канал. Внезапно ко мне приходит мысль, что я могу потратить это время с куда большей пользой, чем просто ждать. Хотя стоматологическое кресло и слюнявчик ограничивают свободу действий, они не смогут помешать мне сразиться с несколькими сотнями моих близких друзей и заклятых врагов. Быстрым движением руки я достаю из кармана мобильный телефон, поддерживающий Java, и запускаю игру, которая поможет мне не думать об устрашающих инструментах дантиста.

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

Хотя логично объединить в одну группу мобильные телефоны и другие типы переносных устройств (Palm Plot, Pocket PC и Game Boy), в этой книге рассматривается вопрос программирования игр именно для мобильных телефонов. Я не против других устройств, однако ни одно из них не получило столь широкое распространение. Вспомните хотя бы пятерых ваших знакомых и посчитайте, сколько у них сотовых телефонов. Если ответ меньше, чем 4, то дайте им еще пару лет. Вне зависимости от того, смогла ли убедить вас моя речь, мобильные телефоны завоевывают мир с огромной скоростью, и она постоянно увеличивается!

Итак, обладатели персональных коммуникаторов (мобильных телефонов) используют их главным образом для общения друг с другом. Но в наше время появляются новые технологии, которые помогут расширить границы их применения. Технологии, подобные Java, наделяют мобильные телефоны практически теми же возможностями, которыми обладают настольные компьютеры. Совместите это со способностью всех мобильных телефонов поддерживать работу с беспроводными сетями, и вы получите уникальное устройство: широко распространенное, компактное, переносное, работающее с сетями, программируемое – просто мечта для создателя игр!

Я бы солгал, если сказал бы, что программирование игр для мобильных телефонов уже хорошо развито. Технологии новы, а модели телефонов, поддерживающие их, еще более новы. Но, как вы, вероятно, знаете, чтобы быть в курсе новых технологий, нужно быть на шаг впереди них. Учась разрабатывать и создавать игры для мобильных телефонов по мере развития этой сферы, вы сможете в большей степени пользоваться открывающимися возможностями. Игра ли это, которой вы хотите поделиться с друзьями и родственниками, новый хит в среде коммерческих игр, который обеспечит вам место в зале славы создателей игр, – в любом случае в этой книге вы найдете все, что нужно для начала работы. На рис. 1 показан пример игры, которую вы создадите, пользуясь этой книгой.

Рис.0 Создание игр для мобильных телефонов

Рис. 1. Игра Henway очень похожа на классическую аркаду Frogger

Игра Henway, показанная на рис. 1, очень похожа на классическую аркаду Frogger. Если вам не по душе переводить цыпленка через дорогу, вас, вероятно, привлечет другая игра – High Seas (рис. 2).

Рис.1 Создание игр для мобильных телефонов

Рис. 2. Игра High Seas впитала все преимущества перемещающегося фона и «интеллектуальных» компьютерных врагов

High Seas – это игра, в которой вы бороздите морские просторы и спасаетесь от пиратов, избегаете спрутов, плавающих мин и большого корабля пиратов. И это только две игры из пяти, которые вы создадите, работая с книгой. Пусть остальные игры станут для вас сюрпризом!

Для написания игр для мобильных телефонов в этой книге отдано предпочтение языку программирования Java, и для этого есть причина. Я более подробно рассмотрю этот вопрос в главе 1, но если говорить коротко, Java – это доминирующий инструмент разработки игр в настоящее время и в обозримом будущем. Если вы не знаток Java, то на прилагаемом компакт-диске можно найти программу обучения этому языку программирования, «Java Programming Primer». Вне зависимости от того, как вы относитесь к Java в настоящее время, думаю, что к концу прочтения книги, вы согласитесь, что это идеальная технология для разработки игр для мобильных телефонов.

Меня часто спрашивают, какой мобильный телефон я использую для отладки игр. Я отвечаю, что огромный, который лежит на моем столе. Я говорю о своем настольном компьютере, который значительную часть времени я использую в качестве эмулятора мобильного телефона. На сегодняшний день на рынке так много телефонных аппаратов, а новые модели появляются настолько часто, что было бы невозможно порекомендовать какую-то определенную модель, не перенося сроки издания этой книги. Поэтому я советую использовать эмулятор Java, входящий в состав J2ME Wireless Toolkit, который вы можете найти на сопроводительном CD. Конечно, вы наверняка захотите протестировать созданные игры и на реальном сотовом телефоне, но вы оцените, насколько удобно применять эмулятор.

Так же, как и программирование игр для настольных компьютеров и консольных систем, создание игр для мобильных телефонов – дело непростое. Вам придется использовать и комбинировать различные приемы и методы программирования, не забывая и про хорошую порцию креативного мышления. Именно сочетание креативного мышления и технических навыков делает программирование игр столь притягательным. Добавьте к этому еще необходимость создания игры на миниатюрном устройстве, имеющем беспроводное соединение с сетью, и вы получите рецепт «техновеселья»!

Как построена эта книга

Эта книга разделена на пять частей, каждая из которых затрагивает различные вопросы программирования игр:

Часть I: «Основы программирования игр для мобильных телефонов». В этой части вы познакомитесь с основами разработки мобильных игр на основе языка Java и познакомитесь с J2ME Wireless Toolkit. Вы создадите «скелет» игры для мобильного телефона, который будете впоследствии использовать при работе с книгой для написания остальных игр, протестируете созданную игру с помощью эмулятора мобильного телефона Java.

Часть II: «Специфика создания мобильных игр». В этой части книги вы научитесь использовать графику в мобильных играх, создавать изображения. Вы также узнаете об анимации с использованием спрайтов (спрайт – небольшое изображение, переносимое по экрану независимо от других. – Прим. перев.). Этот метод создания анимации является основным приемом программирования Вы также разработаете две игры: Henway и Cat Catcher. Примечательно, что в этой части книги рассматриваются игры, героями которых являются животные. Не волнуйтесь, чуть позже мы доберемся до пиратов и пришельцев.

Часть III: «Виртуальные миры и интеллектуальные мобильные игры».

Эта часть познакомит вас с применением слоев и их использованием для создания игр с перекрывающимися объектами. Вы познакомитесь с основами создания Искусственного Интеллекта (ИИ), узнаете, почему он столь важен для игр. Тема ИИ очень сложна, поэтому я обращу ваше внимание лишь на основные и несложные приемы, которые вы сможете воплотить в своих играх. Также в эту части книги включено создание еще одной игры, High Seas, в которой вы будете бороздить морские просторы и сражаться с пиратами и морскими чудовищами.

Часть IV: «Преимущества беспроводной сети». В этой главе вы узнаете, как использовать главную возможность мобильного телефона – беспроводную сеть. Научившись основам сетевого программирования игр, вы создадите игру NetConnect4 – сетевой аналог популярной игры Connect4. А затем вы разработаете и создадите игру Mad Plumber, в которой вам придется соревноваться с противником в скоростной прокладке водопроводных труб.

Часть V: «Совершенствование игр». Из этой главы вы почерпнете ряд интересных приемов программирования игр, которые помогут вам сделать игры как можно более красивыми. Также вы узнаете, как создавать и сохранять в телефоне список лучших игроков. В этой части книги вы создадите еще одну игру, Space Out, – космическую «стрелялку», для разработки которой вам потребуется применить все знания, полученные при работе с предыдущими частями.

Что вам потребуется

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

Все примеры, рассматриваемые в книге, вы можете найти на прилагаемом CD, включая командные файлы, используемые в командной строке J2ME Wireless Toolkit для построения и запуска игр. Пакет J2ME Wireless Toolkit вы также можете найти на сопроводительном компакт-диске. Как я уже упоминал, в составе пакета J2ME Wireless Toolkit вы также найдете инструмент KToolbar, который чрезвычайно полезен для создания и тестирования примеров. Все примеры в книге разработаны так, что их можно легко открыть, откомпилировать и эмулировать с помощью KToolbar.

Помимо некоторых знаний Java, вм потребуется ясный ум и немного творческого подхода, чтобы достичь лучшего результата от работы с книгой. Эта книга послужит вам отправной точкой в увлекательном путешествии в мир создания игр для мобильных телефонов. И если вдруг вы собьетесь с пути, причальте на мой сайт, http://www.michaelmorrison.com/! Здесь, в форуме, посвященном книге, вы, вероятно, сможете найти ответы на мои вопросы. Веселитесь!

Часть I

Основы программирования игр для мобильных телефонов

Глава 1

История электронных игр

Архив Аркад

Выпущенная в 1971 компанией Nutting Associates игра Computer Space заслуженно называется первой аркадой. Эта игра была создана Ноланом Бушнеллом (Nolan Bushnell). Годом позже он основал собственную компанию Antari и продолжил разжигать революцию в мире компьютерных игр, создав Pong. Computer Space – очень простая игра, но ее физическая и электрическая реализации послужили основой для всех последующих аркад. В автомате монеты складывались в покрашенную консервную банку – этот элемент конструкции не был повторен в дальнейшем! Игру Computer Space можно увидеть в классическом фильме 1975 года «Челюсти», в сцене, где эта аркада находится рядом с пляжем.

Обращаясь к прошлому, по крайней мере, к ранним 80-м, когда были популярны спортивные электронные игры, мобильные игры – не новинка. Наиболее распространенная современная электронная игровая система – Nintendo Game Boy – претерпела ряд модификаций, но осталась популярной по сей день. Мобильные компьютерные игры всегда уступали своим «полноценным» вариантам, главным образом потому, что сложно уместить большую производительность в маленьком приборе. Но положение стремительно изменяется, последние модели переносных компьютеров и мобильных телефонов показали, что теперь настоящая вычислительная мощь может поместиться и в ваш карман. С ростом производительности карманных систем увеличились возможности разработчиков игр для мобильных телефонов. Как создателю мобильных игр вам очень важно понимать инструменты и технологии, смежные с процессом разработки игр.

В этой главе вы узнаете:

о широком рынке мобильных игр;

об обозримых перспективах игр для мобильных телефонов;

почему Java является идеальной платформой для разработки мобильных игр;

что такое J2ME, и каково его место среди языков Java.

Основы программирования игр для мобильных телефонов

По определению, мобильная игра – это игра, в которую вы можете играть в движении. Хотя вы можете не согласиться и сказать, что согласно этому определению игра на ноутбуке – это тоже мобильная игра. Мы ограничим это определение, сказав, что это игра, в которую можно играть на мобильном устройстве, помещающемся на ладони. Но тогда в эту категорию попадут мобильные телефоны, пейджеры, «наладонники», персональные цифровые помощники и карманные игровые устройства. Поэтому для целей этой книги мы будем рассматривать только те игры, которые можно запускать на мобильном телефоне. Хотя это может показаться весьма деспотичным решением, вы увидите, что мобильные телефоны представляют собой уникальный и очень важный тип устройств для создания мобильных игр.

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

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

Поставщики беспроводных услуг связи уже создали инфраструктуру продажи и доставки мобильных игр пользователям. В отличие от традиционных игр для персональных компьютеров и игровых консолей, для которых необходима упаковка, CD-ROM и место на полке в магазине, мобильные игры можно доставлять на рынок прямо по воздуху. Это значительное подспорье для тех, кто хочет ворваться на рынок мобильных игр.

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

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

Первая игра для мобильного телефона

Чтобы понять, что представляют собой игры для мобильных телефонов, полезно обратиться к истории. Я хочу вернуться в 1997 год, когда была создана первая мобильная игра, поставлявшаяся на телефонах производства фирмы Nokia. Эта игра называлась Snake и была очень простой как с точки зрения графики, так и с точки зрения самого процесса игры: вы управляете бегающей по экрану змеей, которая должна съедать шарики и расти (рис. 1.1).

Рис.2 Создание игр для мобильных телефонов

Рис. 1.1. Классическая игра Snake – пример одной из первых игр для мобильных телефонов

Несмотря на то что Snake очень простая игра, она навсегда изменила образ мобильного телефона – он стал не только средством общения. Вскоре после появления Snake на свет появилось огромное количество других игр, и люди начали больше думать о телефоне как о средстве развлечения.

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

Игра Snake – компьютерная игра, существовавшая задолго до появления мобильных телефонов. Некоторые предыдущие версии этой игры появились на персональных компьютерах Commodore VIC-20 и Commodore 64, хотя я не удивлюсь, если узнаю, что она появилась еще раньше.

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

Рынок мобильных игр

Если логика людей, ожидающих авиарейса или находящихся в кресле пациента, вас не убедила о перспективах рынка мобильных игр, то, вероятно, это смогут сделать некоторые цифры. По оценкам одной нью-йоркской исследовательской фирмы, в 2005 году 200 миллионов человек будут играть в игры на своих мобильных телефонах, тем самым создав рынок стоимостью около 6 миллиардов долларов. Это не долгосрочный прогноз – это реальность! Ключ к пониманию цифр заложен в том, чтобы осознать, что несмотря на общий спад продаж на рынке мобильных телефонов число пользователей этих устройств будет постоянно расти и значительно увеличится в течение следующих нескольких лет. Это и является причиной появления новых моделей телефонов, обладающих более обширными возможностями поддержки игр.

По некоторым оценкам, 200 миллионов в 2005 году – это весьма скромная цифра. Некоторые эксперты в сфере беспроводных технологий предсказывают, что в 2006 году число людей, играющих в мобильные игры, достигнет 850 миллионов. Это очень много! Если вы сравните эти цифры с числом обладателей традиционных игровых приставок или персональных компьютеров, то увидите, что коммерческий потенциал рынка мобильных телефонов чрезвычайно высок.

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

Культура мобильных игр

Как и в случае программ для обмена короткими сообщениями, которые помогли нам быстро и удобно общаться, намного лучше, чем мы, вероятно, могли предположить, мобильные игры открывают новые горизонты общения, что заставляет пересмотреть всю концепцию создания игр. Вы думаете, это прозвучало слишком театрально? Возможно. Но представьте сцену: вы, прогуливаясь на природе, принимаете участие в массовой игре по сети с сотнями людей из других стран со всего мира! Конечно, сразу возникает вопрос, почему вы играете, а не наслаждаетесь видами окружающей природы, но смысл заключается в том, что мобильные игры всегда и везде соединяют людей. Это не просто фантазия, такие игры существуют уже сегодня.

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

Создавая среду, в которой игроки могут подключаться к игре и отключаться без проблем, социальный аспект мобильных игр, вероятно, будет наиболее привлекательным. Мобильные коммуникаторы уже сделали мир меньше, а мобильные игры переводят вещи на новый уровень, позволяя людям всей планеты играть вместе вне зависимости от их физического местоположения. Игры могут преодолеть не только пространственные барьеры, но также языковые и культурные. Вам не нужно знать другого языка, чтобы играть в Pong или Snake. И даже более сложные игры сделаны так, чтобы преодолевать межкультурные барьеры.

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

Вероятно, вы не сразу сможете представить игру как средство культурной коммуникации, однако возьмите простую детскую (даже некомпьютерную) игру, подобные игры прошли не одно поколение и даже культуру. Подобно преданиям и легендам, игры, в которые играют люди, говорят многое об их культуре. Распространение игр по всему миру – это реальная возможность узнать других людей и поведать о себе.

Сильная сторона мобильных игр

Пожалуй, самое интересное в мобильных играх – это то, что их рынок до сегодняшнего дня не сегментирован. Новые жанры игр до сих пор не придуманы. Подумайте, как, например, можно использовать возможности GPS (Global Positioning System – Глобальная Система Позиционирования) в играх. Технически возможно играть в рамках реальной географии мира. Иначе говоря, чтобы перемещать своего героя, вы сами должны перемещаться по миру, технология GPS делает это возможным.

Если вы думаете, что идея мобильной игры, взаимодействующей с GPS, – это фантастика, позвольте мне познакомить вас с игрой Pac-Manhattan. Pac-Manhattan – это оригинальная «крупномасштабная городская игра», которая использует карту города Нью-Йорк как игровое поле для игры Pac-Man.

Идея игры заключается в перемещении классической игры из виртуального пространства в реальный мир. Более того, героями игры являются непосредственно люди, бегающие по улицам Манхэттена. Игрок, Pac-Man, прокладывает свой путь через Парк Вашингтон Сквер, а его преследуют привидения Inky, Pinky и Clyde. На рис. 1.2 показана игровая карта Pac-Manhattan, которая превращает улицы Нью-Йорка в игровой лабиринт.

Рис.3 Создание игр для мобильных телефонов

Рис. 1.2. Игровая карта Pac-Manhattan превращает улицы Нью-Йорка в игровую карту

Используя мобильные телефоны и сеть WiFi для передачи данных, центр управления обновляет данные о положении игроков и отображает их на сайте Pac-Manhattan (http://www.pacmanhattan.com/). На рис. 1.3 показан пример картинки из игры Pac-Manhattan в самом разгаре действий. Помните, что все действия игры разворачиваются на улицах реального города.

Рис.4 Создание игр для мобильных телефонов

Рис. 1.3. Игра Pac-Manhattan очень похожа на оригинальную Pac-Man, однако в ней перемещаются реальные люди по улицам Нью-Йорка

Хотя для реализации Pac-Manhattan требуются нестандартные коммуникативные возможности, в сущности, эта игра не попадает под данное нами определение мобильной игры, потому что мобильные телефоны в ней используются исключительно как голосовые коммуникаторы. Другими словами, на мобильном телефоне нет как таковой игры, вы с такой же легкостью можете использовать walky-talky (переносная рация). Более интересная с технической точки игра Pac-Manhattan основывалась бы на использовании мобильных клиентов GPS, определяющих местоположение игрока и отправляющих эти данные на центральный сервер. По слухам, ребята из Pac-Manhattan сейчас работают над этим, поэтому следите за новостями на сайте!

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

Если вы хотите развернуть действия Pac-Manhattan на улицах вашего города, то на сайте этой игры можно загрузить пакет «In Your City Kit», который содержит всю информацию, необходимую для постановки игры в вашем городе. Предупреждаю, что эта игра намного опаснее своего компьютерного прототипа, поэтому вы играете на свой страх и риск.

GPS в игре Pac-Manhattan – это лишь один из примеров того, как мобильные телефоны могут объединять не совместимые ранее технологии и открывать новые горизонты для создания мобильных игр. Мы живем в чрезвычайно удивительное и динамичное время мобильных игр!

Знакомство с мобильными платформами

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

Хотя «ландшафт» мобильных игр изменяется быстро, приходит день, когда та или иная платформа становится доминирующей. Можно составить список платформ, подходящих для написания мобильных игр:

Java 2 Micro Edition (J2ME);

Binary Runtime Environment for Wireless (BREW);

Symbian;

Windows Mobile Smartphone.

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

Еще одна платформа для мобильных игр – это SMS или Short Message Service (Служба коротких сообщений). SMS – это технология, которая позволяет отправлять и получать короткие сообщения от игрового сервера. SMS – это предыдущий этап развития мобильных игр, который можно использовать для текстовых игр и чатов, но эту платформу сложно применять для создания чего-то другого. Кроме того, за отправку SMS необходимо платить, а это может оказаться весьма накладным при большом объеме получаемых/отправляемых сообщений.

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

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

Одним из самых сложных моментов при написании этой книги был момент принятия решения, привязываться ли к конкретной платформе. В конечном счете было решено, что невозможно рассказать об основах программирования мобильных игр и охватить две или три платформы. Поэтому мы выбрали наиболее широко поддерживаемую платформу, имеющую наиболее ясное будущее, – J2ME. К счастью, большинство методов программирования, о которых пойдет речь далее, можно применить при создании игр для других платформ.

Java 2 Micro Edition (J2ME)

J2ME – это компактная версия популярного языка программирования Java, созданного Sun Microsystems. Многие и не подозревают, что изначально Java создавался как язык программирования мобильных устройств, поэтому он вернулся к истокам и воплотился в J2ME. J2ME содержит широкий спектр инструментов для разработки и богатый программный интерфейс приложения (application programming interface, API) для разработки приложений для мобильных телефонов, известных как MIDlets (о значении этого термина речь пойдет позже).

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

Эта платформа наиболее широко поддерживается производителями мобильных телефонов в США. Такие гиганты, как Motorola, Nokia, Research in Motion (RIM) и Samsung, поставляют телефоны, поддерживающие J2ME.

Binary Runtime Environment for Wireless (BREW)

В отличие от J2ME, поддерживаемого широким спектром телефонных аппаратов, BREW – это платформа, ориентированная на телефоны с технологией Qualcomm's CDMA (Code Division Multiple Access – множественный доступ с кодовым разделением каналов). Но это не говорит о том, что BREW имеет весьма ограниченное распространение. Для создания игр для платформы BREW разработчики часто используют язык программирования C или C++ в сочетании с BREW API. BREW также поддерживает такие языки разработки приложений, как XML и даже Java.

Подобно J2ME, BREW может выступать промежуточным звеном между игрой и операционной системой телефона. В отличие от J2ME, платформа BREW также поддерживает и собственный код, это значит, что игра может быть скомпилирована под конкретный процессор телефона. Собственный код обрабатывается намного быстрее, чем его интерпретированный аналог, однако при его использовании могут возникать проблемы с переносом приложения с одного телефона на другой.

Платформа BREW нашла наибольшее распространение в Азии (особенно в Японии и Южной Корее). В США на сегодняшний день Alltel и Wireless – это лидирующие поставщики беспроводных решений, предлагающие телефоны с поддержкой BREW.

Symbian

Symbian – это мобильная операционная система, которая имеет существенное отличие от BREW. Оно заключается в том, что это открытая операционная система, доступная по лицензии любому производителю мобильных телефонов. Операционная система Symbian была разработана компанией Symbian Ltd., которая является консорциумом компаний Motorola, Nokia, Panasonic и Sony/Ericsson. Благодаря простоте лицензирования, эта ОС поддерживается многими моделями телефонов.

Существует масса возможностей при разработке приложений для Symbian, поскольку эта операционная система поддерживает такие языки программирования, как C++, Java и Visual Basic. На сегодняшний день большинство мобильных игр и приложений для Symbian написаны на C++, поскольку это обеспечивает большое быстродействие и интеграцию с операционной системой, нежели аналоги, созданные с использованием Java. Несомненно, Java начинает компенсировать недостаток в производительности между приложениями, написанными на этом языке, и собственным кодом, но все-таки в большинстве случаев собственные программы работают эффективнее, чем Java-аналоги. Это особенно важно, если дело касается игр, где каждая доля мощности процессора на счету.

Так почему бы не остановиться на Symbian, а не на Java? Простой ответ заключается в том, что Java распространен широко, в то время как Symbian – это лишь одна из операционных систем.

Мобильные телефоны значительно отличаются от персональных компьютеров тем, что имеют весьма разнообразное программное и аппаратное обеспечение. Java – это унифицирующая технология, позволяющая использовать созданное приложение на различных типах телефонов.

Windows Mobile Smartphone

Вы ведь не думали, что Microsoft будет сидеть в стороне и спокойно следить за развитием мобильных игр без собственной операционной системы, не так ли? Конечно, нет! Компания Microsoft немного преуспела, выпустив операционную систему Windows Mobile, устанавливаемую на карманных компьютерах и усовершенствованных мобильных телефонах, известных как смартфоны (Smartphone). Хотя некоторые Pocket PC могут выполнять функции мобильных телефонов, все-таки они ближе к PDA, нежели к телефону, хотя бы по своим габаритным характеристикам: Pocket PC имеет достаточно широкий экран (240х320), а для ввода используется перо (stylus).

Хотя Pocket PC как устройства не очень похожи на мобильные телефоны, операционная система Windows Mobile – это совершенно иное дело. Компания Microsoft смиренно ждет времени, когда технологии мобильных телефонов смогут соответствовать требованиям недавно выпущенной операционной системы Smartphone, которая является разновидностью Windows Mobile для мобильных телефонов. Эта операционная система привлекает прежде всего тем, что она не является «урезанным» вариантом Windows Mobile. Главное ее отличие заключается в измененном интерфейсе (ввиду меньших размеров экрана и отсутствия электронного пера). В итоге вы получаете полноценную систему Windows Mobile в мобильном телефоне с логотипом Smartphone.

Но что это значит с точки зрения перспективы разработки мобильных игр? Это значит, что вы можете использовать те же самые инструменты API, которые сегодня рименяются для создания игр для Pocket PC, например, С, С++ или Microsoft C# в сочетании с Windows Mobile API. Разработка игр для Pocket PC активно ведется в течение нескольких последних лет, поэтому в некотором смысле Smartphone изначально получает значительный толчок, несмотря на то, что эта операционная система является сравнительно новой для рынка.

Компании Motorola и Samsung производят смартфоны в США на основе AT&T Wireless и Verizon Wireless. Однако ввиду силы компании Microsoft, я вижу в скором будущем быстрое увеличение количества предлагаемых на рынке устройств, снабженных этой операционной системой.

Java как платформа для мобильных игр

Если вы умудрились прочитать все примечания «В копилку Игрока», то вы уже знаете, что в этой книге внимание будет уделено именно J2ME. Я объясню такое решение чуть позже, а пока рассмотрим, что же представляет собой эта технология, и какие возможности она предоставляет с точки зрения программирования мобильных игр.

Что такое Java?

Ранее я упоминал, что изначально Java был языком программирования, который позволял сетевым устройствам связываться друг с другом. Если быть более точным, то Java зарождался как проект в Sun, целью которого было научиться внедрять компьютеры в повседневную жизнь. Одной из основных задач проекта было заставить все компьютеризованные устройства взаимодействовать друг с другом. Как выяснилось, Sun опередил свое время в попытке использовать Java для соединения бытовых приборов. Однако компания быстро отреагировала и завершила работу над проектом, сделав Java успешным Web-ориентированным языком программирования.

Как только технология и потребность на рынке совпали с исходным назначением Java, и Sun подняла свои предыдущие наработки и приспособила Java для мобильных телефонов. J2ME разработан не только с учетом ограничений мобильных телефонов, он также подходит для программирования беспроводных соединений. J2ME – это лишь подмножество более глобального инструмента Java, который состоит из языка программирования, API и среды выполнения.

Почему Java?

Даже если бы Java был идеально приспособлен для разработки приложений для мобильных телефонов, он бы не нашел широкого применения без поддержки промышленности. На сегодняшний день Java – доминирующая технология разработки программного обеспечения для мобильных телефонов. Все говорит о том, что Java укрепится на рынке и, вероятно, расширит свой сегмент. По оценкам ряда специалистов к 2007 году будет продано 450 миллионов телефонов, поддерживающих Java, что составит 75 % рынка сотовых телефонов.

Разработчики активно используют Java, поскольку эта платформа является открытой. Это значит, что если вы разработали код, то его можно использовать в различных мобильных устройствах. К сожалению, такая «открытость» Java была несколько осложнена наличием API других производителей и различиями аппаратного обеспечения различных устройств. Тем не менее вы можете написать код и, не внося никаких изменений, использовать его на разнообразных мобильных телефонах. Сравните это с платформой BREW, созданной специально для телефонов, работающих в сетях Qualcomm CDMA.

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

С технической точки зрения, несмотря на то что Java и J2ME «более открыты», чем BREW, тем не менее они до сих пор не являются языками программирования с открытым кодом. Все разновидности Java-технологии, включая J2ME, принадлежат Sun Microsystems. К счастью, Sun была очень любезна и дала возможность свободного формирования стандартов Java однако многие разработчики до сих пор лоббируют их, чтобы перевести Java в сообщество Открытого Кода.

Интересный виток взаимоотношений между Java и BREW случился в конце 2002 года, когда в свет вышла виртуальная машина Java для устройств, работающих на платформе BREW. Это означает, что BREW-устройства могут эффективно работать с Java-приложениями, как будто они изначально поддерживали Java. Но при этом Java не конкурировала с BREW как платформа для разработки игр. Однако поскольку телефоны, поддерживающие только Java, не поддерживают BREW, появление виртуальной машины означает увеличение доли на рынке, если вы используете Java.

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

Вероятно, вы обратили внимание, что я попеременно использую термины Java и J2ME. Хотя технически J2ME – это часть более обширной технологии Java в рамках этой книги эти термины имеют один и тот же смысл, поскольку я употребляю их в контексте мобильных телефонов.

Java и программирование мобильных игр

Вы знаете «что» и «почему», а теперь важно рассмотреть вопрос «как». Иначе говоря, как программировать мобильные игры с помощью Java? Прежде всего при программировании игр вызывают интерес следующие области технологии:

графика и анимация;

звук;

пользовательский ввод;

работа в сети.

В следующих нескольких разделах рассматривается каждый из этих вопросов с точки зрения J2ME.

Графика и анимация

Стандартный API включает поддержку всевозможных графических элементов, таких как, например, изображения, двухмерные графические примитивы (линии, прямоугольники, эллипсы и т. д.) и анимация. В терминах анимации J2ME поддерживает спрайты – изображения, свободно перемещаемые по экрану вне зависимости от других. API среды J2ME также поддерживает детектирование столкновений спрайтов, что позволяет определять, столкнулись ли два спрайта. Это очень важное свойство, необходимое для создания практически любой игры в стиле «экшн». Вы познакомитесь со спрайтами в главе 5.

Другая интересная особенность J2ME – это замощенные слои. Вы можете выбрать небольшое изображение и замостить им фоновый слой. Такие слои используются в играх для создания больших перестраиваемых карт, что позволяет сэкономить память. Благодаря удобному менеджеру слоев в J2ME можно с легкостью управлять несколькими слоями. Таким образом, можно создать один слой – полностью фоновый, который можно использовать как декорацию, и еще один слой – для создания преград на пути героя игры. В главе 10 рассказывается о замощенных слоях, а в главе 11 речь идет о менеджере.

Обработка ввода пользователя

Пользовательский ввод очень важен для игр: он определяет, как удобно игроку взаимодействие с игрой. Также ввод очень важен потому, что определяет первичный интерфейс между игроком и игрой. J2ME поддерживает клавишный ввод, который на сегодняшний день является единственным способом ввода на мобильном телефоне. Существует возможность непосредственно считывать состояние клавиш на телефоне, это очень важно, если вы хотите обеспечить высокую степень взаимодействия игрока и игры. Особенности обеспечения ввода через J2ME API описаны в главе 6.

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

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

Использование звука в играх

«Большую тройку» самых важных элементов мобильных игр завершает звук. J2ME поддерживает воспроизведение цифрового звука в форматах PCM или WAV, а также музыку в формате MIDI. Поддержка звука основана на Java Media API – API, предназначенного для записи и воспроизведения звука и видео на мобильных устройствах. Для разработки игр все, что вам понадобится узнать, – это как в нужный момент воспроизвести звук и, может быть, видео.

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

Чтобы не уходить далеко от разработки игр, в этой книге будут рассмотрены лиь вопросы воспроизведения аудио средствами J2ME.

В главе 8 вы познакомитесь с программированием звуков, а также звуковым форматом WAV и музыкальным MIDI.

Мобильные сети

Самой привлекательной возможностью мобильных игр будет, вероятно, возможность работы в сети. Помня это, вы можете понять, что ориентированный на сети Java чрезвычайно удобен как платформа для мобильных игр. Сетевые возможности Java являются неотъемлемой частью его среды выполнения. В отличие от других языков программирования игр (C или C++), язык Java был ориентирован на поддержку сетей.

Объедините сетевую ориентированность Java и независимость этой платформы, и вы получите игровую платформу, которая преодолевает все преграды на пути доступности пользователю. Это очень важно, особенно когда вы поймете, что пользователи захотят играть в игры на различных устройствах и в различных беспроводных сетях. Игрок не должен вникать в проблемы, связанные с отличиями мобильных телефонов разных производителей. Благодаря поддержке сетей языком Java разработчикам теперь не нужно заботиться о различиях аппаратного обеспечения.

О сетевых мобильных играх речь пойдет в главе 14, а в главе 15 будет рассмотрен пример создания такой игры.

Небольшой пример на J2ME

Основной набор инструментов и API, необходимых для создания полноценных Java-приложений, известен как J2SE (Java 2 Standard Edition). J2SE используется как для создания самостоятельных приложений, так и для программирования Web-апплетов. Другая разновидность Java – это J2EE (Java 2 Enterprise Edition), предназначенный для создания корпоративных приложений. J2EE отличается от J2SE, поскольку для него существенна функциональная поддержка корпоративных приложений. Представьте большое сетевое приложение, обеспечивающее работу eBay или Amazon.com, и вы поймете, для чего предназначен J2EE.

Учитывая, что мобильные беспроводные устройства имеют меньшие вычислительные мощности и меньшие экраны (по сравнению с настольными аналогами), становится очевидным, что J2ME – это упрощенная версия J2SE с уменьшенным набором функций. На самом деле J2ME – это часть J2SE, которая поддерживает минимальный набор инструментов, необходимый для программирования мобильных устройств как проводных, так и беспроводных.

Также J2ME обладает рядом особенностей, уникальных для мобильных устройств. Эти три пакета (J2ME, J2SE и J2EE) образуют технологию Java 2.

Вы можете спросить, зачем я затрагиваю прочие разновидности Java в книге, посвященной программированию мобильных игр. Дело в том, что это обязательный минимум, который вы должны знать в отношении J2ME. Не волнуйтесь – после того как вы немного больше познакомитесь с J2ME, мы приступим к созданию игр!

Конфигурация и ограниченная конфигурация мобильного устройства

Если вы используете J2ME, то вы столкнетесь с новыми терминами и аббревиатурами. Во-первых, вы встретите термин «конфигурация» (configuration). Конфигурация – это минимальный набор API, необходимый для написания приложения и его запуска на ряде мобильных устройств. Стандартная конфигурация мобильных устройств известна как Ограниченная Конфигурация Мобильного Устройства (Connected Limited Device Configuration, CLDC). CLDC – это минимальный набор функций, которым должно обладать любое беспроводное устройство. В CLDC учитываются такие факторы, как объем свободной памяти устройства, а также мощность процессора.

Если рассмотреть более подробно, CLDC включает в себя следующие параметры мобильного устройства:

множество используемых Java-функций;

функциональность виртуальной машины Java;

набор API, необходимый для разработки приложения;

аппаратные средства мобильного устройства.

Вы, вероятно, можете подумать, что при программировании для мобильных устройств в вашем распоряжении находятся все возможности Java, однако это не так вследствие ограничений CLDC, связанных с пониженной вычислительной мощностью таких устройств. Кроме ограничений API, CLDC также накладывает ограничения и на аппаратную часть устройств, поддерживающих Java:

объем памяти, необходимый Java, составляет 160 Кб;

16-битный процессор;

низкое потребление энергии (обычно низкий расход батареи);

соединение с сетью (часто беспроводное со скоростью 9600 бит/с или меньше).

К CLDC устройствам относятся (но не только указанные устройства) мобильные телефоны, пейджеры, PDA, карманные компьютеры и бытовые приборы. Конечно, нас прежде всего интересуют мобильные телефоны.

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

Кроме CLDC J2ME определяет еще одну конфигурацию, известную как CDC (Connected Device Configuration – Конфигурация сетевого устройства), которая накладывает ограничения на более мощные и габаритные устройства по сравнению с мобильными. Следовательно, CDC имеет больший набор возможностей, чем CLDC.

Профили и MIDP

Во главе конфигурации находится профиль (profile), который представляет собой особый набор API, предназначенный для конкретного типа устройства. Конфигурация в общих чертах описывает семейство устройств, в то время как профиль дает более детальное описание, выделяющее тип устройства внутри семейства. MIDP (Mobile Information Device Profile – информационный профиль мобильного устройства) – это профиль, построенный на основе CLDC, который описывает беспроводные мобильные устройства, такие как телефон или пейджер.

Кроме указания API, используемых для разработки приложений для конкретного типа устройств, MIDP также описывает минимальные требования к аппаратному и программному обеспечению. Это очень важно, поскольку вы всегда знаете, каковы наихудшие условия работы созданного вами приложения.

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

Существует две версии профиля MIDP: 1.0 и 2.0. Хотя телефоны MIDP 1.0 имеют достаточно большую функциональность, MIDP 2.0 предоставляет более широкие возможности J2ME для программирования игр. Эта книга целиком посвящена MIDP 2.0, поскольку такие мобильные телефоны с огромной скоростью замещают телефоны, поддерживающие более ранний профиль MIDP 1.0, если уже не полностью вытеснят их к моменту, когда вы закончите прочтение книги.

Оценка требований MIDP к аппаратному обеспечению

Важной частью стандарта MIDP являются требования к аппаратному обеспечению устройств MIDP 2.0. Эти требования накладываются на следующие параметры:

память;

экран;

ввод;

сеть.

Требования к памяти согласно MIDP 2.0 следующие:

256 Кб недоступной памяти для библиотек MIDP API;

128 Кб памяти для системы работы Java;

8 Кб недоступной памяти для постоянных данных приложений.

Требования к вводу MIDP-устройств оговаривают, что устройство должно иметь клавиатуру или сенсорный экран. Обратите внимание, что мышь не является устройством ввода, поскольку сложно представить мобильное устройство, работа с которым осуществляется с помощью мыши. Однако такое устройство вполне может иметь сенсорный экран и электронное перо.

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

Если вам интересно, то в MIDP постепенно начинают входить джойстики. Компании Sony/Ericsson и Samsung предлагают мобильные телефоны с маленькими джойстиками, встроенными в клавиатуру. Поскольку на самом деле MIPD непосредственно не поддерживает джойстики, то джойстик можно использовать, если его положения ассоциированы с соответствующими клавишами клавиатуры.

Требования MIDP к дисплею представляют особый интерес, поскольку для мобильных устройств экран – это один из самых ограниченных параметров. Устройство MIDP должно иметь экран размером 96х54 пикселя с глубиной цвета 1 бит. Это означает, что экран должен быть как минимум 96 пикселей в высоту и 54 пикселя в ширину и, по крайней мере, должен быть черно-белым. Кроме того, форматное соотношение экрана должно быть 1:1, это означает, что пксели должны иметь форму прямоугольника.

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

В реальности большинство телефонов MIDP 2.0 превосходят минимальные требования за счет цветного дисплея и более широкого экрана.

Последнее требование к аппаратному обеспечению – это работа в сети, которое оговаривает минимальные требования к поддержке сетей. MIDP-устройство должно иметь двунаправленное беспроводное сетевое соединение любого вида. Такое соединение может быть прерывным (например, dial-up) и иметь ограниченную скорость передачи данных (9600 бит/с). Это очень важно, поскольку при разработке мобильных игр вы должны быть очень внимательны при определении скорости передачи данных, особенно в играх, для которых быстродействие необходимо (игры в стиле «экшн»).

Оценка требований MIDP к программному обеспечению

Кросс-платформенная природа Java позволяет преодолевать различия между множеством операционных систем. Но несмотря на это, спецификация MIDP устанавливает ряд ограничений, касающихся операционной системы мобильного устройства. Ниже перечислены основные требования к программному обеспечению MIDP-устройств:

минимальное ядро, необходимое для выполнения низкоуровневых функций, таких как, например, прерывания, исключения и очередь;

механизм чтения и записи в постоянную память;

механизм для установки таймеров и отметки времени данных;

доступ на запись/чтение к сетевому соединению устройства;

механизм перехвата ввода с клавиатуры или сенсорного экрана;

Страницы: 12 »»

Читать бесплатно другие книги:

Мультиварка довольно проста в эксплуатации, режим приготовления контролируется электроникой, темпера...
Каждый родитель, каждый воспитатель дошкольного учреждения стремится к тому, чтобы ребенок, познавая...
Дмитрий Семененко работает в международной фармацевтической компании. Более ста человек под его руко...
В этой книге собраны лучшие сказки народов мира. Издание прекрасно иллюстрировано и предназначено дл...
Действие этого фантастического романа происходит в наше время в одном из мегаполисов планеты Земля и...
В новой книге, основанной на цикле популярных программ «Эха Москвы», популярные авторы и радиоведущи...