Добавление скриптов Lua к .NET-приложениям или играм

Грэг Дункан

Вы когда-нибудь слышали о Lua? Этот скриптовый язык используется во многих играх, например, в World of Warcraft. Было бы здорово интегрировать скрипты Lua в ваши .NET-приложения, не правда ли? Я тоже так думаю…

Встраивание Luaв WPF -игры

Lua – всемирно известный скриптовый язык. Это облегченный мультипаридигменный язык программирования, спроектированный, в первую очередь, как скриптовый язык с расширяемой семантикой. В статье мы рассмотрим, как интегрировать Lua в приложения на C# , в первую очередь, в WPF-игры.

  • 1 Введение
  • 2 Введение в Lua и в LuaInterface
    • 2.1 Скачать и пересобрать LuaInterface
  • 3 Сборка проекта консольного примера –- LuaForCSharpTest
    • 3.1 Пример 1 – доступ к глобальным переменным
    • 3.2 Пример 2 – доступ к функциям и таблицам, определенным в Lua
    • 3.3 Пример 3 – метод DoString
    • 3.4 Пример 4 – вызов функции внутри таблицы
    • 3.5 Пример 5 – вызов глобальной функции, возвращающей две величины
    • 3.6 Пример 6 – проверка метода RegisterFunction
    • 3.7 Пример 7 – Вызов других .lua-файлов, .NET-сборки и т. п.
  • 4 Встраивание Lua в WPF-игры
    • 4.1 Настройка Lua-скрипта
    • 4.2 Программирование WPF на C#
  • 5 Выводы

Статья освещает загрузку и компиляцию последней версии LuaInterface (управляемой сборки для Lua) и затем рассказывает о ее использовании.

Начинаем с простого консольного приложения:

Создание примера консольного приложения – LuaForCSharpTest

Сначала создадим новую консольную программу на C# и назовем ее LuaForCSharpTest. Чтобы читатели более ясно представили себе связи между основными компонентами, я создал папку LuaInterfaceStuff, в которой находятся два файла LuaInterface.dll и lua51.dll.

Теперь добавим ссылку на LuaInterface.dll в проекте, другая DLL должна быть автоматически скопирована в выходную папку вместе с ней

Как обычно, добавим ссылку на пространство имен, определенное в сборке:

Дальше введем связанные микропримеры один за другим:

clip_image002

Переходим к более сложным темам;

Пример 7 – Вызов других . lua -файлов, сборки . NETи т.п. …

Следующий пример представляет собой адаптированную версию онлайновых примеров (https://penlight.luaforge.net/packages/LuaInterface/). В большинстве из них вы увидите, как скрипты Lua внутри C# приложений могут взаимодействовать с библиотеками .NET и связанными структурами данных. Теперь, однако, вернемся к нашему примеру.

Сначала создадим файл скрипта Lua под названием Prompting.wlua, который выглядит следующим образом:

clip_image004

И, наконец, обсуждаем интеграцию в ваше приложение или игру:

Интеграция Luaв WPF -игры

Встроенный скриптовый язык может обеспечить вашему приложению большую гибкость и масштабируемость. Возьмем для примера одну из самых известных сетевых игр World of Warcraft. Она использует немногим более 200 K кода Lua, но тем не менее добивается очень высокой скорости вычислений. В настоящее время Lua может широко применяться на платформе Microsoft .NET для приложений (таких как WinForm, WebForm, WPF и т.п.), допускающих небезопасный код. Прекрасные возможности простоты использования (нет необходимости разбираться со сложной логикой центральных модулей), кросс-платформенности (однажды скомпилированный правильный скрипт без труда переносится на другие системы) и расширения по требованию (в части дополнения системы и обновления в тоже время ключевой роли) позволяют применять Lua в широком диапазоне областей разработки.

Начиная с этого раздела, давайте рассмотрим как заставить WPF-игры взаимодействовать с Lua.

Сначала запустим Visual Studio 2010 и создадим общее WPF-приложение с именем LuaInWPFGame на базе .NET 4.0.

Затем добавим ссылку в этом проекте на LuaInterface. В нашем случае мы используем вышеупомянутую готовую сборку LuaInterface.dll (вместе с дополнительным файлом lua51.dll).

После этого рассмотрим популярную сцену переговоров в WPF-игре в качестве вводного примера по внедрению Lua внутрь WPF-приложения.

clip_image006

Если вы полагаете, что добавление скриптов в вашу игру или приложение необходимо, чтобы вывести ее на новый уровень, или считаете, что будет круто включить Lua в своё приложение, эта статья обеспечит вам прекрасный старт…

Вот несколько ссылок, которые могут оказаться интересными: