Defold. С чего начать? Lua. (Upd. 03.06.20)

Первая подборка ссылок на материалы по Defold для ничинающих (и не только). Для начала, самые важные ссылки по Lua.

1. Defold. С чего начать? Lua (Lua для Defold и не только)
2. Defold. С чего начать? Engine (Изучение движка)
3. Defold. С чего начать? Сообщество

Lua

Язык программирования, на котором вам предстоит писать всю логику ваших игр.

В Defold используется LuaJIT и  Lua 5.1 на HTML5. LuaJIT базируется на Lua 5.1  с некоторыми доработками.  Всегда следите за тем, чтобы все мануалы, готовые библиотеки и другой готовый Lua код, что вы будете использовать был совместим с Lua 5.1.

Для начинающих

Подборка ссылок по Lua, которые следует изучить каждому начинающему:

Попробовать Lua прямо в браузере, что может быть удобно во время изучения, можно по следующим ссылкам:

  • https://defold.com/codepad/ – небольшой онлайн редактор для Defold с несколькими заготовками проектов
  • https://repl.it – онлайн редактор кода

Отдельно хочу заострить внимание на некоторых базовых аспектах, которые помогут на первых этапах.

  • В Lua массивы начинаются с единицы
  • Массив – это таблица с целочисленными индексами по порядку
  • Оператор # для таблицы (ключи указаны явно tbl или tbl2) возвращает длину последовательности от 1 до прерывания последовательности или элемента последовательности со значением nil. Для массива (индексы не указаны явно array и array2) любой nil может расцениваться как прерывание последовательности. Это значит, что любое использование на последовательностях с “дырками” (nil) может приводить к непредсказуемым результатам и этого стоит избегать. Примеры:
local tbl = {[1] = "one", [2]="two",[3]="three", [4]=nil, [5]="five", six = "six"}
print(#tbl) -- 3 т.к. индексы по порядку только 1,2,3, а 4 уже nil

local tbl2 = {["a"] = 1, ["b"] = 2}
print(#tbl2) -- 0

local array = {"one", "two", "three", nil, "five", "six"}
print(#array) -- 6

local array2 = {"one", "two", "three", nil}
print(#array2) --3
  • Если забыть написать local перед переменной, то переменная будет глобальной
  • Глобальная таблица доступна по _G
  • local переменная в *.script или *.gui_script – будет доступна во всех экземплярах данного скрипта. Это, сравнивая с другими языками, статическая переменная класса. Если вы используете один и тот же скрипт на нескольких объектах, то изменения в такой переменной из одного объекта будут доступны и в других объектах тоже
  • Для записи переменных уникальных для каждого экземпляра используется self
  • Для итерирования от большего к меньшему нужно не забывать указывать третий параметр шага
-- обычный цикл от 1 до 10
for i = 1, 10 do
    -- do things
end

-- цикл от 10 до 1
for i = 10, 1, -1 do
    -- do things
end

Редакторы

Кроме встроенного редактора кода в самом Defold, доступны плагины для следующих редакторов:

  • Atom – инструкция по установке и настройке Atom и плагинов для работы с Defold.
  • Intellij IDEA – инструкция по настройке и работе с IDEA.
  • Sublime Text 3  – api для Sublime3.
  • ZeroBrane – Lua IDE.
  • Visual Studio Code – плагин для популярного редактора.

Для продвинутых пользователей

Несколько ссылок, для более углубленного изучения:


И на последок большая подборка ссылок на различные материалы по Lua.


Делитесь в комментариях интересными материалами по теме, я с радость добавлю их в заметку.