Об этом проекте
godot-rust — это библиотека, интегрирующая язык Rust с Godot 4, открытым игровым движком, ориентированным на продуктивную разработку 2D и 3D с полным набором функций. Она использует API GDExtension от Godot, который позволяет интегрировать сторонние языки и библиотеки в движок.
Философия
Привязка позиционируется как альтернатива GDScript, с акцентом на типобезопасность, масштабируемость и производительность. Оба языка можно смешивать в проекте, а пользовательские API на Rust можно вызывать типобезопасно из GDScript. Заявленная основная цель — предоставить прагматичный API Rust для разработчиков игр: повторяющиеся рабочие процессы должны быть простыми и требовать минимум шаблонного кода, а API спроектированы так, чтобы быть безопасными и идиоматичными для Rust, где это возможно. Поскольку взаимодействие с Godot происходит как с C++ движком, проект иногда использует нетрадиционные подходы для улучшения пользовательского опыта.
Возможности, показанные в примере из README
Мотивирующий пример регистрирует класс Godot Player, наследующий от Sprite2D. Он демонстрирует:
- Объявление класса через derive-макрос GodotClass с автоматической инициализацией и базовым классом.
- Наследование через композицию, дающее доступ к методам базового класса.
- Инициализацию полей на основе атрибутов, включая значение здоровья по умолчанию.
- Доступ к дочерним узлам через OnReady, автоматически инициализируемый при вызове _ready().
- Реализацию виртуальных методов Godot через предопределенные трейты (например, переопределение _ready).
- Типобезопасные соединения сигналов, например, подключение к сигналу value_changed полосы здоровья.
- Пользовательские методы, доступные из GDScript через атрибут #[func].
- Вызов методов Node на self через изменяемый доступ к базе.
Статус разработки
В README указано, что библиотека значительно развилась с 2023 года и теперь пригодна для таких проектов, как игры, плагины редактора, инструменты и другие приложения на Godot. Отмечается, что иногда вносятся критические изменения, обычно незначительные и сопровождаемые руководствами по миграции; релизы на crates.io следуют SemVer, но отстают от ветки master. Подавляющее большинство API Godot отображено на Rust. Текущий фокус разработки — более естественный опыт Rust и шаблоны проектирования, полезные для повседневной разработки игр. Обширный набор CI включает clippy, модульные тесты, интеграционные тесты движка и санитайзеры памяти, а также тестируется горячая перезагрузка. Существует экспериментальная поддержка Wasm, Android и iOS, хотя документация и инструменты все еще отсутствуют.
Начало работы и ресурсы
README указывает на книгу godot-rust как лучшее место для начала, которую следует использовать вместе с документацией API. Практические примеры и небольшие игры доступны в репозитории demo-projects. Помощь предлагается через сервер Discord с каналом #help.
Лицензия и вклад
Проект использует лицензию Mozilla Public License 2.0, описанную как баланс между разрешительными и копилефт-лицензиями. Пользователи могут использовать библиотеку в коммерческих целях и сохранять свой код закрытым; основное условие — изменения самого godot-rust должны быть доступны. Вклад приветствуется, с указаниями в Contributing.md.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.