Ru/Embedding Lua in the Source Engine: Difference between revisions
No edit summary  | 
				m (obsolete language category)  | 
				||
| (7 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
{{  | {{lang|title=Внедрение Lua в Source|Embedding Lua in the Source Engine}}  | ||
|title=   | |||
|  | |||
}}  | |||
{{orphan}}{{pov}}  | {{orphan}}{{pov}}  | ||
<div style="margin:auto;text-align:center;">  | <div style="margin:auto;text-align:center;">  | ||
| Line 11: | Line 9: | ||
[[File:Source-logo.png|200px|link=|Source]][[File:Lua-Logo_128x128.png|128px|link=|Source]]</div>  | [[File:Source-logo.png|200px|link=|Source]][[File:Lua-Logo_128x128.png|128px|link=|Source]]</div>  | ||
== Что такое Lua? ==  | == Что такое Lua? ==  | ||
| Line 22: | Line 18: | ||
== Обзор ==  | == Обзор ==  | ||
Lua в настоящее время является [http://www.satori.org/2009/03/the-engine-survey-general-results/ ведущим скриптовым языком в играх], а у пользователей Steam ассоциируется с   | Lua в настоящее время является [http://www.satori.org/2009/03/the-engine-survey-general-results/ ведущим скриптовым языком в играх], а у пользователей Steam ассоциируется с {{L|Garry's Mod}}. К сожалению, исходный код игры Garry's Mod не распространяется, и, как результат, мы не можем использовать реализацию языка Lua из этой игры для своего мода. Тем не менее, мой проект {{HL2}} [http://code.google.com/p/hl2sb/ Half-Life 2: Sandbox] в настоящее время является ведущим проектом с открытым исходным кодом, предназначенным для обеспечения сообщества разработчиков методом внедрения Lua в их мод практически без проблем, и в этой статье я объясню, как это сделать.  | ||
В   | В {{L|Half-Life 2: Sandbox}} используется чистый Lua, отличающийся от реализации языка в моде Гарри, который имеет ограничения на многие библиотеки и модифицированный синтаксис для комментариев в стиле C++. Цель Sandbox - обеспечить нейтральную, чистую, стандартизированную и хорошо документированную базу кода для взаимодействия с Lua, в отличие от статей, увиденных в сообществе разработчиков Valve, таких как учебник [http://www.rasterbar.com/products/luabind.html LuaBind] по языку Lua или просто {{L|Adding Lua|статья о добавлении Lua}}.  | ||
== Внедрение ==  | == Внедрение ==  | ||
| Line 36: | Line 32: | ||
* Если вы работаете с исходным кодом мода, а не с плагином, указанные выше файлы должны быть помещены в  '''src/game/shared'''  | * Если вы работаете с исходным кодом мода, а не с плагином, указанные выше файлы должны быть помещены в  '''src/game/shared'''  | ||
* В файлах вашего проекта поместите и '''luamanager.cpp''', и '''luamanager.h''' в '''  | * В файлах вашего проекта поместите и '''luamanager.cpp''', и '''luamanager.h''' в '''Source Files filter'''  | ||
* Скомпилируйте ваши двоичные файлы  | * Скомпилируйте ваши двоичные файлы  | ||
* Просто добавьте заранее скомпилированный файл '''lua51.dll''' в папку '''bin''' вашего мода, и теперь ваш мод интегрирован с Lua!  | * Просто добавьте заранее скомпилированный файл '''lua51.dll''' в папку '''bin''' вашего мода, и теперь ваш мод интегрирован с Lua!  | ||
| Line 46: | Line 42: | ||
* [http://lua-users.org/wiki/BindingCodeToLua lua-users wiki: Binding Code To Lua]  | * [http://lua-users.org/wiki/BindingCodeToLua lua-users wiki: Binding Code To Lua]  | ||
{{ACategory|Programming}}  | |||
[[Category:Scripting]]  | [[Category:Scripting]]  | ||
Latest revision as of 02:46, 22 August 2024
Вы можете помочь,
Что такое 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 файлам.
