Ru/Embedding Lua in the Source Engine: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
No edit summary
m (obsolete language category)
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{otherlang2
{{lang|title=Внедрение Lua в Source|Embedding Lua in the Source Engine}}
|title= Внедрение Lua в Source
 
|en=Embedding_Lua_in_the_Source_Engine
}}
{{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 21: Line 17:
Вы можете узнать больше о Lua на [http://www.lua.org/about.html официальном сайте].
Вы можете узнать больше о Lua на [http://www.lua.org/about.html официальном сайте].


== Overview ==
== Обзор ==
Lua is currently [http://www.satori.org/2009/03/the-engine-survey-general-results/ the leading scripting language in games], and for Steam users, is synonymous with [[Garry's Mod]]. Unfortunately, Garry's Mod isn't open source, and as a result, we cannot use Team Garry's implementation of Lua for our and others' benefit. However, my project, {{HL2}} [http://code.google.com/p/hl2sb/ Half-Life 2: Sandbox] is currently the leading open source project dedicated to bringing the developer community a method for embedding Lua into their mod nearly seamlessly, and in this article I'll explain how.
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 в их мод практически без проблем, и в этой статье я объясню, как это сделать.


[[Half-Life 2: Sandbox]] uses a pure variant of Lua, different than Garry's implementation of the language, which has restrictions on many libraries, and modified syntax for C++ styled comments. Half-Life 2: Sandbox's goal is to provide a neutral, clean, standardized and well documented code base for interfacing with Lua, unlike articles seen within the Valve Developer Community such as the [http://www.rasterbar.com/products/luabind.html LuaBind] oriented [[Lua tutorial]] or [[Adding Lua]] article.
В {{L|Half-Life 2: Sandbox}} используется чистый Lua, отличающийся от реализации языка в моде Гарри, который имеет ограничения на многие библиотеки и модифицированный синтаксис для комментариев в стиле C++. Цель Sandbox - обеспечить нейтральную, чистую, стандартизированную и хорошо документированную базу кода для взаимодействия с Lua, в отличие от статей, увиденных в сообществе разработчиков Valve, таких как учебник [http://www.rasterbar.com/products/luabind.html LuaBind] по языку Lua или просто {{L|Adding Lua|статья о добавлении Lua}}.


== Implementation ==
== Внедрение ==
=== Files ===
=== Файлы ===
* [https://github.com/Noiwex/hl2sb-src/blob/master/src/game/shared/luamanager.cpp luamanager.cpp]
* [https://github.com/Noiwex/hl2sb-src/blob/master/src/game/shared/luamanager.cpp luamanager.cpp]
* [https://github.com/Noiwex/hl2sb-src/blob/master/src/game/shared/luamanager.h luamanager.h]
* [https://github.com/Noiwex/hl2sb-src/blob/master/src/game/shared/luamanager.h luamanager.h]
* [https://github.com/jaredballou/hl2sb/blob/master/bin/lua51.dll lua51.dll]
* [https://github.com/jaredballou/hl2sb/blob/master/bin/lua51.dll lua51.dll]


=== Installation ===
=== Установка ===
The Lua manager scripts found in the Half-Life 2: Sandbox source code were written generically so they could be added to any mod.
Сценарии менеджера Lua, найденные в исходном коде Half-Life 2: Sandbox, были написаны обобщённо, чтобы их можно было добавить в любой мод.


* If you're working with a mod's source code, rather than a plugin, the files above should be placed within '''src/game/shared'''
* Если вы работаете с исходным кодом мода, а не с плагином, указанные выше файлы должны быть помещены в  '''src/game/shared'''
* In your project files, place both the '''luamanager.cpp''' and '''luamanager.h''' in the '''Source Files''' filter
* В файлах вашего проекта поместите и '''luamanager.cpp''', и '''luamanager.h''' в '''Source Files filter'''
* Compile your binaries
* Скомпилируйте ваши двоичные файлы
* Simply add the precompiled '''lua51.dll''' to your mod's '''bin''' folder, and now your mod has integrated Lua!
* Просто добавьте заранее скомпилированный файл '''lua51.dll''' в папку '''bin''' вашего мода, и теперь ваш мод интегрирован с Lua!


'''Update:''' Half-Life 2: Sandbox has went through several revisions extending its Lua API greatly including many classes and libraries for real-world usage with Source. As a result of these expansions, you'll now find that to be able to use these classes, you'll need to add the individual class .cpp and .h files, which are all listed in luamanager.cpp by headers that correspond to .cpp files.
'''Обновление:''' Half-Life 2: Sandbox прошел несколько ревизий, значительно расширив его Lua API, включая множество классов и библиотек для его возможного использования с Source. В результате этих расширений вы заметите, что для использования этих классов вам необходимо добавить отдельные файлы классов .cpp и .h, которые перечислены в luamanager.cpp заголовками, соответствующими .cpp файлам.


== External links ==
== External links ==
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]


[[Category:Programming]]
{{ACategory|Programming}}
[[Category:Scripting]]
[[Category:Scripting]]

Latest revision as of 03:46, 22 August 2024

English (en)Русский (ru)Translate (Translate)
Broom icon.png
This article or section should be converted to third person to conform to wiki standards.

Andrew C. P. McWatters (me@andrewmcwatters.com), 2010
Software Development Engineer

SourceSource

Что такое Lua?

Lua это мощный, быстрый, легкий, встраиваемый скриптовый язык.

Lua сочетает в себе простой процедурный синтаксис с мощными конструкциями описания данных на основе ассоциативных массивов и расширяемой семантики. Lua динамически типизируется, выполняется путем интерпретации байт-кода для виртуальной машины на основе регистра и имеет автоматическое управление памятью с инкрементной сборкой мусора, что делает его идеальным для конфигурации, сценариев и быстрого прототипирования.

Вы можете узнать больше о Lua на официальном сайте.

Обзор

Lua в настоящее время является ведущим скриптовым языком в играх, а у пользователей Steam ассоциируется с Garry's Mod(en). К сожалению, исходный код игры Garry's Mod не распространяется, и, как результат, мы не можем использовать реализацию языка Lua из этой игры для своего мода. Тем не менее, мой проект Half-Life 2 Half-Life 2: Sandbox в настоящее время является ведущим проектом с открытым исходным кодом, предназначенным для обеспечения сообщества разработчиков методом внедрения Lua в их мод практически без проблем, и в этой статье я объясню, как это сделать.

В Half-Life 2: Sandbox(en) используется чистый Lua, отличающийся от реализации языка в моде Гарри, который имеет ограничения на многие библиотеки и модифицированный синтаксис для комментариев в стиле C++. Цель Sandbox - обеспечить нейтральную, чистую, стандартизированную и хорошо документированную базу кода для взаимодействия с Lua, в отличие от статей, увиденных в сообществе разработчиков Valve, таких как учебник LuaBind по языку Lua или просто статья о добавлении Lua(en).

Внедрение

Файлы

Установка

Сценарии менеджера 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 файлам.

External links