Для Factorio переписали движок генерации мира. Инструменты моддера могут ускорить работу с планетами в 10 раз
Factorio весьма глубокая игра, а масштаб постепенно расширяют. Новые вызовы требуют изменение подхода и обновление используемых технологий
Создатели Factorio снова вышли на связь. На этот раз дневник посвящён техническому вопросу, рассматривается генерация мира (карт).
Сейчас ведётся работа над Factorio Space Age, предстоит отправиться к звёздам. Это подразумевает исследование новых миров и надо обеспечить разнообразие. До присоединения к студии разработчик работал над модом Space Exploration. Тогда перед ним стоял вопрос, какой подход использовать для создания планет: сделать даже одну новую — это огромный объём работы, поэтому приступая к созданию 14+ новых типов разработчик решил инвестировать в создание инструментов, которые могли бы упростить процесс.
Задачу удалось успешно выполнить, также был реализован визуализатор noise-выражений, используемых при создании карт («шум» здесь не про звук, а случайные числа — помогает обеспечить плавные переходы и т.п.). Организован предварительный просмотр карты, позволяющий проконтролировать изменения, оценить качество перехода между биомами и т.п.
Свой опыт и инструменты он перетащил в студию создателей Factorio. По оценке разработчика, его инструменты помогут ускорить работу с планетами для Factorio Space Age примерно в 10 раз.
Он также отметил, что с нуля было переписано около 90% движка noise-выражений. Теперь с системой удобнее работать, можно легко добавить новые типы noise-выражений и её можно рассматривать как «прочную основу», которую можно было бы повторно использовать в других проектах, если бы захотелось.
Приводит некоторые цифры, например с момента создания прототипа первого поколения Vulcanus прошло несколько итерацией, вместе со всеми оптимизациями и улучшениями в С++ то, что занимало 18.35 мс / чанк («кусочек»), теперь занимает 2.83 мс.
№1 обычный вид Nauvis; №2 вид с высотами: синим обозначена высота ниже нуля (чем темнее, тем глубже), жёлтым «высоко», а зелёным «очень высоко».