Проблемы переносимости

(Играем и обсуждаем игры)

Модератор: Buxyr

Аватара пользователя
Buxyr

Коммандо Активист Друг форума Кот Леопольд
Рейнджер
Сообщения: 451
Рег. Вс май 02, 2010 10:07 am
Награды: 4
Репутация: 429
Вклад в проект: 27
Откуда: --
Поблагодарили: 6 раз

Проблемы переносимости

Сообщение Buxyr » Пт июн 18, 2010 1:00 pm

НА МОБИЛЬНЫЕ УСТРОЙСТВА
РЫНОК МОБИЛЬНЫХ ИГР РАСТЕТ ВЗРЫВООБРАЗНО, А ВМЕСТЕ С НИМ РАСТЕТ И ИНТЕРЕС ПРОГРАММИСТОВ. ЛАКОМЫЙ КУСОК РЫНКА! ПРАКТИЧЕСКИ ВСЯКИЙ, КТО ХОТЯ БЫ ОДИН РАЗ СОЗДАВАЛ ИГРУ ДЛЯ ПК, НАЧИНАЕТ ПОГЛЯДЫВАТЬ В СТОРОНУ СОТОВЫХ ТЕЛЕФОНОВ. РАЗРАБОТКА ИГР ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ — ЗАНЯТИЕ ДЕЙСТВИТЕЛЬНО НЕСЛОЖНОЕ, НО В НЕМ ЕСТЬ НЮАНСЫ

Многообразие «железа» под IBM PC доставляет множество неприятностей и буквально сводит разработчиков с ума, но это ничто по сравнению с миром мобильных устройств. Меняется не только архитектура процессора, объем памяти, глубина цветности, но даже геометрия дисплея и расположение кнопок, что ужесточает требования к дизайну — чертовски трудно создать игру, которая сохраняла бы свою привлекательность на устройствах всего спектра. Никакой стандартизацией здесь и не пахнет.

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

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

Платформы для разработчиков

J2me
Подавляющее большинство мобильных приложений (по некоторым оценкам, аж до 70%) пишутся на Java (а точнее J2ME — расшифровывается как Java 2 Micro Edition) — урезанной версии языка, ориентированной на маломощные системы и поддерживающей рекордное количество мобильных устройств. Вместо «живого» машинного кода сотовому телефону подсовывают так называемый «байт-код», который исполняется на виртуальной машине (Virtual Machine, сокращенно VM). Разработкой VM занимается компания Sun (создатель языка Java) и сторонние поставщики, так как спецификации байт-кода открыты, а SDK (пакет программ и библиотек для разработчиков) бесплатен.

Теоретически, игра, написанная для одного сотового телефона, пойдет на любом устройстве, для которого есть соответствующая реализация VM. Даже на пылесосе и домофоне! На практике же выходит иначе. Прежде всего, производительность J2ME приложений крайне невелика, и вычислительной мощности даже самых быстрых телефонов может попросту не хватить для разработки динамичной игры. Чтобы преодолеть это ограничение, производители телефонов выпускают специальные высокопроизводительные библиотеки (попутно реализующие дополнительные возможности по работе с дисплеем и музыкой), несовместимые, однако, со стандартной виртуальной машиной, и поэтому непереносимые. Естественно, Sun не стоит на месте и продолжает наращивать потенциал мобильной Java. Достаточно сказать, что в MIDP 1.0 не было поддержи работы со спрайтами, и вплоть до появления MIDP 2.0 разработчикам приходилось делать это самим. Однако время уже упущено — на мобильную сцену ринулись конкуренты.

Brew
Двоичная среда исполнения для беспроводных устройств (Binary Runtime Environment for Wireless, сокращенно BREW) — альтернативная программная платформа, разработанная Qualcomm. В наших мозгах эта компания упорно ассоциируется с аббревиатурой CDMA, где, собственно, и зародился BREW, а на GSM-телефоны он был перенесен значительно позднее. Как понятно по названию, это двоичная среда! В состав бесплатно распространяемого SDK входит полноценный С/С++-компилятор ARM Builder, который генерирует высокопроизводительный код (несомненный плюс).

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

Execution engine
Execution Engine — разработка компании In-Fusio, еще один конкурент на голову Sun, которая попыталась обойти ограничения, накладываемые J2ME. Здесь представлен не двоичный код (как в BREW), а виртуальная машина (как в Java), только более производительная. В среднем быстродействие выше в 10-15 раз, а на некоторых операциях — в 30 раз! Кроме того, Execution Engine поддерживает ряд жизненно важных графических функций (масштабирование, панорамная прокрутка, трассировка лучей, вращения), которые J2ME-программисты вынуждены реализовывать самостоятельно на медленном байт-коде. Execution Engine делает это непосредственно из машинно-зависимых библиотек, специальным образом оптимизированных под каждую поддерживаемую модель телефона. Вот только поддерживается совсем немного моделей: Philips Fisio 530/825, Alcatel OT 735/535/531, Panasonic X70/G60, Sagem myX-5/myG-5/myX-6... Добавлю и то, что SDK далеко не бесплатен, что отталкивает многих разработчиков.

Wge
Wireless Graphics Engine (сокращенно WGE) от компании TTPCom содержит удобный API, ориентированный на создание двух- и трехмерных игр. Программировать на нем — одно удовольствие, к тому же SDK распространяется на бесплатной основе. Единственным недостатком остается ограниченный круг поддерживаемых телефонов.

Mophun
Весьма перспективная платформа. Разработана компанией Synergenix и позиционируется как «карманная консоль на базе ПО». Производительность — выше всяких похвал. Там, где J2ME показывает 400 KIPS, Mophun выдает 60 MIPS, что в 150 раз быстрее. Хорошо, конечно, но ассортимент поддерживаемых устройств, как легко догадаться, невелик. Плюс Synergenix требует обязательной сертификации всех приложений.

Вывод: J2ME — единственная платформа, которая обеспечивает хоть какую-то переносимость. Для разработчиков неторопливых логических игр — оптимальный вариант, но динамическая графика по производительности уже не тянет. Альтернативные платформы решают проблему производительности нанося ущерб совместимости и налагая на разработчиков множество различных ограничений (типа лицензирования), что только отталкивает.

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

Лучшие игры (типа Fight Hard 3D) создаются именно так. Естественно, о переносимости в этом случае придется забыть. Серьезно потрудившись, ты сможешь перенести свое творение на пару-тройку популярных телефонов, но не более того. Иначе затея окажется нерентабельной и к моменту завершения переноса возникнут новые технологии, появятся новые идеи, а игра, казавшаяся когда-то вершиной научной мысли, станет никому не нужным барахлом. В этом и состоит главное отличие приложений для сотовых телефонов от, например, картин.

Россыпь проблем совместимости:
РАСКЛАДКИ КЛАВИАТУРЫ РАЗЛИЧАЮТСЯ В ЗАВИСИМОСТИ ОТ УСТРОЙСТВА. ИНОГДА УДОБНО, НО ЧАЩЕ ВСЕГО — НЕ ОЧЕНЬ. ЗНАЧИТ, ИГРА НЕ ТОЛЬКО ДОЛЖНА ДОПУСКАТЬ ПЕРЕОПРЕДЕЛЕНИЕ КЛАВИШ, НО И ПРЕДОСТАВЛЯТЬ ТЩАТЕЛЬНО ПРОДУМАННЫЙ ИНТЕРФЕЙС, КОТОРЫЙ ПОЗВОЛИТ УПРАВЛЯТЬ ОДНОЙ РУКОЙ И С МИНИМУМОМ ТЕЛОДВИЖЕНИЙ.
ВСТРЕЧАЮТСЯ САМЫЕ РАЗНЫЕ ГЛУБИНА ЦВЕТНОСТИ И РАЗРЕШЕНИЕ ДИСПЛЕЕВ, И УЛОЖИТЬСЯ В ОДНУ ЦВЕТОВУЮ ПАЛИТРУ ВСЕ РАВНО НЕ ПОЛУЧИТСЯ. НЕ ОСТАЕТСЯ НИЧЕГО ДРУГОГО, КРОМЕ КАК СОЗДАТЬ НЕСКОЛЬКО ВЕРСИЙ ГРАФИЧЕСКОГО ОФОРМЛЕНИЯ, КАК ЭТО БЫЛО ВО ВРЕМЕНА CGA-, EGA- И VGA-МОНИТОРОВ.
МОЩНОСТЬ МОБИЛЬНЫХ ПРОЦЕССОРОВ И ОБЪЕМ ДИНАМИЧЕСКОЙ ПАМЯТИ ВАРЬИРУЕТСЯ В ШИРОКИХ ПРЕДЕЛАХ. ЧТОБЫ ПРИ ПОРТИРОВАНИИ НЕ ПЕРЕПИСЫВАТЬ ИГРУ ЗАНОВО, НЕОБХОДИМО ИЗНАЧАЛЬНО ЗАЛОЖИТЬ В НЕЕ МОДУЛЬНУЮ СТРУКТУРУ, ОБЕСПЕЧИВАЮЩУЮ НЕСКОЛЬКО УРОВНЕЙ «РЕАЛИСТИЧНОСТИ». — СООТНОШЕНИЕ МОЩНОСТИ ПРОЦЕССОРА И ОБЪЕМА ПАМЯТИ ТАКЖЕ ПОДВЕРЖЕНО ВАРИАЦИЯМ, ПОЭТОМУ В НЕКОТОРЫХ СЛУЧАЯХ ПРЕДПОЧТИТЕЛЬНЕЕ ТАБЛИЧНЫЕ ВЫЧИСЛЕНИЯ, А В НЕКОТОРЫХ — ОНИ ПРОСТО НЕ ВМЕЩАЮТСЯ.
ЭНЕРГОЕМКОСТЬ АККУМУЛЯТОРОВ ТАКЖЕ РАЗЛИЧНА. ПРИ ПОСТОЯННОЙ ЗАГРУЗКЕ ПРОЦЕССОРА, ДИСПЛЕЯ И ЗВУКА ПОТРЕБЛЕНИЕ ТОКА ВОЗРАСТАЕТ ВЕСЬМА ЗНАЧИТЕЛЬНО. НЕОБХОДИМО ПРОЕКТИРОВАТЬ ИГРУ ТАК, ЧТОБЫ ИГРОВОЙ ЦИКЛ ВМЕЩАЛСЯ ХОТЯ БЫ В ПОЛНОСТЬЮ ЗАРЯЖЕННЫЙ АККУМУЛЯТОР. ЕСЛИ УЧЕСТЬ ТО, ЧТО ТЕЛЕФОН — ЭТО НЕ ТОЛЬКО ИГРУШКА, НО И СРЕДСТВО СВЯЗИ, ЖЕЛАТЕЛЬНО ПРЕДУСМОТРЕТЬ НЕСКОЛЬКО УРОВНЕЙ «ЭНЕРГЕТИЧЕСКОЙ ПРОЖОРЛИВОСТИ».
МОБИЛЬНЫЕ УСТРОЙСТВА СОВЕРШЕННО НЕ ПРИСПОСОБЛЕНЫ К ПРОГРАММИРОВАНИЮ, ПОЭТОМУ ОСНОВНОЙ ЦИКЛ РАЗРАБОТКИ ПРИХОДИТСЯ ВЕСТИ НА ЭМУЛЯТОРЕ, ОДНАКО ПОВЕДЕНИЕ ЭМУЛЯТОРА МОЖЕТ СУЩЕСТВЕННО ОТЛИЧАТЬСЯ ОТ ПОВЕДЕНИЯ «ЖИВОГО» СОТОВОГО ТЕЛЕФОНА ИЛИ КПК.
НЕ НА ВСЕ СОТОВЫЕ ТЕЛЕФОНЫ МОЖНО НАЙТИ СПЕЦИФИКАЦИЮ И ЭМУЛЯТОРЫ. ЕСЛИ НЕТ СПЕЦИФИКАЦИИ, О ПРОГРАММИРОВАНИИ НА АССЕМБЛЕРЕ МОЖНО СРАЗУ ЗАБЫТЬ. ПРИХОДИТСЯ ПРОГРАММИРОВАТЬ ПОД J2ME, ОСТАВАЯСЬ В ПОЛНОМ НЕВЕДЕНИИ НАСЧЕТ ДОСТУПНОЙ ПАМЯТИ И ПРОИЗВОДИТЕЛЬНОСТИ.
ТЕСТИРОВАНИЕ ИГР ЗАТРУДНЕНО ТЕМ, ЧТО МОБИЛЬНЫХ УСТРОЙСТВ ОЧЕНЬ МНОГО, ОНИ СТОЯТ ДОРОГО, УСТАРЕВАЮТ БЫСТРО И ПРИОБРЕТАТЬ ВЕСЬ АССОРТИМЕНТ ОБОРУДОВАНИЯ, ИМЕЮЩЕГОСЯ НА РЫНКЕ, МОЖЕТ ПОЗВОЛИТЬ СЕБЕ ТОЛЬКО КРУПНАЯ ФИРМА.
СЛОЖНОСТЬ ПЕРЕНОСА ЧАСТО ПРЕВЫШАЕТ ТРУДОЕМКОСТЬ РАЗРАБОТКИ ПРОГРАММЫ С НУЛЯ. К ТОМУ ЖЕ В ЭТОМ СЛУЧАЕ МЫ МОЖЕМ ЗАДЕЙСТВОВАТЬ СПЕЦИФИЧЕСКИЕ ОСОБЕННОСТИ КОНКРЕТНОЙ МОДЕЛИ ТЕЛЕФОНА.
ОТСУТСТВУЕТ КАКОЙ БЫ ТО НИ БЫЛО СТАНДАРТ НА ЯЗЫК И API МОБИЛЬНЫХ УСТРОЙСТВ. КОМПИЛЯТОРЫ ДВОИЧНОГО И БАЙТ-КОДА ОТ РАЗНЫХ ПРОИЗВОДИТЕЛЕЙ СОВЕРШЕННО НЕСОВМЕСТИМЫ МЕЖДУ СОБОЙ И ОБЕСПЕЧИВАЮТ ПЕРЕНОСИМОСТЬ ТОЛЬКО В РАМКАХ ЗАРАНЕЕ ВЫБРАННОГО МОДЕЛЬНОГО РЯДА, КОТОРЫЙ ПОСТОЯННО ПОПОЛНЯЕТСЯ, НО ДВИЖЕТСЯ В ЗАРАНЕЕ НЕПРЕДСКАЗУЕМОМ НАПРАВЛЕНИИ И ОЧЕНЬ ЧАСТО ПАДЕТ ВНИЗ. А ПОСКОЛЬКУ ИСХОДНЫЙ КОД КОМПИЛЯТОРА И ВСЕХ СОПУТСТВУЮЩИХ ЕМУ БИБЛИОТЕК ЯВЛЯЕТСЯ СОБСТВЕННОСТЬЮ ФИРМЫ-ПРОИЗВОДИТЕЛЯ, РАЗРАБОТЧИКАМ ИГР СОВЕРШЕННО НЕ ГАРАНТИРУЮТ ОТСУТСТВИЕ «ИЗМЕНЫ».
МОБИЛЬНЫЙ МИР ОЧЕНЬ ИЗМЕНЧИВ И НЕПОСТОЯНЕН. ЗА ВРЕМЯ, ПОТРАЧЕННОЕ НА ПЕРЕНОС, КОНКРЕТНАЯ МОДЕЛЬ ТЕЛЕФОНА МОЖЕТ СТАТЬ ПОРЯДОЧНО УСТАРЕВШЕЙ ИЛИ ОКАЗАТЬСЯ ВЫТЕСНЕННОЙ ДРУГОЙ, СОВЕРШЕННО ИНОЙ ПО ХАРАКТЕРИСТИКАМ. И ТОГДА ВЕСЬ ПРОЦЕСС ПРИДЕТСЯ ПРОДЕЛЫВАТЬ ЗАНОВО...
Интерес к мобильным платформам вызван в первую очередь тем, что сотовый телефон дает программистам возможность разработать достойную игру за короткое время (от трех месяцев до года) и со скромными вложениями. На ПК игры выродились в монстров, над созданием которых работают огромные коллективы. Чтобы создать нечто конкурентоспособное на ПК усилиями нескольких человек, требуются принципиально новые идеи. А у кого они есть?

Сотовый телефон хорош тем, что народ толпами радуется питону, арканоиду или тетрису, а от драчки, реализованной в стиле ZX-SPECTRUM, — буквально бьется в экстазе. К сожалению, в отличие от старика спектрума, век мобильных игрушек очень недолог. Зато народ привык покупать их (через мобильные службы, конечно), а не пионерить естественным образом в ближайшем ларьке. Уровень пиратства на мобильной арене намного ниже, чем на ПК, поэтому заработать деньги на программировании игр вполне реально, даже если мы учтем все сложности переноса на другие платформы.

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

Ассемблер в мобильных устройствах
В СВОЕМ ИНТЕРВЬЮ ВЛАД СУГЛОБОВ, ОДИН ИЗ РАЗРАБОТЧИКОВ ПОПУЛЯРНОЙ ИГРЫ FIGHT HARD, СКАЗАЛ СЛЕДУЮЩЕЕ: «МЫ РАБОТАЛИ НАД FIGHT HARD 3D (FIGHT HARD — ТОРГОВЫЙ ЗНАК КОМПАНИИ G5 SOFTWARE) ДОЛГИХ ПОЛТОРА ГОДА И ПОТРАТИЛИ НА СОЗДАНИЕ ИГРЫ ДЕНЬГИ, КОТОРЫЕ ДАЖЕ СЕЙЧАС ОЧЕНЬ РЕДКО ТРАТЯТСЯ НА СОЗДАНИЕ МОБИЛЬНЫХ ИГР. FIGHT HARD 3D БЫЛА ЗАДУМАНА ПЕРВОЙ ТРЕХМЕРНОЙ МОБИЛЬНОЙ ИГРОЙ ДЛЯ ТЕЛЕФОНОВ НА БАЗЕ ПРОЦЕССОРА ARM 6, И ОНА СТАЛА ЕЙ. ДО СИХ ПОР НА BREW НА ТАКИХ ТЕЛЕФОНАХ ЕСТЬ ТОЛЬКО ДВЕ ТРЕХМЕРНЫЕ ИГРЫ, И ОБЕ НАШИ: FIGHT HARD 3D И RIDERX 3D. МЫ ПОТРАТИЛИ МНОГО ВРЕМЕНИ НА ТО, ЧТОБЫ СДЕЛАТЬ ИГРУ ДЕЙСТВИТЕЛЬНО ЗАХВАТЫВАЮЩЕЙ. МЫ БАЛАНСИРОВАЛИ РПГ-МОДЕЛЬ, ТЩАТЕЛЬНО ВЫВЕРЯЛИ АНИМАЦИИ БОЙЦОВ, ОПТИМИЗИРОВАЛИ ТРЕХМЕРНЫЙ «ДВИЖОК» ИГРЫ НА АССЕМБЛЕРЕ И НЕ ВЫПУСКАЛИ ИГРУ, ПОКА НЕ ПОЧУВСТВОВАЛИ, ЧТО ОНА ПОЛУЧИЛАСЬ ДЕЙСТВИТЕЛЬНО ИНТЕРЕСНОЙ. И ЛЮДИ ОТ НЕЕ ПРОСТО НЕ МОГЛИ ОТОРВАТЬСЯ ПЕРВЫЕ ПОЛЧАСА».

КАК ВИДНО, АССЕМБЛЕР И BREW ПРИ ВСЕХ СВОИХ НЕДОСТАТКАХ ПОЗВОЛЯЮТ СОЗДАВАТЬ ОЧЕНЬ СТОЯЩИЕ ВЕЩИ!




КРИС КАСПЕРСКИ АКА МЫЩЪХ


Искусство это жизнь

Вернуться в «Игромир»

 

 

cron