Об этом проекте

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.