Skip to content

kruzhok-team/Ursula

Repository files navigation

Проект Ursula (Godot Engine / C#)

English Version

Описание

Ursula - это система для создания интерактивных 3D миров на движке Godot Engine с использованием C#. Проект сфокусирован на модульных интерактивных объектах, поведение которых определяется с помощью Иерархических Машин Состояний (HSM), заданных в формате GraphML.

Ключевые особенности

  • Движок: Godot Engine (C#).
  • Система интерактивных объектов: Центральный компонент InteractiveObject с подключаемыми модулями.
  • Управление поведением: Использование HSM (совместимо с GraphML) для описания сложной логики объектов.
  • Модульная архитектура: Разделение функциональности на модули (движение, звук, детекция, таймеры, счетчики, анимация).
  • Связь HSM и объектов: Реализована через шину событий/команд (LocalBus) и специализированные модули-расширения (HSM*Module.cs).
  • Динамическая загрузка: Поддержка загрузки 3D моделей (.obj, .glb) и аудио (.wav, .mp3, .ogg) во время выполнения.
  • Каталог объектов: Система для управления библиотекой игровых ассетов и их метаданных (на основе JSON).
  • Ассеты: Включает набор 3D-моделей (животные, здания, растения, реквизит), анимаций и материалов.
  • Управление проектами: Функционал для создания, загрузки, сохранения и экспорта игровых проектов.
  • Dependency Injection: Используется для управления зависимостями между компонентами системы.

Технологии

  • Godot Engine 4+
  • C# (.NET)
  • GraphML (для определения HSM)
  • JSON (для каталога объектов и настроек)

Структура проекта (Основные директории)

  • Assets/: 3D модели, анимации, материалы, звуки, готовые сцены (префабы).
  • Modules/: Ключевые подсистемы проекта (интерактивные объекты, HSM (Cyberiada), загрузчики ресурсов, каталог моделей).
  • Scripts/: C# скрипты, реализующие логику компонентов и систем.
  • Prefabs/: Готовые к использованию сцены объектов и UI.

Как это работает

  1. Интерактивные объекты (InteractiveObject) являются основными сущностями в сцене.
  2. Логика их поведения загружается из файлов .graphml и интерпретируется как Иерархическая Машина Состояний (HSM) с помощью CyberiadaLogic и CyberiadaHSMConverter.
  3. Модули-расширения HSM (HSM*Module.cs) действуют как мост, транслируя команды и события HSM в вызовы методов конкретных компонентов объекта (например, InteractiveObjectMove, InteractiveObjectAudio) через шину событий/команд (LocalBus).
  4. Физическое движение реализуется MoveScript, использующим NavigationAgent3D и CharacterBody3D.
  5. Анимации управляются AnimationPlayer через скрипты типа BaseAnimation.
  6. Каталог объектов и загрузчики ресурсов позволяют управлять ассетами и загружать их динамически.
  7. Система DI управляет созданием и связыванием зависимостей между модулями.

Начало работы

  1. Клонируйте репозиторий: git clone https://github.com/kruzhok-team/Ursula.git
  2. Откройте проект в Godot Engine 4+.
  3. (Опционально) Выполните необходимые шаги для настройки.

Лицензия

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages