Откуда всё началось
Несколько лет назад мои друзья активно занимались разработкой на Unity. Я периодически помогал, и в какой-то момент вместе с другом обратили внимание на одну раздражающую вещь: огромное количество времени уходило не на саму разработку, а на редактирование JSON-файлов.
Конфиги роботов, полей, заданий, параметры, локализация, уроки — всё это JSON. И всё это нужно было либо править руками в блокноте, рискуя сломать структуру одной лишней запятой, либо писать очередной одноразовый скрипт-конвертер, который через неделю уже никто не помнит где лежит.
«Слушай, было бы круто иметь что-то вроде Excel, но для JSON» — примерно так звучала идея.
Я подумал: звучит несложно, сделаю за выходные. Классика.
Первая версия появилась на WPF — работала, закрывала базовые потребности, но была сырой. Потом жизнь закрутила, проект лёг на полку.
А недавно потребность возникла снова — и сразу с двух сторон. Мой друг вместе с командой разрабатывает симулятор робототехники Robocad — серьёзный инструмент для соревнований и обучения. Задания для соревнований, уроки, сценарии — всё это создаётся в JSON-конфигах. Плюс параллельно появилась потребность в конфигах для приборов и оборудования.
Так появился CraftHub.
Какую проблему решает
Если вы когда-либо работали с JSON-файлами не как с API-ответами, а как с данными, которые нужно активно редактировать — вы поймёте боль.
Представьте таблицу из 200 предметов в игре. Каждый предмет — объект с 15 полями: название, тип, урон, редкость, цена, иконка, эффекты… Вы хотите поднять урон всем мечам на 10%. В обычном текстовом редакторе это либо руками, либо regex-магия, либо писать скрипт.
CraftHub предлагает другой подход: работайте с JSON как с таблицей, а не как с текстом.
Два режима работы
Табличный режим
Основной режим. Ваши данные — это таблица: строки и столбцы. Каждый столбец — это поле схемы с определённым типом. Вы видите все записи сразу, можете редактировать ячейки прямо в таблице, сортировать, искать по значению.
Это именно то ощущение работы с Excel, только под капотом — JSON.
JSON-редактор
Для сложных полей типа object и array встроен полноценный редактор JSON. Нажимаете на ячейку — открывается окно с подсветкой синтаксиса, где можно написать произвольную вложенную структуру. Это удобно для полей, которые сами по себе содержат сложные данные.
Умный импорт JSON
Одна из первых вещей, которую хочется сделать — загрузить уже существующий JSON. CraftHub умеет автоматически определять типы полей при импорте.
Загружаете файл → приложение анализирует структуру → предлагает схему с определёнными типами для каждого поля. Не согласны с автоматикой? Любой тип можно изменить вручную перед импортом. Поддерживаются все базовые типы: string, number, bool, а также object и array для вложенных структур.
Генерация C#-класса и обратно
Это та фича, ради которой многие Unity-разработчики и захотят попробовать инструмент. (На этом моменте может напомнить базу данных)
Из схемы → в C# класс. Описали структуру данных в таблице — одной кнопкой экспортируете готовый C#-класс. Никакой ручной работы: берёте файл, кидаете себе в проект, вуаля.
Из C# класса → в данные. И наоборот: уже есть класс с публичными свойствами? Импортируете его в CraftHub — приложение автоматически строит схему по public свойствам. Дальше просто заполняете данные в таблице и экспортируете JSON, который идеально соответствует вашей модели.
Это особенно удобно когда схема данных уже определена в коде, а нужно быстро наполнить её содержимым — для тестов, для балансировки, для начального контента.
Кросс-платформенность
Приложение написано на Avalonia UI — это означает, что оно работает на:
-
Windows
-
macOS
-
Linux
Один и тот же инструмент у всей команды, вне зависимости от устройства.
Обновления прямо из приложения
Никаких «зайди на сайт, скачай новую версию, установи поверх». CraftHub умеет проверять и устанавливать обновления самостоятельно — достаточно нажать одну кнопку в интерфейсе. Актуальная версия всегда под рукой.
Все релизы доступны здесь: github.com/c3n9/CraftHub/releases
Что упрощает работу на практике
-
Не нужно следить за структурой вручную — схема определяет формат, данные невозможно случайно сломать
-
Поиск по значению — мгновенная фильтрация по любому тексту во всех ячейках
-
Множественный выбор строк — дублировать, удалять, копировать сразу несколько записей
-
Копирование строк как JSON — выделил нужные записи, скопировал в буфер обмена в виде готового JSON-массива или отдельных объектов
-
Несколько вкладок — работайте с несколькими файлами одновременно
-
Undo / Redo — полная история изменений с Ctrl+Z / Ctrl+Y
Кому это будет полезно
-
Unity-разработчикам — конфиги предметов, уровней, врагов, диалогов, локализации
-
Game designers — редактировать баланс без программиста, просто открыл файл и изменил
-
Разработчикам железа и embedded — конфиги приборов, параметры прошивок
-
Всем, кто хранит табличные данные в JSON и устал делать это в текстовом редакторе
Попробовать
Проект открытый. Исходники и релизы:
Буду рад звёздочке, issue с идеями и любому фидбеку. Проект живёт и развивается — впереди ещё много планов.
Если узнали себя в описании проблемы — значит, инструмент для вас. Попробуйте, и дайте знать что думаете.
ссылка на оригинал статьи https://habr.com/ru/articles/1028818/