Делаем Простой Редактор Уровней На Основе Плагина Для Inkscape

Введение Я думаю, что многие программисты создали или пытались создать свою собственную игру.

Обычно процесс доходит до того, что большая часть всего написана и нужно начинать строить уровни, игровые сцены и т.д. Если вы используете готовые решения, «из коробки» — например Unity, то там будет Нет проблем.

Но могут возникнуть проблемы с лицензированием, поддержкой разных платформ — возможно, кто-то захочет попробовать сделать что-то под Linux/Mac, где не всегда можно найти правильное решение.

А начинающим гейммейкерам интереснее использовать что-то свое, простое в разработке и построении функционала, адаптированное под себя.

Для себя я нашел решение в виде написания своего небольшого плагина для Inkscape. В свободное время мне интересно повозиться с собственной библиотекой, написанной на AS3 - да-да, flash :D. Библиотека существует в виде обертки для физического движка Box2D, использует кучу полезных вещей — собственный конечный автомат, небольшие обертки для твиннеров для программной анимации и систему частиц.

В принципе, вы можете сделать что-то игровое, маленькое и стильное на свой вкус.

Поскольку я люблю OpenSource и удобство, я программирую в FlashDevelop. Графического редактора, естественно, там нет. И вряд ли это сильно поможет в создании объектов со своими параметрами.

Я вспомнил Inkscape, его модульность, плагины и сам SVG — сам XML, простой в разборе.

Я решил написать плагин для Inkscape. Проблемы Начав искать информацию «о», я нашел совсем немного, целый пример «Плагина Hello World», а все остальное было плохо структурировано и на английском языке.

И Python как язык сценариев для плагинов.

Функциональный и нетипизированный, ужасный.

Вроде на Ruby можно писать плагины, но я не пробовал.

Но проанализировав пример и посмотрев готовые модули, установленные с помощью Inkscape, я понял, что не всё так плохо.

Вам просто нужно найти правильные методы работы со слоями и фигурами, определить, что именно вы хотите сделать, и запрограммировать это.

Далее в приложении парсим готовый SVG/XML — благо во всех языках есть отличные инструменты для таких целей, подаем куда нужно — у меня есть специальный конструктор, и готово.

Структура готового SVG Я решил выделить каждый уровень как отдельный слой в SVG, об этом важно подумать при создании плагина.

Миры физических объектов могут иметь круглую, квадратную и сложную форму (выпуклый многоугольник или несколько любых многоугольников через несколько фигур) — требования Box2D. И конечно куча параметров - как физических, так и личных.

Объекты ведут себя как обычно для SVG, нормально отображаются в редакторе и имеют кучу кастомных тегов и параметров.

Удобен для выделения разных типов тел – динамических, статических, выделения их разными цветами.

Пока что я реализовал только поддержку круглых и квадратных тел.

Важно: операции перемещения и вращения в Inkscape не меняют напрямую параметры тел в окончательном SVG. Все проходит через матрицы трансформации матрица для вращения и свойств переводить двигать телом.

Естественно, при разборе таких данных нужно немного применить матричную математику.

Структура плагина Плагин в Inkscape состоит из двух частей, двух файлов — например my_super_plugin.py И my_super_plugin.inx .

Файл my_super_plugin.inx существует в виде набора специальных XML-тегов, что-то похожее на bean-компоненты в Java. В нем указывается графический интерфейс окна плагина, параметры ввода данных, типы кнопок и т.д. На скриншоте ниже показано «моё детище».



Делаем простой редактор уровней на основе плагина для Inkscape

Файл my_super_plugin.py указывает реальный скрипт для работы с SVG-файлом.

Скрипт принимает его на вход, выполняет необходимые действия и отправляет на выходе, Inkscape все рисует. Быстро и красиво.

Насколько я понимаю, в скрипте код и Inkscape связаны через модуль inkex.py. На страницах официальной документации редактора описаны необходимые типы данных для my_super_plugin.py И my_super_plugin.inx (ссылки ниже).

ИНКС Выкладываю код моего .

inx-файла: Код

   

<inkscape-extension>

Теги: #Inkscape #плагин #as3 #as3 #python #xml #ActionScript #flash #box2d #редактор уровней #редактор #разработка игр #программирование игр #программирование #Adobe Flash #разработка игр
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.