Выбор игрового движка.


    Первый вопрос в начале разработки любой игры — использование игрового движка. Стоит использовать уже существующий движок или разрабатывать собственное ядро? В последнем варианте есть свои плюсы. Во-первых разработчик всегда свой код воспринимает легче чем чужой и соответственно в дальнейшей поддержке будет меньше казусов. Во-вторых — собственную разработку всегда можно оптимизировать под собственные требования. Третий вопрос, но собственно не последний, лицензирование, думаю тут комментарии не нужны... Впрочем, в собственной разработке есть и минусы — все зависит от дальнейших планов на разработку и поддержку. Из главных минусов я бы выделил ошибки, от них никто никогда не застрахован, не зависимо от качества управления проектом и выбора процессов разработки. Тестирование, устранение ошибок и оптимизация может занять довольно значительное время, которое может затмить собой все плюсы. Безусловно данный факт напрямую зависит от уровня разработчиков и качества планирования процесса, но в данном случае я рассматриваю обобщенный вариант, в котором данный факт опускать нельзя.
    Следующим важным возникающим вопросом стоит направленность разработки. В случае если продукт нацелен на определенную платформу — круг задач может быть четко ограничен, в противном случае, если в планах разработки стоит кроссплатформенное приложение — это значительно усложняет разработку движка игры. Разработка кроссплатформенного движка соответственно требует несколько другого уровня разработки и тестирования и соответственно значительно может увеличить время создания.
Рассмотрев вышеописанные факты, было принято решение рассмотреть игровые движки сторонних разработчиков. Но для выбора движка в данном случае накладывается ряд ограничений. Один из главнейших вопросов при использовании сторонних разработок — это их открытость. Возможно данный вопрос не для всех и всегда важен, но если разработчик осознает, что поддержка продукта лежит на его плечах, данный факт должен учитываться на мой взгляд. Мне, как разработчику, хочет иметь доступ к исходному коду игрового движка. В случае выбора стороннего движка с проприетарной лицензией, не имея возможности доступа к коду, стоит обратить внимание только на те продукты, которые имеют активную поддержку, но этот вариант не мой случай, ибо он требует определенных дополнительных вложений. Поэтому изначально будем рассматривать только открытые движки для игр.
    Отступим от общих размышлений и перейдем к выбору конкретного продукта. В данном случае продукт в первую очередь ориентирован на мобильные платформы. В двух словах наши критерии следующие для выбора:
  • Кроссплатформенность (минимально 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 гораздо проще в разработке, но нативный код более производительный. Впрочем, данный выбор сугубо субъективный.

Редактор Inkscape


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



Небольшое замечание по поводу свойств документа. Одна особенность в версии для Linux, к сожалению «под рукой» нет версии для Windows, и точно сказать как это реализовано там, нет возможности и вспомнить сейчас этого не могу. Размер холста и прочие характеристики ( такие как сетка, направляющие, цветовые профили) естественно устанавливается в «Свойствах документа» (меню «Файл»), при этом применение свойств происходит в динамическом режиме, без подтверждения кнопкой «Ок» или «Применить» (которая не существует). Т.е. если в диалоге свойств изменить размер холста то документ сразу изменяется. Впрочем к такому поведению привыкаешь. В остальном ничего необычного, можно установить цвет фона, цвет направляющих линий, вид сетки и прочее. Более подробно изучить установки свойств документа не составляет труда.
Следующий шаг — создание графических объектов. Для рисования редактор имеет набор инструментов, в общем-то стандартный, но достаточный. Несколько примитивов — прямоугольники, окружности и многогранники.








Пример, нажимаем F5 — создаем круг. В настройках программы можем установить — как создавать объект по умолчанию — с заливкой или без.

Если объект необходимо залить одним цветом — можно просто выбрать цвет на цветовой палитре внизу окна. Если выбрать цвет правой кнопкой мыши, то указанный цвет можно применить по выбору для заливки или для обводки. В диалоге «Заливка и обводка» можно более детально определить характеристики объекта. Выбираем меню «Объект» - «Заливка и обводка», если у нас не отображен диалог. На закладке «Заливка» выбираем тип заливки. Для градиентной заливки вызываем диалог «Редактирования градиента» кнопкой «Правка» и настраиваем цвета и точки градиента.

На закладке «Обводка» устанавливаем цвет обводки. Закладка «Стиль обводки» позволяет установить толщину и стиль обводки.
С помощью инструмента «Редактирование узлов контура» можно изменить положение опорных точек градиентной заливки.

Один из универсальных инструментов для создания векторных изображений — кривые Безье. Выбираем на панели инструментов или нажимаем F6 и создаем любые профили. Соответственно для замкнутых профилей, созданных с помощью кривых устанавливаем заливку и обводку, как было указано выше.

Другим хорошим средством является редактирование контуров. Создаем контур, к примеру окружность, выбираем меню «Контур» - «Оконтурить объект» и наши примитивы (окружности, прямоугольники или многогранники) превращаются в редактируемый объект. Далее с помощью инструмента «Редактирование точек контура» мы можем изменять их форму, добавлять или удалять точки контура. К примеру изображение процесса создания глаза мультипликационного героя.

Инструмент «Оконтурить штрих» позволяет оконтурить обводку и сделать объект выразительней с помощью толщины линий.
Если элемент составной — как в нашем случае, то для удобства оперирования создаем из набора объектов группу «Объект» - «Сгруппировать» (Ctrl + G ). Соответственно в дальнейшем, если необходимо редактировать отдельные объекты — их можно всегда разгруппировать.
Сгруппировав объекты, создающие глаз нашего героя, мы копируем группу и получаем два одинаковых объекта. Следует заметить что имеются такие простые инструменты для работы с объектами как развороты и зеркальное отображение объектов. Данные инструменты представлены как в меню так и на панели инструментов.
В данном случае мы воспользуемся простым копирование со вставкой с ручным поворотом, который вызывается щелчком на объекте после его выделения. В итоге получаем некий смайлик.

Перекрытие объектов регулируется поднятием объектов на передний план или опусканием на задний план. Все эти операции выполняются на одном слое объектов. Соответственно, если мы создаем более сложное изображение — воспользуемся слоями в документе. Для вызова диалога управления слоями выбираем меню «Слой» - «Слои» (Shft — Ctrl — L ).

Добавляем новый слой и можем создавать любые объекты на новом слое. Слои могут быть отображаемыми или скрытыми, редактируемыми или нет. Для каждого слоя отдельно устанавливается прозрачность, что позволяется управлять прозрачность не отдельно каждого объекта, а всего слоя объектов. Для примера просто создаем новый слой и располагаем на нем отдельный объект.



Для редактирования более сложных иллюстраций выбираем вид отображения «Каркас» (меню «Вид» - «Отображение» - «Каркас» ), который позволяет более точно редактировать контуры объектов.



Простой набросок, выполненный выше затрагивает маленькую часть инструментария редактора.
    В итоге стоить заметить что основной формат, используемый в Inkscape — SVG (scalable vector graphics). Универсальный формат для векторной графики, который кроме конвертирования в различные форматы позволяется также редактировать документ как XML файл. И сам Inkscape имеет встроенный редактор для работы с XML файлами.

О редакторах для векторной графики


     Периодически возвращаясь к поискам удобного графического редактора для создания векторных изображений обнаруживаешь что ситуация на данном рынке практически не изменяется. Многие годы лидирующие позиции занимают одни и те же продукты. Впрочем, подобная ситуация прорисовывается практически в любой области программного обеспечения. Но не будем отвлекаться на общие вопросы, касающиеся эволюционирования продуктов, потому как данная тема очень уж обширна и в общем-то на данный момент интересует лишь некоторый её аспект. Что мы имеем на рынке ПО для тех, кто хочет выразить свои творческие замыслы в цифровом формате. Интересуют именно редакторы, которые позволяют работать именно с творческими замыслами, создавать полноценные иллюстрации. Элементарные графические элементы, подобные схемам или графикам, можно создавать и в продуктах из офисных пакетов, будь то Microsoft Office, OpenOffice или его близнец LibreOffice, но для создания полноценной графики все таки требуется несколько больший функционал. Многие годы я пользовался одними и теми же продуктами и на данный момент практически ничего и не изменилось. Почему? Может быть потому, что люди выбирают то, что им удобней и зачем что-то новое, если и это хорошо работает. К примеру существование современных программных продуктов для рисования ничтожно по сравнению со временем существования карандашей. Может не лучшая аналогия но тем не менее она показывает насколько мы любим пользоваться тем, к чему привыкли. Абстрагируясь от вечных мыслей о смысле существования вернемся к основной цели - чем можно воспользоваться для создания иллюстраций в формате векторной графики.
     Среди общеизвестных лидеров — Adobe Illustrator и CorelDRAW. Оба продукта изначально были нацелены именно на векторный формат графики и предназначены именно для профессиональной работы. Имеют богатый функционал для редактирования и общем-то являются «законодателями моды» на данном рынке. Впрочем очень широкие возможности этих продуктов компенсируются парой факторов. Во-первых — это довольно высокая цена, что естественно объясняется ориентированностью данных пакетов на профессионалов. Второй недостаток — это ориентированность исключительно на одну операционную систему. Если Adobe Illustrator продолжает поддерживать версии для Windows и MacOS, то Corel решила поддерживать версию только для Windows. Я не являюсь отчаянным противником каких либо ОС, просто всегда хочется иметь выбор. И в данном случае — если я пользуюсь Linux, хочется иметь редактор для создания иллюстраций и для этой ОС.
    Среди других редакторов я бы выделил только Xara Xtreme и Inkscape. Xara имеет долгую историю разработки и была в ряде родоначальников среди подобных продуктов. Но как и у продуктов от Adobe и Corel прекращена поддержка для Linux. Существует недоработанная версия для Linux, которая вполне работоспособна.
    Inkscape — единственный на данный момент продукт, который до последнего времени развивался как кроссплатформенный. Кроме того, другим плюсом для него я бы выделил то, что он является открытым продуктом. Продукты от Corel и Adobe имеют несколько более богатый функционал, но тем не менее Inkscape вполне достаточен для создания качественных иллюстраций. Для меня данный продукт и является окончательным выбором. Общий вид редактора с созданной в нем иллюстрацией.

Some simple sketches about the lack of the emotions....

Without emotions in business...
Without emotions in travel...

Without emotions in sport...