Изучение Defold. (Снова Lua?)

» опубликован
Итак всех приветствую на статье, которая посвящена Defold. Defold - это бесплатно-распространяемый игровой движок от ребят из King. Язык программирования в нём - Lua. Сегодня я хочу лишь немного рассказать о нём.
Оф. сайт: Тут
На данный момент движок поддерживает такие платформы как Android, iOS и Web. А именно HTML5.
Итак, чтобы создать проект, вы должны авторизироваться на оф. сайте и перейти в "приборную панель".

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


Просмотров: 647

BrEd Pitt #1 - 11 месяцев назад 0
Т.е. эти 6 методов (init, update и т.д.) существуют в каждом новом "по умолчанию"? Не совсем понял
Спасибо за обзор.
DasBro #2 - 11 месяцев назад 0
BrEd Pitt, Да, именно так. Спасибо за отзыв и не за что :)