Внедрение Lua в Source
![Icon-broom.png](/w/images/thumb/7/71/Icon-broom.png/40px-Icon-broom.png)
You can help by
![Wikipedia icon](/w/images/thumb/9/9a/Wikipedia_icon_small.png/16px-Wikipedia_icon_small.png)
![Icon-broom.png](/w/images/thumb/7/71/Icon-broom.png/32px-Icon-broom.png)
Что такое Lua?
Lua это мощный, быстрый, легкий, встраиваемый скриптовый язык.
Lua сочетает в себе простой процедурный синтаксис с мощными конструкциями описания данных на основе ассоциативных массивов и расширяемой семантики. Lua динамически типизируется, выполняется путем интерпретации байт-кода для виртуальной машины на основе регистра и имеет автоматическое управление памятью с инкрементной сборкой мусора, что делает его идеальным для конфигурации, сценариев и быстрого прототипирования.
Вы можете узнать больше о Lua на официальном сайте.
Обзор
Lua в настоящее время является ведущим скриптовым языком в играх, а у пользователей Steam ассоциируется с Garry's Mod . К сожалению, исходный код игры Garry's Mod не распространяется, и, как результат, мы не можем использовать реализацию языка Lua из этой игры для своего мода. Тем не менее, мой проект Half-Life 2: Sandbox в настоящее время является ведущим проектом с открытым исходным кодом, предназначенным для обеспечения сообщества разработчиков методом внедрения Lua в их мод практически без проблем, и в этой статье я объясню, как это сделать.
В Half-Life 2: Sandbox используется чистый Lua, отличающийся от реализации языка в моде Гарри, который имеет ограничения на многие библиотеки и модифицированный синтаксис для комментариев в стиле C++. Цель Sandbox - обеспечить нейтральную, чистую, стандартизированную и хорошо документированную базу кода для взаимодействия с Lua, в отличие от статей, увиденных в сообществе разработчиков Valve, таких как учебник LuaBind по языку Lua или просто статья о добавлении Lua .
Внедрение
Файлы
Установка
Сценарии менеджера Lua, найденные в исходном коде Half-Life 2: Sandbox, были написаны обобщённо, чтобы их можно было добавить в любой мод.
- Если вы работаете с исходным кодом мода, а не с плагином, указанные выше файлы должны быть помещены в src/game/shared
- В файлах вашего проекта поместите и luamanager.cpp, и luamanager.h в Source Files filter
- Скомпилируйте ваши двоичные файлы
- Просто добавьте заранее скомпилированный файл lua51.dll в папку bin вашего мода, и теперь ваш мод интегрирован с Lua!
Обновление: Half-Life 2: Sandbox прошел несколько ревизий, значительно расширив его Lua API, включая множество классов и библиотек для его возможного использования с Source. В результате этих расширений вы заметите, что для использования этих классов вам необходимо добавить отдельные файлы классов .cpp и .h, которые перечислены в luamanager.cpp заголовками, соответствующими .cpp файлам.