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!')
");
Производительность
- Кеширование: Автоматическое кеширование скомпилированных скриптов
- Профилирование: Встроенные инструменты для измерения производительности
- Асинхронность: Поддержка async/await для неблокирующего выполнения
Безопасность
- Валидация типов: Проверка совместимости типов при регистрации
- Изоляция: Контексты для изоляции переменных между скриптами
- Обработка ошибок: Специализированные исключения с детальной диагностикой
Проект: Igdrasil Engine
Автор: Alexander Izmailov
Собственность: Igdrasil Project
Версия: 1.0
Лицензия: Proprietary License
© 2026 Alexander Izmailov. Все права защищены.
Этот программный продукт является собственностью студии Igdrasil Project.