Первый вопрос в начале
разработки любой игры — использование
игрового движка. Стоит использовать
уже существующий движок или разрабатывать
собственное ядро? В последнем варианте
есть свои плюсы. Во-первых разработчик
всегда свой код воспринимает легче чем
чужой и соответственно в дальнейшей
поддержке будет меньше казусов. Во-вторых
— собственную разработку всегда можно
оптимизировать под собственные
требования. Третий вопрос, но собственно
не последний, лицензирование, думаю тут
комментарии не нужны... Впрочем, в
собственной разработке есть и минусы
— все зависит от дальнейших планов на
разработку и поддержку. Из главных
минусов я бы выделил ошибки, от них никто
никогда не застрахован, не зависимо от
качества управления проектом и выбора
процессов разработки. Тестирование,
устранение ошибок и оптимизация может
занять довольно значительное время,
которое может затмить собой все плюсы.
Безусловно данный факт напрямую зависит
от уровня разработчиков и качества
планирования процесса, но в данном
случае я рассматриваю обобщенный
вариант, в котором данный факт опускать
нельзя.
Следующим важным
возникающим вопросом стоит направленность
разработки. В случае если продукт нацелен
на определенную платформу — круг задач
может быть четко ограничен, в противном
случае, если в планах разработки стоит
кроссплатформенное приложение — это
значительно усложняет разработку движка
игры. Разработка кроссплатформенного
движка соответственно требует несколько
другого уровня разработки и тестирования
и соответственно значительно может
увеличить время создания.
Рассмотрев вышеописанные
факты, было принято решение рассмотреть
игровые движки сторонних разработчиков.
Но для выбора движка в данном случае
накладывается ряд ограничений. Один из
главнейших вопросов при использовании
сторонних разработок — это их открытость.
Возможно данный вопрос не для всех и
всегда важен, но если разработчик
осознает, что поддержка продукта лежит
на его плечах, данный факт должен
учитываться на мой взгляд. Мне, как
разработчику, хочет иметь доступ к
исходному коду игрового движка. В случае
выбора стороннего движка с проприетарной
лицензией, не имея возможности доступа
к коду, стоит обратить внимание только
на те продукты, которые имеют активную
поддержку, но этот вариант не мой случай,
ибо он требует определенных дополнительных
вложений. Поэтому изначально будем
рассматривать только открытые движки
для игр.
Отступим от общих
размышлений и перейдем к выбору
конкретного продукта. В данном случае
продукт в первую очередь ориентирован
на мобильные платформы. В двух словах
наши критерии следующие для выбора:
- Кроссплатформенность (минимально Android, iOS);
- Достаточно реализации 2D графики в игровом движке;
- Интеграция с физическими движками;
- Открытый исходный код.
Рассмотрев несколько
вариантов я выделил всего пару продуктов.
В данном случае это:
- LibGDX от Badlogic Games;
- Cocos2d-x;
Первый
вариант — LibGDX.
Хороший кроссплатформенный движок,
созданный австрийским программистом,
создателем компании с названием Badlogic
Games. Ядро написано на Java с использованием
С++ кода для оптимизации. Проект активно
развивается, в отличие от других многих
проектов. Плюс — открытость исходного
кода. Ничего сказать о поддержке 3D в
данном проекте, хотя оно заявлено, но в
2D много примеров реализованных проектов.
Дополнительным плюсом являются
приложения, помогающие в разработке, и
созданные автором на данном движке
(такие как Physics Body Editor). Но использование
инструментов в разработке это другая
тема. Достаточно информации и примеров
для ознакомления. Довольно удобен в
использовании и имеет четкую структуру
классов, позволяющую легко разобраться
с принципами работы с ним. Вывод —
хороший вариант — если вы хотите
разработать кроссплатформенную игру
с использованием Java и OpenGL ES.
Второй
вариант — это порт 2D игрового движка
Cocos2d
(iPhone). Cocos2d-x
— тоже активно развивающийся проект
на данный момент. Основная часть проекта
написана на С++ с небольшим использованием
Java и Objective-C. Исходный код открытый,
распространяется по лицензии MIT. Поддержка
довольная активная и кроме того сообщество
пользователей также довольно активно.
Не
вдаваясь в технические подробности
скажу, что выбор пал на последний вариант.
Решающим фактором послужил язык
реализации движка. Cocos2d-x
позволяет
разрабатывать игры на С++, Java гораздо
проще в разработке, но нативный код
более производительный. Впрочем, данный
выбор сугубо субъективный.