Итак всех приветствую на статье, которая посвящена Defold. Defold - это бесплатно-распространяемый игровой движок от ребят из King. Язык программирования в нём - Lua. Сегодня я хочу лишь немного рассказать о нём.
Оф. сайт: Тут
На данный момент движок поддерживает такие платформы как Android, iOS и Web. А именно HTML5.
Итак, чтобы создать проект, вы должны авторизироваться на оф. сайте и перейти в "приборную панель".
Примечание: В моём случае был баг со входом в аккаунт в Defold Editor 2. Кнопка просто не работала. Решил через Defold Editor 1.
Открыл проект там, а только потом в Defold Editor 2 нашёл проект на диске.
На сайте есть две версии Defold. Здесь я рассматривать Defold Editor 2. Начну я с самого движка. Выглядит он так:
Теперь поговорим о каждой панельке.
- Первая панель - "Assets". Здесь отображаются все ваши файлы. Изображения, звуки, скрипты и т.п.
- Во второй панели у нас что-то вроде настройки объектов (Inspector, кто поймёт). В ней вы пишите код, настраиваете GUI, TileMap, TileSource, Collection's и прочее.
- Панель "Outline" отображают иерархию нашей
сцены, только здесь они называются "Collection". Там отображены все игровые объекты (рисунок ниже - схема Collection).
- В панели "Properties" вы настраиваете свойства ваших объектов. В отличии от панели 2, здесь проводятся немного другие настройки, я продемонстрирую и проясню это позже.
- Здесь у нас есть сразу несколько окошек. В одном самая классическая консоль, в которой отображаются все ошибки, которые вы допустили, а также разные сообщения для отладки. Есть панель, в которой вы можете редактировать кривые. Тут вроде всё понятно.
- Последнее основное окно - это история ваших действий. + - добавление объекта в панели "Outlines" . - удаление.
Вот иерархия Collection:
А вот список всех компонентов:
О них можно прочитать здесь
Теперь поговорим о структуре кода
- Метод init() вызывается у нас в начале игровой сессии.
- Метод final() вызывается у нас в конце игровой сессии.
- Метод update() вызывается каждый игровой кадр.
- Метод on_message() у нас обрабатывает, так называемые "Hash" или проще говоря ключи. Это сложно объяснить, но вы всегда можете прочесть это вот здесь. Возможно это напомнит разработчикам Unity метод SendMessage().
что компоненты, при их указании, имеют такой вид: "#script", где "script" - имя компонента.Т.е. если вы хотите обратится к другому скрипту,
вы должны так и прописать "#script". У каждого объекта есть свой путь. Он отображается в панели "Propeties"
Вы должны указать его, а только потом компонент, если вам конечно нужно обратится к компоненту. Но в Defold есть некоторые сокращения для обращения к компоненту или объекту.
"." - Точка - это обращение к текущему игровому объекту.
"#" - Решётка - это обращение к текущему компоненту.
"." - Точка - это обращение к текущему игровому объекту.
"#" - Решётка - это обращение к текущему компоненту.
Вот пример:
msg.post("GUI MENU#maingame", "load")
Здесь "GUI MENU" - Название игрового объекта, а "maingame" - Collection. "load" - это Hash. В Defold есть вложенные Hash'и, и "load" один из них. Данный метод отвечает за загрузку сцены (Collection).
- Метод on_input() отвечает за обработку нажатия/косания чего-либо. Примечание: Чтобы обработать какую-либо кнопку, вы для начала должны добавить эту кнопку в список
По умолчанию, данный список находится здесь
В поле "Input" вы указываете саму кнопку, однако вам ещё необходимо добавить к кнопку собственный ключ (Hash). Он записывается
любым удобным для вас названием в поле "Action".
любым удобным для вас названием в поле "Action".
- Метод on_reload() - Как сказано в документации, этот метод вызывается во время перезагрузки компонента. Сам я этот метод ещё
не успел изучить.
Ах да, все основные настройки проекта хранятся в файле с расширением ".project"
А пока что на этом всё. Не знаю, есть ли резон продолжать рассказывать об этом игровом движке. Если да, то я расскажу о многих
компонентах, а также будет пример простого меню на GUI. Удачи!
компонентах, а также будет пример простого меню на GUI. Удачи!
Спасибо за обзор.