Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

articles:game-mobile [2017/09/05 02:55] (текущий)
Строка 1: Строка 1:
 +====== game-mobile ======
 +<​sub>​{{game-mobile.odt|Original file}}</​sub>​
 +
 +====== проблемы переносимости мобильных игр ======
 +
 +крис касперски ака мыщъх, no-email
 +
 +**рынок мобильных игр растет взрывообразно,​ а вместе с ним растет и программистский интерес. это лакомый кусок рынка и практически всякий,​ кто хотя бы однажды создавал игру для ПК начинает поглядывать в сторону сотовых телефонов. разработка игр для мобильных устройств — занятие действительно несложное,​ но есть нюансы.**
 +
 +===== введение =====
 +
 +Многообразие "​железа"​ под IBMPC доставляет множество неприятностей и буквально сводит разработчиков с ума, но это ничто по сравнению с миром мобильных устройств. Меняется не только архитектура процессора,​ объем памяти,​ глубина цветности,​ но даже геометрия дисплея и расположение кнопок! Это ужесточает требования к дизайну — чертовски трудно создать игру, которая сохраняла бы свою привлекательность на всем спектре устройств. Никакой стандартизацией здесь и не пахнет! Ситуация меняется ежесекундно!
 +
 +Карманные компьютеры,​ позиция которых еще вчера казалось несокрушимой,​ сегодня сходят со сцены, уступая места "​смартфонам"​ — сотовым телефонам с функциями КПК. Мощность процессоров и объемы памяти растут не по дням, а по часам. Цветной дисплей и графический акселератор уже не редкость,​ а насущная необходимость. Времена,​ когда пользователь был доволен тем, что установил на сотовый телефон "​пасьянс"​ или "​дурака"​ уже прошли и теперь народ требует трехмерных игр с активной динамикой.
 +
 +Основная проблема в том, что жизненный цикл мобильных устройств очень невелик,​ а их популяция крайне разнообразна,​ поэтому разработка игры для одной конкретно взятой модели скорее всего не окупится и придется заняться ее портированием на другие платформы. Это достаточно хитрая и коварная операция,​ которую следует планировать заранее.
 +
 +{{game-mobile_Image_0.jpg?​553}}
 +
 +Рисунок 1 мобильные телефоны используются не только для связи, но еще и для игр
 +
 +===== платформы для разработчики =====
 +
 +Подавляющее большинство мобильных приложений (по некоторым оценкам аж до ~70%) пишутся на Java, а точнее — J2ME, что расшифровывается как Java 2 MicroEdition. Это урезанная версия языка, ориентированная на маломощные системы и поддерживающая рекордное количество мобильных устройств. Вместо "​живого"​ машинного кода, сотовый телефону подсовывают так называемый "​байт-код",​ исполняющийся на виртуальной машине (VirtualMachine или сокращенно VM), разработкой которой занимается как сама компания Sun (создатель языка Java), так и сторонние поставщики,​ ведь спецификации байт-кода открыты,​ а SDK (пакет программ и библиотек для разработчики) бесплатен. Теоретически,​ игра, написанная для одного сотового телефона,​ пойдет на любом устройстве,​ для которого есть соответствующая реализация VM, даже на пылесосе и домофоне! На практике же все выходит иначе. Прежде всего, производительность J2ME приложений крайне невелика и вычислительной мощности даже самых быстрых телефонов для разработки динамичной игры может попросту не хватить! Для преодоления этого ограничения производители телефонов выпускают специальные высокопроизводительные библиотеки (попутно реализующие дополнительные возможности по работе с дисплеем и музыкой),​ но они не совместимы со стандартной виртуальной машиной,​ а потому непереносимы. Естественно,​ Sun не стоит на месте и продолжает наращивать потенциал мобильной Java (достаточно сказать,​ что в MIDP 1.0 не было поддержи работы со спрайтами,​ и вплоть до появления MIDP 2.0, разработчикам приходилось делать это самим),​ однако,​ время уже упущено и на мобильную сцену ринулисб конкуренты.
 +
 +{{game-mobile_Image_1.png?​553}}
 +
 +Рисунок 2 популярная среда разработки Eclipse под J2ME
 +
 +Binary Runtime Environment for Wireless (двоичная среда исполнения для беспроводных устройств,​ сокращенно BREW) – альтернативная программная платформа,​ разработанная компанией Qualcomm, прочно ассоциируемой с аббревиатурой CDMA, где, собственно говоря,​ и зародился BREW, а на GSM телефоны был перенесен значительно позднее. Как и следует из его названия,​ это двоичная среда! В состав бесплатно распространяемого SDK входит полноценный Си/Си++ компилятор ARMBuilder, генерирующий высокопроизводительный код, что есть несомненный и бесспорный плюс. Какое-то время назад все были убеждены,​ что Qualcomm завоюет мир: развертывание BREW шло оптимистичными темпами. Платформа,​ запущенная в ноябре 2001 года,​ уже в апреле 2002 в среднем скачивала в день до 60 тыс. приложений из ~250 доступных,​ выпускаемых ~180 компаниями-разработчиками. Смущало лишь то, что данная технология поддерживала всего лишь 7 моделей телефонов,​ а Qualcomm требовала обязательной сертификации всех приложений,​ что с одной стороны гарантировало высокое качество кода, но с другой — высаживало разработчиков на геморрой и потому в дальнейшем ее развитие зашло в тупик.
 +
 +{{game-mobile_Image_2.jpg?​213}}
 +
 +Рисунок 3 логотип платформы BREW
 +
 +{{game-mobile_Image_3.png?​552}}
 +
 +Рисунок 4 разработка мобильных приложений на платформе BREW
 +
 +Execution Engine — еще один конкурент на голову Sun, разработанный компанией In-Fusio, попытавшейся обойти ограничения,​ накладываемые J2ME. Это не двоичный код (как у BREW), а виртуальная машина (как у Java), только намного более производительная. В среднем быстродействие возросло в 10 — 15 раз, а на некоторых операциях и до 30! К тому же, ExecutionEngine поддерживает ряд жизненно важных графические функции (масштабирование,​ панорамная прокрутка,​ трассировка лучей, вращения),​ которые J2ME-программисты вынуждены реализовывать самостоятельно на медленном байт-коде,​ а ExecutionEngine делает это непосредственно из машинно-зависимых библиотек,​ специальным образом оптимизированных под каждую поддерживаемую модель телефона. Вот только этих моделей очень немного — Philips Fisio 530/825, Alcatel OT 735/​535/​531,​ Panasonic X70/G60, Sagem myX-5/​myG-5/​myX-6,​ к тому же SDK далеко не бесплатен,​ что отталкивает многих разработчиков.
 +
 +{{game-mobile_Image_4.jpg?​553}}
 +
 +Рисунок 5 реалистичная трехмерная игра, разработанная при помощи Execution Engine
 +
 +WirelessGraphicsEngine (сокращенно WGE) — от компании TTPCom содержит удобный API, ориентированный на создание двух- и трехмерных игр, обеспечения управление фрагментами,​ функциональность отслеживания столкновений вместе с другими полезными операциями типа сетевого доступа или звуковой поддержки. Короче говоря,​ программировать на нем одного удовольствие,​ к тому же SDK распространяется на бесплатной основе и единственным его недостатком остается ограниченный круг поддерживаемых телефонов.
 +
 +{{game-mobile_Image_5.jpg?​384}}
 +
 +Рисунок 6 игра,​ разработанная при помощи платформы WirelessGraphicsEngine
 +
 +Mophun — весьма перспективная платформа,​ разработанная компанией Synergenix и позиционируемая как "​карманная консоль на базе ПО". Производительность — выше всяких похвал. Там, где J2ME показывает 400 KIPS, Mophun выдает 60 MIPS, что в 150 раз быстрее. Это, конечно,​ хорошо. Но ассортимент поддерживаемых устройств,​ как легко догадаться,​ невелик и к тому же, Synergenix требует обязательной сертификации всех приложений.
 +
 +{{game-mobile_Image_6.png?​174}}
 +
 +Рисунок 7 логотип платформы Mophun
 +
 +Вывод: J2ME – единственная платформа,​ обеспечивающая хоть какую-то переносимость. Для разработчики неторопливых логических игр это наилучший вариант,​ но динамическая графика по производительности уже не тянет. Альтернативные платформы решают проблему производительности ценой потери совместимости и налагают на разработчиков множество различных ограничений (типа лицензирования),​ что отталкивает от такой практики. Возникает вопрос:​ если переносимости все равно нет, тогда зачем держаться за враждебные платформы,​ когда весь необходимый функционал можно реализовать и самостоятельно. На ассемблере. Мы получим наивысшую скорость и наилучшую поддержку конкретного оборудования,​ а потому сможем создать быструю и динамичную игру с кучей наворотов,​ которые отсутствуют у конкурентов,​ пользующихся J2ME. Не такая уж и глупая мысль. Лучшие игры именно (типа Fight Hard 3D) именно так и создаются (см. врезку "​как создавалась Fight Hard 3D или ассемблер в мобильных устройствах"​). Естественно,​ о переносимости в этом случае придется забыть. Серьезно потрудившись,​ мы сможем перенести свое творение на пару-тройку популярных телефонов,​ но не более того, иначе затея окажется нерентабельной и к моменту завершения переноса возникнут новые технологии,​ появится новые идеи, и игра, казавшаяся когда-то вершиной научной мысли, станет никому не нужным барахлом. В этом и состоит главное отличие приложений для сотовых телефонов от, например,​ картин.
 +
 +===== россыпь проблем совместимости =====
 +
 +  - различные устройства имеют различную раскладку клавиатуры,​ иногда — удобную,​ но чаще всего — не очень, это значит,​ что игра не только должна допускать переопределение клавиш,​ но и предоставлять тщательно продуманный интерфейс,​ управляемый одной рукой с минимумом телодвижений;​
 +  - глубина цветности и разрешение дисплеев сильно неодинаково и уложиться в одну цветовую палитру все равно не получится,​ ничего другого не остается кроме как создавать несколько версий графического оформления,​ как это было во времена CGA, EGA и VGA мониторов;​
 +  - мощность мобильных процессоров и объем динамической памяти варьируется в широких пределах и чтобы при портировании не переписывать игру заново,​ необходимо изначально заложить в нее модульную структуру,​ обеспечивающую несколько уровней "​реалистичности";​
 +  - соотношение мощности процессора и объема памяти так же подвержено вариациям и потому в некоторых случаях более предпочтительными оказываются табличные вычисления,​ а в некоторых они просто не вмещаются;​
 +  - энергоемкость аккумуляторов так же различна,​ а при постоянной загрузке процессора,​ дисплея и звука потребление тока возрастает весьма значительно — необходимо проектировать игру так, чтобы игровой цикл вмещался хотя бы в полностью заряженный аккумулятор,​ а с учетом того, что телефон это не только игрушка,​ но и средство связи, желательно предусмотреть несколько уровней "​энергетической прожорливости";​
 +  - мобильные устройства совершенно не приспособлены для программирования,​ и потому основной цикл разработки приходится вести на эмуляторе,​ но поведение эмулятора может существенно отличатся от поведения "​живого"​ сотового телефона или КПК;
 +  - не на все сотовые телефоны можно найти спецификацию и эмуляторы,​ а если нет спецификации,​ о программировании на ассемблере можно сразу забыть и приходится программировать под J2ME, оставаясь в полном неведении относительно доступной памяти и производительности;​
 +  - тестирование игр затруднено тем, что мобильных устройств очень много, стоят они дорого,​ устаревают быстро и приобретать весь ассортимент имеющегося на рынке оборудования может позволить себе только крупная фирма;
 +  - сложность переноса зачастую превышает трудоемкость разработки программы с нуля, тем более, что в этом случае мы можем задействовать специфические особенности конкретной модели телефона;​
 +  - отсутствует какой бы то ни было стандарт на язык и API мобильных устройств,​ компиляторы двоичного и байт-кода от разных производителей совершенно несовместимы между собой и обеспечивают переносимость только в рамках заранее выбранного модельного ряда, который постоянно пополняется,​ но движется в заранее непредсказуемом направлении и очень часто падет вниз, а, поскольку,​ исходный код компилятора и всех сопутствующих ему библиотек является собственностью фирмы-производителя,​ разработчики игр совершенно не гарантированы от измены;​
 +  - мобильный мир очень изменив и непостоянен,​ за время переноса конкретная модель телефона может давно устареть или быть вытеснена другой с совершенно иными характеристиками и тогда весь процесс придется повторять заново;​
 +{{game-mobile_Image_7.png?​501}}
 +
 +Рисунок 8 эмулятор мобильного телефона типа Nokia на PC под Windows XP
 +
 +===== >>>​ врезка как создавалась Fight Hard 3D\\ или ассемблер в мобильных устройствах =====
 +
 +В своем интервью,​ Влад Суглобов,​ один из разработчиков популярной игры "​FightHard",​ сказал следующее:​ "//​Мы работали над Fight Hard 3D (Fight Hard™ -- торговый знак компании G5 Software) долгих полтора года и потратили на создание игры деньги,​ которые до сих пор очень редко тратятся на создание мобильных игр. Fight Hard 3D была задумана первой трехмерной мобильной игрой для телефонов на базе процессора ARM 6, и она ей стала. До сих пор на BREW на таких телефонах есть только две трехмерные игры, и обе наши: Fight Hard 3D и RiderX 3D. Мы потратили много времени на то, чтобы сделать игру действительно захватывающей. Мы баллансировали РПГ-модель,​ тщательно выверяли анимации бойцов,​ оптимизировали трехмерный «движок» игры на ассемблере,​ и не выпускали игру, пока не почувствовали,​ что она получилась действительно интересной,​ и люди от нее просто не могли оторваться первые полчаса//"​ (http://​www.playmobile.ru/​articles/​g5_software_interview)
 +
 +Как видно, ассемблер и BREW при всех своих недостатках,​ позволяют создавать очень стоящие вещи!
 +
 +{{game-mobile_Image_8.gif?​176}}
 +
 +Рисунок 9 популярная мобильная игра FightHard 3D, созданная с применением Ассемблера
 +
 +===== заключение =====
 +
 +Интерес к мобильным платформам вызван в первую очередь тем, что сотовый телефон дает программистам возможность разработать достойную игру за короткое время (от 3х месяцев до года) и со скромными вложениями. На ПК игры выродились в монстров,​ над созданием которых работают огромные коллективы,​ и чтобы создать нечто конкурентоспособное усилиям нескольких человек,​ требуется принципиально новые идеи, а у кого они есть?
 +
 +Сотовый хорош тем, что народ прется от питона,​ арканоида или тетриса,​ а от драчки,​ реализованной в стиле ZX-SPECTRUM буквально бьется в экстазе. К сожалению,​ в отличии от старика спектрума,​ век мобильных игрушек очень недолог. Зато народ их привык покупать (через мобильные службы,​ конечно),​ а не тыбрить естественным образом в ближайшем ларьке. Уровень пиратства на мобильной арене намного ниже, чем на ПК и потому заработать деньги на программировании игр вполне реально даже с учетом всех сложностей переноса на другие платформы,​ а проблем здесь хватает. Очень хочется надеяться,​ что через несколько лет ситуация нормализуются и появится если не стандарт,​ то хотя бы какие-то общие черты, объединяющие все мобильные устройства воедино.
 +
 +===== >>>​ врезка полезные ссылки =====
 +
 +  - **http****://​****developer****.****sonyericsson****.****com**:​
 +    - основной ресурс для разработчиков приложений под телефоны фирмы SonyEricasson (на английском языке);​
 +  - **http****://​****developer****.****samsungmobile****.****com**:​
 +    - основной ресурс для разработчиков приложений под телефоны фирмы Samsung (на английском языке);​
 +  - **http****://​****motocoder****.****com****/​****motorola****/​****pcsHome****.****jsp**:​
 +    - основной ресурс для разработчиков приложений под телефоны фирмы Motorola (на английском языке);​
 +  - **http****://​****www****.****siemens****-****mobile****.****com****/​****developer**:​
 +    - основной ресурс для разработчиков приложений под телефоны фирмы Siemes (на английском языке);​
 +  - **http****://​****www****.****my****-****onetouch****.****com****/​****onetouch****/​****ahead****/​****index****.****jsp****:​**
 +    - основной ресурс для разработчиков приложений под телефоны фирмы Alcatel (на английском языке);​
 +  - **http****://​****java****.****ez****-****i****.****co****.****kr****/​****wire****/​****index****.****asp**:​
 +    - основной ресурс для разработчиков приложений под телефоны фирмы LG (на английском языке);​
 +  - **http****://​****www****.****mobilelab****.****co****.****kr**:​
 +    - эмуляторы для телефонов фирмы LG;
 +  - **http://​forum.nokia.com**:​
 +    - место обитания разработчиков мобильных приложений под телефоны Nokia (на английском языке);​
 +  - **http****://​****forum****.****juga****.****ru**:​
 +    - форум для разработчиков мобильных приложений под телефоны разных фирм (на русском языке);​
 +  - **http****://​****www****.****mgdc****.****ru**:​
 +    - еще один отечественный форум мобильных программистов;​
 +  - **создание аркадных игр для мобильных устройств на Java**:
 +    - статья,​ описывающая основные принципы создания игр для мобильных телефонов на J2ME (на русском языке):​ http://​lib.juga.ru/​article/​articleview/​177/​1/​68);​
 +  - **http://​www.jug.ru/​servlets/​images/​meeting_2005_02_26/​kenjitsu.ppt**:​
 +    - презентация,​ посвященная вопросам проектирования,​ реализации и переноса мобильных приложений (на русском языке);​
 +  - **http://​www.jug.ru/​servlets/​images/​meeting8/​brew.ppt**:​
 +    - сравнение платформы BREW с конкурентами (презентация,​ на русском языке);​
 +  - **http://​www.mabila.kharkov.ua/​news22969.html**:​
 +    - любопытное интервью с Джоном Кармаком по вопросам создания мобильных игр (на русском языке);​
 +