Пятничные факты #270 – Подстанция в высоком разрешении и обзор загрузки/сохранения

Spread the love

опубликовали Klonan, Rseding, Albert

Steam Awards (Klonan)

Steam открыл номинации в этом году Steam Awards. В прошлом году Factorio была фактически выбрана в качестве кандидата на премию «Haunts My Dreams».

В этом году  «Лучший разработчик» есть категория, и многие в сообществе выбрать нас для этой категории. К сожалению, чтобы иметь право на участие, нам нужно создать страницу разработчика, созданную в Steam.

У нас были некоторые обсуждения, и я решил подождать, пока у нас не будет окончательного логотипа и темы для Wube Software, прежде чем настраивать страницу разработчика. Это означает, что вы не сможете проголосовать за нас как лучшего разработчика в этом году …

Это не означает, что вы не можете назначать Factorio для одной из категорий, и уже было обсуждено, за какую люди голосуют.

Подстанция в высоком разрешении (Albert)

Подстанция была еще одним из объектов, которые мы не могли просто визуализировать в двойном разрешении, поэтому потребовалось довольно много времени и итераций, чтобы добраться до того, чем мы удовлетворены.

Детерминированное сохранения / загрузки в Factorio (Rseding)

Одна из ключевых частей процесса сохранения / загрузки в Factorio заключается в том, что он должен быть детерминированным. Это означает, что для данного файла сохранения (при отсутствии внешних факторов) сохранение, выход и загрузка сохранения не должны изменять какое-либо наблюдаемое поведение.

Существует несколько причин и преимуществ для этого строгого требования:

  • Без этого: вы не смогли бы присоединиться к многопользовательской игре (и с помощью прокси сохранить, выйти и возобновить).
  • Без него: система воспроизведения не будет работать, если вы когда-либо сохранили, вышли и возобновили игру.
  • С его помощью мы можем легко проверить, что сохранение и загрузка не дают никаких заметных изменений, позволяя нам знать, что мы правильно сохранили / загрузили.
  • С его помощью вы не увидите, что вещи случайно меняются в результате «перезагрузки», как в большинстве других игр.

Звучит достаточно просто: сделать «запущенная игра -> сохранить -> выйти -> загрузить -> запущенная игра» производить одинаковые результаты каждый раз (когда ничего не меняется). Однако на практике это оказывается довольно сложным.

Factorio использует сериализацию и де-сериализацию (подробнее), точный формат сериализованного файла сохранения изменяется с версии карты на версию карты, поэтому мы всегда должны помнить об этом при загрузке.

В качестве небольшого отрезка мы взяли некоторое измерение того, какие части данных карты принимают какое пространство в типичной несжатой игре сохранения:

Сохранение игры довольно прямолинейно:

Однако загрузка становится довольно сложной из-за множества вещей, которые нам необходимо учитывать:

  • Перенос версий карты
  • Модификации / изменения / изменения
  • Потенциально недействительные / поврежденные файлы сохранения

За годы развития Factorio у нас появилось несколько странных отчетов об ошибках, связанных с сохранением не загрузки, которые были отслежены в логике загрузки, ранее не обрабатывающей все эти особые случаи. Несколько примечательных примеров:

  • Когда элементы изменяются из-за миграции основной игры / мода, он может изменить тип элемента, в результате чего ранее используемый модуль был чем-то другим, но все еще занимал инвентарь модулей объектов.
  • Во время загрузки ограничивающая рамка объекта может измениться, если данные прототипа для этого объекта были изменены (изменено мод, добавлен / удален мод). При изменении границы рамки он может изменить, какие куски будут пересекаться. Во время загрузки ожидается, что количество кусков не изменится. Когда ограничивающая рамка объекта изменяется, он может перекрываться с куском, который не существовал во время сохранения.
  • Когда изменения прототипа данных могут означать, что ограничивающие прямоугольники объекта изменились и какие электрические сети, в которых существовала организация, могли бы измениться.
    Когда что-то удаляется во время загрузки (удаление мод), мы должны уничтожить их в определенном порядке, поскольку объекты / элементы / электрические сети могут иметь ссылки на eachother и ожидать, что они будут уничтожены из определенного состояния в определенном порядке.

В целом весь процесс стал довольно сложным до такой степени, что нам сложно запомнить все специальные правила. Имея это в виду, я потратил на день раньше на этой неделе документирование всего процесса для более простой справки о том, что такое порядок вещей и почему мы делаем то, что делаем. Для тех, кто интересуется еще более техническим обзором процесса сохранения / загрузки, копия этого документа можно найти здесь.

Также по теме загрузки мы решили отказаться от поддержки загрузки карт с версии 0.13 и 0.14 в последней версии, а это значит, что когда вы получите 0,17, вы сможете перенести игру с сохранением с 0,15. Однако, поскольку он работал до этого, вы все равно можете загрузить 0,16 для переноса с 0,13, а затем перейти от 0,16 до 0,17.

Футболка на Рождество (Klonan)

И снова приближается  праздничный сезон, и, как таковой, это был почти целый год продажи наших официальных футболок Factorio. Начиная с перехода в новый офис, операции с товаром была предоставлена целая двухместная комната для обработки всего хранения и доставки футболок.

В прошлом году были случаи, когда заказы не принесли к рождественской елке, и несколько человек сообщили, что пакеты, приходили за 1 месяц  в пункт назначения. Мы отправляем заказы из нашего офиса каждую среду, поэтому в зависимости от того, когда вы заказываете, может потребоваться почти неделя для подтверждения доставки. Как только он будет отправлен, посылка обычно будет доставлена в течение недели в любой точке Европы и займет около недели или 2, чтобы прибыть в США и по всему миру.

За пределами доставки каждую неделю мы не можем делать никаких обещаний, когда прибудет, поэтому лучший способ предотвратить любую душевную боль – это заказать из нашего магазина как можно скорее.

Как всегда, дайте нам знать, что вы думаете на нашем форуме.


Комментарии: