Blueprint'ы - средство визуального программирования в Unreal Engine. По сути, они являются оберткой на С++ классами и хранятся в бинарном формате. Rider уже умеет получать информацию из Blueprint'ов и отображать ее в окне редактора (пример - список Blueprint классов, отнаследованных от С++ класса).
Текущая реализация использует язык C#, встроена в Rider и никак не связана с реализацией в Unreal Engine. Это приводит к 2 проблемам:
- Epic Games могут в любой момент изменить формат (еще не случалось)
- Пользователи Unreal Engine могут модифицировать формат де/сериализации BP по своему усмотрению (уже есть прецеденты
Это приводит к тому, что одна из главных функциональностей Rider перестает работать.
Для того, чтобы это обойти, мы хотим:
- Написать утилиту средствами Unreal Engine, которая бы на вход принимала путь до Blueprint файла, десериализует его, и обратно сериализует в промежуточный формат, над которым Rider имеет контроль;
- Упаковать исходники утилиты вместе с IDE Rider
- При открытии Unreal Engine проекта распаковывать утилиту на машине пользователя и собирать ее локальными toolchain'ом и Unreal Engine'ом
- Использовать утилиту для получения информации о BP вместо встроенного парсера на C#