Defold. С чего начать? Lua.
Last updated: 2023, Sep 21
Первая подборка ссылок на материалы по Defold для ничинающих (и не только). Для начала, самые важные ссылки по Lua.
- Defold. С чего начать? Lua (Lua для Defold и не только)
- Defold. С чего начать? Engine (Изучение движка)
- Defold. С чего начать? Сообщество
Lua
Язык программирования, на котором вам предстоит писать всю логику ваших игр.
В Defold используется LuaJIT и Lua 5.1 на HTML5. LuaJIT базируется на Lua 5.1 с некоторыми доработками. Всегда следите за тем, чтобы все мануалы, готовые библиотеки и другой готовый Lua код, что вы будете использовать был совместим с Lua 5.1.
Для начинающих
Подборка ссылок по Lua, которые следует изучить каждому начинающему:
- https://learnxinyminutes.com/docs/ru-ru/lua-ru/ — русскоязычная шпаргалка по Lua. (EN оригинал)
- https://zserge.wordpress.com/2012/02/23/lua-за-60-минут/ — Lua за 60 минут
- https://www.defold.com/manuals/lua/ — официальный Defold мануал по Lua.
- https://github.com/Olivine-Labs/lua-style-guide — сodestyle Lua
- https://gist.github.com/dapetcu21/c6917b8cf2a4a2bc22a6cc46a7d1f80d — еще один сodestyle с поправками на Defold.
- https://www.lua.org/manual/5.1/ — полный мануал по Lua.
- https://lua.org/pil/contents.html — онлайновая книга «Программирование в Lua».
-
http://lua-users.org/wiki/MathLibraryTutorial — туториал по стандартной math библиотеке. Попробовать 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, доступны плагины для следующих редакторов:
- Visual Studio Code — плагин для популярного редактора.
- Intellij IDEA — инструкция по настройке и работе с IDEA.
- Sublime Text 3 — api для Sublime3.
- ZeroBrane — Lua IDE.
Для продвинутых пользователей
Несколько ссылок, для более углубленного изучения:
- https://www.lua.org/gems/sample.pdf — информация по оптимизации производительности Lua от создателя самого языка.
- https://springrts.com/wiki/Lua_Performance — тесты и tips&tricks для лучшей производительности.
- http://luatut.com/collectgarbage.html — статья о работе сборщика мусора и о методах для ручной работы с ним.
- https://quik2dde.ru/viewtopic.php?id=131 — туториал по корутинам в Lua (EN оригинал).
И на последок большая подборка ссылок на различные материалы по Lua.
Делитесь в комментариях интересными материалами по теме, я с радость добавлю их в заметку.