Скрипт на LUA может быть "скомпилирован" - переведен в понятный компьютеру двоичный код. Так как LUA скриптовый ЯП, необязательно компилировать - скрипты выполняются в интерпретаторе, которые компилируют его на ходу. Скомпилированный LUA скрипт имеет расширение *.luac. Редактор LUA скриптов
Leadwerks Engine SDK содержит редактор скриптов - удобную вещь для их написания и редактирования. Вы можете связать файлы .lua с редактором. Он находится в папке, куда вы установили Leadwerks, под именем "ScriptEditor.exe". Теперь можно будет открывать скрипты двойным щелчком мыши, как любой другой файл. ЗАПОМНИТЕ: вы не можете редактировать скомпилированные LUA скрипты! Если вы запускаете редактор скриптов не из Leadwerks Editor, то вы можете компилировать, запускать и отлаживать скрипты.
- Запуск. Мы можем запустить скрипт нажатием клавиши F5 в редакторе или соответствующей кнопки. Когда мы запускаем скрипт, используется engine.exe в папке с SDK.
- Отладка. Мы можем отладить скрипт (нужно для исправления фактических ошибок, типа "+" вместо "-"). Используется engine.debug.exe.
- Компиляция. Можно скомпилировать скрипт (клавиша F6 иои кнопка на тулбаре). Будет показано сообщение, что скрипт превращен в *.luac файл.
Скриптинг в редакторе уровней
Также можно делать скрипты внутри Leadwerks Editor, но: нельзя компилировать и отлаживать скрипты. Также нельзя забывать про LUA State.
LUA State
Это временный раздел памяти, запоминающий изменения, сделанные пока скрипт выполняется. Например: вы стреляете и убиваете врага. Когда вы запускаете игру в Editor из редактора скриптов, то LUA State не очистится, и при следующем запуске скрипта враг все равно будет мертв.
Если мы используем кнопку Game Script или сочетание Ctrl+G, мы запускаем те же скрипты, но при конце игры память очищается - при следующем запуске враг будет жив. Можно также очистить память загрузкой или обновлением сцены.
Создание и настройка вашего первого проекта
Для начала создадим новую папку и дадим ей имя нашего проекта. К примеру, Project 1. Неважно, где вы ее создаете (однако важно, чтобы в пути не было кириллицы). Скопируйте следующие файлы из папки с SDK в нашу папку:
- Папка Scripts. Очень важно скопировать эти скрипты, потому что они содержат основные скрипты для доступа к ядру движка Leadwerks.
- engine.exe. Самый важный файл. Это и есть обработчик ядра движка для скриптинга в LUA. Ни в коем случае не забывайте копировать его!
- engine.debug.exe. Это версия ядра, используемая в отладчике. В принципе, если вы не будете отлаживать скрипт, моэно не копировать. Но лучше все-таки сделать это. Если копируете, то вместе с engine.debug.dll.
- Shaders.pak. Архив с шейдерами. Без него ядро не запустится. Обязательно копируйте его! P.S. Архивчик легко открывается WinRAR'ом
- newton.dll. Физический движок Newton. No comments.
- Engine.dll. Вот оно, само ядро движка. Используется engine.exe'ом. При использовании C++/C# вы должны подключить её к проекту.
- JointLibrary.dll. Библиотека для просчета костей в физике.
Скопируйте все эти файлы. Вот, что получилось: Ваш первый скрипт
Приступим к созданию первого скрипта. Примечание: не копируйте команды отсюда, а вводите сами. Так вы лучше поймете движок. Также будет хорошо, если вы попробуете менять параметры и значения, передаваемые командам. Если что-то не получается, пишите в эту тему.
Для начала создадим новый .lua файл (создайте просто текстовый документ и смените расширение на .lua). Назовите его start.lua (этот скрипт запускается первым, если вы сразу запускаете engine.exe, а не из редактора скриптов).
Комментарии: на код программы они не влияют, они нужны для того, чтобы код написанный вами был понятен другому человеку. Либо вам, если вы вернетесь к скрипту через месяц. Иначе, вы ничего не поймете и ваше лицо будет таким: . Есть два типа комментариев: однострочный и многострочный.
Однострочный комментарий начинается с символов "--". Это делается так:
Quote (LUA)
--Комментарий
А это код скрипта
--Это тоже комментарий
Многострочные комментарии начинаются символов "--[[" и заканчиваются "]]--".
Quote (LUA)
--[[ Это комментарий
Это тоже комментарий ]]--
А это нет
Давайте напишем первый код:
Quote (LUA)
-- Зарегистрируем абстрактный путь
RegisterAbstractPath("")
Этот путь указывает на то, где лежат данные проекта (модели, текстуры). "" обозначает, что будет использоваться папка, откуда запускается программа. Иначе надо было бы вводить всякие ненадежные пути типа "C:\Models\".
Давайте создадим графическое окно.
Quote (LUA)
Graphics(1024, 768)
Это команда в нашем случае берет 2 параметра в скобках: высота и ширина окна. Дальше, давайте создадим пустой пока мир:
Quote (LUA)
fw = CreateWorld()
Все наши загруженные модели, созданные объекты, etc попадут в этот мир. Он хранится в переменной fw.
Quote (LUA)
-- Создадим камеру
camera = CreateCamera()
-- Переместим нашу камеру в позицию 0, 0, -5 (оси xyz) - немного назад.
camera:SetPosition(Vec3(0, -5, 0);
--кубик. CreateCube() создаст его.
cube = CreateCube()
Теперь давайте создадим бесконечный цикл, отвечающий за рендеринг сцены, но он закончится, когда мы закроем приложение.
Quote (LUA)
-- Пока приложению не дана команда закрыться, надо рендерить.
while AppTerminate() == 0 do
fw:Update()
fw:Render()
Flip(0) end
while..do...end обозначает "Пока условие верное, выполнять тело цикла".
Команда Update() выполняет обновление физики. Render() отвечает за рендеринг. Flip(0) нужен, чтобы перевернуть местами буферы, , который отображен на экране, и который мы только что отобразили в памяти.
end - конец цикла и выполнения программы (дальше нет команд, нечего выполнять).
Готовый скрипт: Nextmail.ru
Скрин скрипта:
Скрин того, что получилось:
Прямо ГТА5, не так ли?
Источник: КЛИК»