Разработка: парсинг таблиц
Последние трое суток, сильно страдая от бессонницы, я перебрала систему парсинга данных из гугл таблиц в удобные JSON файлы. Из-за того что я решила переверстать все меню и улучшить системы, которые отвечают за сборку игры, мною было принято решение переписать и парсинг. Хотелось, чтобы сборка игры в таблицах была удобнее, чтобы я могла дробить одну сцену на логические блоки и в таблице с сюжетом указывать, нужно ли в следующем фрейме изменить воспроизводимый блок или сцену.
Наверное, я сложно объяснила. Если проще, это необходимо для удобного ветвления сюжета. Оно и раньше отлично ветвилось, но мне приходилось ссылаться на другие таблицы, чтобы выполнять проверки, всегда следить за количеством фреймов которые надо пропустить и т.д. Теперь всё будет в одной таблице и довольно лаконично.
На этом шаблоне я сегодня уже оттестировала работу скрипта, который старательно писала в отдельном приложении. Этот код со всеми ссылками на гугл таблицы, не войдёт в билд игры. Он нужен лишь для того, чтобы создать несколько текстовых файлов, которые я бережно помещу в финальную сборку. Так я избавляюсь от лишних компонентов в игре, паранойи, что кто-то при декомпиляции найдёт ссылки или я случайно не удалю черновые файлы.
Сейчас уже реализованы:
1. Лист переменных для отслеживания взаимоотношения с персонажами.
2. Словарь имён игровых персонажей с учётом поддерживаемых языков.
3. Список звонков и сообщений для смартфона.
4. Список доступных в игре выборов.
5. Список доступных концовок.
6. Список индексированных сцен.
Чем я пользуюсь:
1. Google sheet to Json - сохраняет гугл таблицы в текстовых файлах. Под каждый лист создаёт отдельный файл, в соответствии с его названием.
2. LitJson Ruler - очень простое решение, чтобы читать и записывать JSON файлы. Мне было важно, особым образом пересохранять данные таблиц, чтобы потом форматировать их в иную JSON структуру под проект. Например, в таблице русская и английская локаль, находятся в разных колонках. Это важно, чтобы не перемешивать данные, контролировать количество знаков в тексте, не запутаться в экранирующих символах и удобно читать сценарий. В то же время, в JSON они должны находиться в одном разделе как набор строк. Оттуда, игра уже по индексу берёт текст на выбранном языке.
Я очень довольна тем, что скрипты стали лаконичными, что у проекта появилась чёткая логика, он стал легковесным и сущности между собой не переплетаются.
Да, морально мне тяжело даются переработки уже готового материала, но всё это явно стоит приложенных усилий. После трех недель довольно плотной работы, надо устроить себе игровые выходные. Я как раз купила себе Сабнавтику.
0 комментариев