IgdrasilScripting - Система скриптинга для Igdrasil Engine

IgdrasilScripting — это мощная и гибкая система скриптинга для Igdrasil Engine, предоставляющая унифицированный API для интеграции различных скриптовых языков (Lua, JavaScript и других) в ваши игры и приложения.

Основные возможности

✅ Унифицированный интерфейс для разных скриптовых движков
✅ Поддержка Lua и JavaScript из коробки
✅ Асинхронное выполнение скриптов
✅ Профилирование и кеширование скриптов
✅ Отладка с детальной информацией об ошибках
✅ Валидация типов при регистрации функций
✅ Модульная система для расширения функционала
✅ Изолированные контексты выполнения
✅ Управление жизненным циклом модулей

Быстрый старт

using IgdrasilEngine.Engine.Scripting.Lua;

// Создаем Lua-движок
var engine = new LuaEngine();

// Выполняем простой скрипт
var result = engine.Evaluate("return 2 + 2");
Console.WriteLine(result[0]); // 4

// Устанавливаем переменную
engine.SetValue("playerName", "Hero");

// Получаем значение
var name = engine.GetValue<string>("playerName");

Поддерживаемые движки

Движок Проект Возвращаемый тип Статус
Lua IgdrasilLuaScripting object[] ✅ Стабильный
JavaScript IgdrasilJavaScriptScripting object ✅ Стабильный

Архитектура

IgdrasilScripting (Базовые интерфейсы)
├── IScriptEngine<TResult, TInterface>
├── IScript<TResult>
├── IModuleInterface
├── Module<TInterface>
├── IScriptEngineProfiler
├── IScriptCache<TResult>
├── IScriptDebugger
└── ITypeValidator

IgdrasilLuaScripting (Реализация для Lua)
├── LuaEngine
├── LuaScript
└── LuaModuleInterface

IgdrasilJavaScriptScripting (Реализация для JavaScript)
├── JavaScriptEngine
├── JavaScriptExecutable
└── JavaScriptModuleInterface

Ключевые концепции

1. Script Engine (Движок скриптов)

Центральный компонент, управляющий компиляцией и выполнением скриптов.

2. Script (Скрипт)

Скомпилированный скрипт, готовый к многократному выполнению.

3. Module (Модуль)

Расширяемая единица функционала, регистрирующая функции и классы в скриптах.

4. Context (Контекст)

Изолированное окружение для выполнения скриптов с собственным набором переменных.

Интеграция

// 1. Подключите пакет
using IgdrasilEngine.Engine.Scripting.Lua;
using IgdrasilEngine.Engine.Scripting.Modules;

// 2. Создайте движок
var engine = new LuaEngine();

// 3. Зарегистрируйте модули
engine.RegisterModule(new LoggingModule<LuaModuleInterface>(logger));

// 4. Выполняйте скрипты
engine.Execute(@"
    logging.info('Hello from Lua!')
");

Производительность

Безопасность


Проект: Igdrasil Engine
Автор: Alexander Izmailov
Собственность: Igdrasil Project
Версия: 1.0
Лицензия: Proprietary License

© 2026 Alexander Izmailov. Все права защищены.
Этот программный продукт является собственностью студии Igdrasil Project.