Грэг Дункан
Вы когда-нибудь слышали о 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 Выводы
Lua – всемирно известный скриптовый язык. Это облегченный мультипаридигменный язык программирования, спроектированный, в первую очередь, как скриптовый язык с расширяемой семантикой. В статье мы рассмотрим, как интегрировать Lua в приложения на C# , в первую очередь, в WPF-игры.
Статья освещает загрузку и компиляцию последней версии LuaInterface (управляемой сборки для Lua) и затем рассказывает о ее использовании.
Начинаем с простого консольного приложения:
Создание примера консольного приложения – LuaForCSharpTest Сначала создадим новую консольную программу на C# и назовем ее LuaForCSharpTest. Чтобы читатели более ясно представили себе связи между основными компонентами, я создал папку LuaInterfaceStuff, в которой находятся два файла LuaInterface.dll и lua51.dll. Теперь добавим ссылку на LuaInterface.dll в проекте, другая DLL должна быть автоматически скопирована в выходную папку вместе с ней Как обычно, добавим ссылку на пространство имен, определенное в сборке: Дальше введем связанные микропримеры один за другим:
Создание примера консольного приложения – LuaForCSharpTest
Сначала создадим новую консольную программу на C# и назовем ее LuaForCSharpTest. Чтобы читатели более ясно представили себе связи между основными компонентами, я создал папку LuaInterfaceStuff, в которой находятся два файла LuaInterface.dll и lua51.dll.
Теперь добавим ссылку на LuaInterface.dll в проекте, другая DLL должна быть автоматически скопирована в выходную папку вместе с ней
Как обычно, добавим ссылку на пространство имен, определенное в сборке:
Дальше введем связанные микропримеры один за другим:
Переходим к более сложным темам;
Пример 7 – Вызов других .lua-файлов, сборки .NET и т.п. … Следующий пример представляет собой адаптированную версию онлайновых примеров (http://penlight.luaforge.net/packages/LuaInterface/). В большинстве из них вы увидите, как скрипты Lua внутри C# приложений могут взаимодействовать с библиотеками .NET и связанными структурами данных. Теперь, однако, вернемся к нашему примеру. Сначала создадим файл скрипта Lua под названием Prompting.wlua, который выглядит следующим образом:
Пример 7 – Вызов других .lua-файлов, сборки .NET и т.п. …
Следующий пример представляет собой адаптированную версию онлайновых примеров (http://penlight.luaforge.net/packages/LuaInterface/). В большинстве из них вы увидите, как скрипты Lua внутри C# приложений могут взаимодействовать с библиотеками .NET и связанными структурами данных. Теперь, однако, вернемся к нашему примеру.
Сначала создадим файл скрипта Lua под названием Prompting.wlua, который выглядит следующим образом:
И, наконец, обсуждаем интеграцию в ваше приложение или игру:
Интеграция 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-приложения.
Интеграция 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-приложения.
Если вы полагаете, что добавление скриптов в вашу игру или приложение необходимо, чтобы вывести ее на новый уровень, или считаете, что будет круто включить Lua в своё приложение, эта статья обеспечит вам прекрасный старт…
Вот несколько ссылок, которые могут оказаться интересными: