280 likes | 635 Views
Особенности разработки мобильных J2ME игр. GameDev – что это такое?. Игры любят все! Не так ли? Gameplay - интерактивность, т.е. как игрок взаимодействует с игровым миром и как игровой мир реагирует на действия игрока
E N D
Особенности разработки мобильных J2ME игр Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
GameDev – что это такое? • Игры любят все! Не так ли? • Gameplay - интерактивность, т.е. как игрок взаимодействует с игровым миром и как игровой мир реагирует на действия игрока • Doom – геймплей в 3D мире, в котором игрок уничтожает монстров и собирает различные артефакты • StarCraft – геймплей состоит в маневрировании юнитов на карте, в добыче ресурсов, построении войск и последующих битвах • Civilization – геймплей в освоении мира, построении общества, открытии новых технологий и общении с другими обитателями мира • Очень перспективная область. По оценкам маркетинговых исследований рынок мобильных игр за последующие 5 лет вырастет в 15-20 раз. • Kenjitsu успешно работает на рынке мобильных игр уже более 2х лет Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Компания Kenjitsu • Основана в 2002г. • Позиционирует себя как «Leader in Game Development Outsourcing» • Зарекомендовала себя как надежный аутсорсинг-партнер и опытный разработчик игр • Сотрудничает с крупными клиентами в Европе, США и Японии • Штат состоит из профессионалов с большим опытом работы в игровой индустрии • Увеличивает и развивает команду разработчиков • http://www.kenjitsu.net Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Как создаются игры? • Какие бывают игры: • аркады (гонки) • RPG (MUD) • стратегии • шутеры • паззлы • спортивные игры Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Различные платформы • J2ME • BREW • Symbian • Mophun • ExEn • WGE Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
J2ME • J2ME — почти рыночный стандарт и это та платформа, на которую ориентировано 70% игр для 90% устройств • Разработка для J2ME чрезвычайно проста. SDK бесплатен, нет никаких расходов, связанных с лицензированием • Большое число поддерживаемых устройств • Короткий цикл разработки • Для J2ME нет какой-то определенной бизнес-модели • Портирование игр с одного телефона на другой • В нашей фирме есть специальный Sales-отдел, занимающийся проблемами продвижения игр на рынке • Разработано порядка 70 игр под эту платформу Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
BREW • Binary Runtime Environment for Wireless — «двоичная среда исполнения для беспроводных устройств» • Программная платформа, позволяющая владельцам мобильных телефонов сравнительно быстро загружать приложения и работать с ними • Разработчиком платформы стала американская компания Qualcomm - "прародитель" CDMA • Оператору предоставляется возможность изъять или вернуть на доработку любое приложение, получившее негативную оценку клиентов • В качестве составной части платформы BREW компания Qualcomm предлагает BREW SDK - инструментарий для обеспечения переносимости приложений • Наша фирма зарегистрирована в Qualcomm • Разработано около 10 игрпод эту платформу Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
ExEn • Execution Engine. Разработан In-Fusio, чтобы обойти ограничения, которые накладывает на игру платформа J2ME. • Обеспечивает важные функции (масштабирование, панорамная прокрутка, трассировка лучей, вращения) • Виртуальная машина примерно в 30 раз быстрее чем стандартная VM (хотя обычно выигрыш в производительности составляет от 10 до 15 раз) • Бизнес-модель In-Fusio разделена на два уровня: «стандартный» и «премиум» • Поддерживаемые телефоны: Philips Fisio 530/825, Alcatel OT 735/535/531, Panasonic X70/G60, Sagem myX-5/myG-5/myX-6 Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
WGE • Wireless Graphics Engine сделан TTPCom • Несколько удобных API упрощают 2-3D программирование (включая управление фрагментами и функциональность отслеживания столкновений), предоставляют простой доступ к сетевым функциям и предоставляет звуковую поддержку • Предоставляется бесплатный SDK • Очень мало телефонов, поддерживающих этот движок • Игр порядка 40 Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Mophun • Mophun описывается своими создателями (Synergenix) как "карманная консоль на базе ПО" • С технической точки зрения, у Mophun нет конкурентов. Тесты, которые провели независимые компании, показали, что в устройстве, где Mophun выдает 60 MIPS, J2ME показывает 400 KIPS (это означает в 150 раз медленнее) • Бизнес-модель напоминает In-Fusio: после того, как игра сделана, Synergenix занимается сертификацией, продажей и маркетингом Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Danger • Hiptop device, Sidekick I и Sidekick II • Компания Danger • Используется своё Java Danger API, не имеющее ничего общего с J2ME • Экран 240х160, 32 Мб heap • Разработано около 20 игр под эти устройства Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Этапы создания игр • Проектирование • Кодирование + создание графики • Компиляция и упаковка • Тестирование на телефоне Кажется, что игру сделать довольно просто... Однако это не так! • Многое зависит от профессионализма художника • Большую роль играет наличие опыта и креативности у программиста • Программирование под мобильные телефоны имеет очень много подводных камней! Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Плюсы и минусы для команд Плюсы для команды: • Маленький коллектив (1+2+1) • Лёгкость освоения MIDP • Недолгосрочные проекты • Много документации • Массовость проектов Минусы для команды: • Сложность перехода с других платформ • Необходимость опыта и профессиональной компетенции Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Средства разработки • Eclipse 3.0, IDEA 4.5, NetBeans 4.0, Sun Studio One for J2ME, JBuilder • J2ME Wireless Toolkit 2.2 • Ant • CVS • Photoshop Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Технические детали для Racer Из чего состоит игра: • Инвариантность скорости игры по отношению к различным телефонам • Механизмы перемещения по карте и её отрисовка • Механизмы отображения спрайтов машинок • Механизмы коллизий • AI соперников • Продвинутая физика (ускорения, заносы) Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Как сделать одинаковую скорость? • Вычисляется длительность предыдущего тика игры • Вычисляется, сколько надо ждать потоку (до величины TICK_DURATION) Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Отрисовка карты • Абсолютные координаты объекта: (X, Y) • Абсолютные координаты камеры: (cameraX, cameraY) • Относительные координаты объекта: (X - cameraX, Y - cameraY) Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Спрайты машинок • В памяти хранится цельная картинка • При отображении просто делается setClip() в нужную область экрана с шириной и высотой окна, соответствующему текущему спрайту Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Коллизии в игре • Коллизии с машинками – пересечение полигонов • Узкое место – коллизии с тайлами • Решение - накладывается виртуальная сетка коллизий • Каждый проблемный тайл аппроксимируется простой геометрической фигурой Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
AI соперников • Добавляются waypoint-ы • AI машинки едут от waypoint-а к waypoint-у (по сути от поворота к повороту) • Сложность: надо для каждой новой карты вручную расставлять waypoint-ы (их бывает много – до 60 штук) Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
y V Vy Vx x Физика движения • Вектор скорости разбивается на составляющие - горизонтальные и вертикальные проекции: • При движении значения и меняются в зависимости от направления движения, ускорения и тайла, по которому едем. Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Особенности разработки • Несоответствие эмулятора и реального телефона • Большой размер jar-a • Недостаток свободной памяти (heap) • Низкая производительность (меньше 3-4FPS) • Медленная матрица перерисовки экрана Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Разработка на эмуляторах • Не все эмуляторы просто достать (кроме Nokia, Siemens, SonyEricsson – для всех этих телефонов с поддержкой Java эмуляторы достать просто) • Эмулятор всегда отражает НЕ реальную ситуацию с памятью, производительностью, звуком и др. • Нужно уметь загружать игры на телефоны и отлаживать на них • Загрузка: WAP OTA (Over the Air) delivery и без помощи Интернета: Bluetooth, IRDA, Cable • Отладка: вывод trace информации на экране телефона • У некоторых инженерных версий есть консоль Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Оптимизация • Низкая производительность. Лучшее для оптимизации – функции отрисовки изображения. Например, если экран содержит 64 тайла, то: • буферизация карты для дальнейшего переиспользования • хранение копии части карты в памяти • Нехватка памяти. Самая большая проблема, особенно на слабых J2ME устройствах. Маленькие хитрости: • Использование функций поворота изображения • Перенос массивов из кода в ресурсы • Освобождение памяти после загрузки вступительных изображений • Уменьшение графики Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Так иногда бывает... • Даже одно не так понятое слово заказчика к игре может коренным образом сказаться на архитектуре игры и возможно на её бюджете • Пример: проект Magic Arcada. Сначала предполагалось делать снежные уровни горизонтальными, но к середине проекта выяснилось, что нужны наклонные уровни. Как итог: пришлось менять графику, движок карты, физику персонажей • Учите английский! Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Что нас ждёт? • Через пару лет появятся совершенно другие телефоны и консоли с полноценной аппаратной поддержкой 3D-графики, с большими экранами, отличной производительностью и достаточной памятью • Писать игры будет одно удовольствие! Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net
Заключение • Из моей презентации вы узнали: • что такое игровая индустрия • как писать игры • разработка игр на J2ME не так уж сложна, однако есть нюансы • существуют огромные перспективы роста производства мобильных игр • Kenjitsu – одна из крупнейших компаний в Питере, ориентированных на разработку мобильных игр и имеющая огромный опыт в игровой индустрии Michael Nikitin, Lead Programmer. Visit http://www.kenjitsu.net