Этот туториал — часть серии Начало работы — День 5, Неделя 3.
Проблема: привычка, которая разваливается
В прошлой статье экспорт коллекции Карты заработал через пару настроек: правый клик, выбор формата, выбор папки - готово. Но что делать, когда ты вообще забыл что нужно выгрузить?
Баланс - это поток мелких правок: у одной карты слишком высокая стоимость, у другой слишком низкий урон, каждая правка заканчивается одним решением: переэкспортировать сейчас или после следующего изменения? По закону подлости, вам захочется отложить всё до последнего, и вот игра работает на вчерашних числах. И вы возвращаетесь к проблеме первой недели: редактор говорит 4, сборка говорит 2, и снова разгадываем ребус.
Эскпорт в один клик - удобный инструмент, а вот автоматический экспорт - гарантия в акутальности изменений.
Автоэкспорт: коллекция пишет файлы
Автоэкспорт соединяет коллекцию с папкой назначения и держит файлы там в актуальном состоянии. Настраивается один раз в проекте, дальше сохраняем элемент, файлы перезаписаны.
В проекте откройте настройку автоэкспорта: нажмите на меню рядом с именем проекта, выберите Экспортировать, затем Настроить автоэкспорт. При открытии страница показывает только одно управление — кнопку «Добавить конфигурацию».
Шаг 1: добавьте конфигурацию
Конфигурация говорит, какой набор данных куда и в какой форме идёт. Добавьте одну для карт:
- Папка — источник: выберите коллекцию
Карты. - Тип — Игровая карта (набор уже типизирован; конфигурация наследует тип).
- Выберите формат — формат, созданный вчера: Карты для движка, JSON-формат с Выбранными полями.
- Сохранить результат как —
cards; при объединении JSON в один файл получаетсяcards.json.
Если требуется, добавьте ещё одну конфигурацию со CSV в папку для команды, - та же коллекция, разные потребители, всё автоматически.
Шаг 2: выберите корневой каталог
Корневой каталог это назначение для всего, что производит автоэкспорт. Это момент соединит два мира: держите под рукой папку проекта Godot и укажите экспорт туда. Файлы отправяятся прямо туда, где игра будет их читать, вместе с файлами самого движка («дизайн кодом»), что вы использовали в первую неделю.

Шаг 3: включите синхронизацию
Внизу страницы настройки два управления:
- Экспорт - запускает экспорт прямо сейчас, как разовую ручную синхронизацию. Полезно для самого первого запуска.
- Экспортировать автоматически С этого момента сохранение элемента в проекте запускает пересоздание всего, что эта настройка экспортирует.

Цикл: IMS Creators и Godot, один источник истины
Вот весь цикл от начала до конца. Игра (Dead Mall, ваш Godot-проект) читает файл под названием cards.json, который пишет автоэкспорт. Данные колоды в бою приходят из этого файла: не из констант, не из скопированной таблицы:
var cards = JSON.parse_string(FileAccess.get_file_as_string("res://cards.json"))
cards — массив; каждая запись — одна экспортированная карта в той форме, что производят Выбранные поля + скрипт формата. Задайте имена вывода так, чтобы ключи уже совпадали с тем, что ожидает движок:
[
{
"name": "Fire Extinguisher",
"damage": 4,
"cost": 6,
"legendary": true
}
]
Теперь поток, который раньше зависел от того, вспомните что нужно:
- Откройте коллекцию
Карты. - Поднимите Урон Огнетушителя с
4до6. - Сохраните элемент.
- Секундой позже
cards.jsonпересоздаётся с"damage": 6. - Перезагрузите сцену — или перечитайте файл — и Godot применит новое значение.
Экспорт происходит без вас. Редактор и запущенная игра читают одну и ту же истину, и механизм, держащий их в согласии, не дисциплина, а сохранённая настройка.
Если хотите, чтобы изменения появлялись без ручной перезагрузки, помогает чтение в реальном времени: дайте игре небольшой запрос или reload_data(), который перечитает cards.json, привяжите к хоткею и баланс станет живой: крутите число, сохраняйте и смотрите, как игра меняется на ходу.
Итоги недели 3
Две проблемы, электронной таблицы: параллельная копия данных и ручное переписывание - оба исчезли:
- Типизированные коллекции превратили баланс в правку одной таблицы: каждая строка - реальная карта, каждая правка - реальное сохранение по всему набору.
- Виды дали каждой задаче свою раскладку таблицы: колонки, тип отображения, сортировку и фильтр, восстановленные одним кликом.
- Фильтры заменили пролистывание запросами:
damage.value:>20, диапазоны, комбинированные наборы, которые сами отвечают за сегодняшние данные. - Пользовательский экспорт спроецировал коллекцию в формы, нужные потребителям, JSON для движка через Выбранные поля и скрипт пересборки, CSV для команды.
- Автоэкспорт соединил коллекцию напрямую с проектом Godot, экспортированные файлы верны с нулевым участием.
Одна строка, чтобы их прочитать, одна конфигурация, чтобы их записать, и дизайн со сборкой больше не могут. То, о чем мы говорили еще на первой неделе — один источник истины, теперь дошло до конечной точки и основывается на крепком фундаменте, что мы заложили в предыдущих статьях.
Что дальше: AI
Пайплайн данных завершён, и у вас дизайн, которому можно доверять, который можно экспортировать и крутить вживую. В следующих статьях наша серия повернёт к другому виду творчества: AI, сгенерированные предложения приходят в проект как предложения, которые можно принять, отклонить или отредактировать: ассистент создаёт черновик, дизайнер решает, а вся структура, которую проект теперь имеет, не даёт сгенерированному контенту расходится с созданной базой.
FAQ
Что делает автоэкспорт?
Отслеживает проект и пересоздаёт файлы каждого настроенного экспорта, когда вы сохраняете элементы. Конфигурация связывает исходный набор (коллекция + тип) с форматом и именем сохранения, корневой каталог настройки - куда ложатся файлы.
Как быстро обновляются файлы после сохранения?
Почти сразу, после короткой задержки порядка секунды. Сбрасывать что-то руками не нужно.
Куда должен указывать корневой каталог?
Куда угодно, где нужны файлы, но для Godot-игры укажите папку проекта Godot, чтобы экспортированные файлы легли туда, где их читает сцена. Это конфигурация, которая замыкает цикл между редактором и движком.
Автоэкспорт это риск? Может ли он уничтожить мои файлы?
Он переписывает только те экспортированные файлы, которыми управляет, производя их из текущих данныхи не трогает ваш рукописный код и сцены. Экспорт - обычный текст, так что всё что нужно: видно в git и без проблем откатывается. Галочка «Экспортировать автоматически» выключает его в любой момент.
Нужен ли мне теперь обычный экспорт?
Удобно для первого экспорта и для обновлений по запросу, автоматический режим - это то, что держит файлы верными день за днём.
Можно ли править коллекцию, пока Godot её читает?
Автосинхронизация откладывает запись, не вмешивается в файл посреди чтения, а перечитывание - это чистая новая загрузка. Архитектура баланса получается очень независимой: вы спокойно правите и сохраняете конфиг, он обновляется в фоне, а игра считывает новые данные, как только вы нажмете кнопку перезапуска.
Как это связано с чтением .json в первую неделю?
Первая неделя показала, что с файлами геймдизайна можно работать, заставив Godot читать .json напрямую (см. Дизайн-документ и код снова разошлись). Автоэкспорт упрощаетрутину: вместо парсинга движком сырых файлов дизайна экспорт проецирует их в собственный JSON движка, записывающийся автоматически, так истина по-прежнему переносится из редактора в сборку без вашего участия.