,Factorio,Игры,Factorio Dev Diary,длиннопост
Сюрприз! В дополнении 5 новых планет.
Первая планета, на которую мы прибудем, — это странная новая земля, богатая железом, медью, углем, камнем, нефтью и ураном. Все, что нужно начинающему заводу, и даже больше. Также есть вода, рыба, трава и деревья. Да, это плодородная земля где мы все будем процветать, будем править всей этой землей и назовем ее... «Эта земля» «Наувис».
' "flli			
V ж		y 1	W t
/ ШёШж.	HÉaV «j »	jLaIa,Factorio,Игры,Factorio Dev Diary,длиннопост
Так что да, новая планета Наувис похожа на версию карты 1.1, но есть несколько существенных обновлений. Надеюсь, для вас это сюрприз, ведь обновления базовой карты вообще не планировались. После получения большего опыта работы с другими планетами и ознакомления с мелочами, которых не хватает или которые не работали, становилось все труднее и труднее не удержатся от изменений и здесь.
Для ясности: эти изменения затрагивают версию 2.0 в целом, а не являются эксклюзивными для расширения.
Какое-то время для меня это был сольный побочный проект, и он только что подошел к завершению. В любом случае, вот история:

Стелс-дюны

После работы на Фульгоре пустыни Наувис выглядели уже не так хорошо. На самом деле они вообще едва ли походили на настоящую пустыню. Я знаю, что в игре «были» песчаные дюны, но они никогда не появлялись в окрестностях от меня. Это всего лишь ровный песок/грязь с большим количеством коричневой травы даже в самых засушливых местах. Поэтому я решил заняться этим вопросом и провести целое расследование.
Ранее в разработке версии 1.0 в пустынях были декоративные песчаные дюны. Видимо, интеграция с наборами плиток оказалась неудовлетворительной, поэтому их «временно» удалили. Ну, не полностью. Характерные тематические декорации все еще присутствовали в игре, но выглядели как коричневая трава, что было просто временной заменой графики. К сожалению, их так и не вернули обратно.
Я не был поклонником травянистой пустыни, поэтому поинтересовался, можно ли ее изменить, но оказалось, что это была неудобная тема, в которую никто особо не хотел вникать.
Однажды вечером я решил почистить старую декоративную графику дюн в качестве секретного побочного проекта. Я уже был знаком с этими ресурсами, потому что использовал их в моде Alien Biomes и знал, что смогу быстро сделать что-то хорошее.
В этой версии используются трюки с эффектами рельефа для лучшей интеграции с местностью. По сути, делая его намного более прозрачным, но затем добавляя чистый белый и черный цвета с низкой прозрачностью сверху, чтобы изменить яркость ландшафта внизу.
Результат выглядит хорошо на всех трех типах песка, что давало мне больше гибкости при размещении. В старых декоративных элементах использовался формат автозаполнения «пики» (в который я не буду вдаваться, но это более старая и более ограниченная система). Я заменил ее новой формулой выражения шума, адаптированной из моего кода на других планетах. Это позволяет дюнам постепенно проявляться на разных типах песка и создавать приятный эффект перехода.
Пиар (запрос на внесение изменений) для получения изменений, внесенных в основную игру, прошел успешно (и без драмы), так что мой проект по стелс-дюнам стал первым шагом на пути к изменению поколения карт Наувис.

Расследование пропажи декоративных украшений

Я начал замечать, что некоторые другие декорации, с которыми я был знаком по графическим файлам, похоже, не появлялись в мире. Просматривая правила декоративного размещения, казалось что каждый из них более или менее правильный или, по крайней мере, логичный. У них была правильная графика, они были назначены на правильную планету, а назначенные им регионы появления не имели невозможных значений, поэтому ничего что сразу бросилось бы в глаз я не увидел. Но потом я заметил кое-что еще, закономерность, набор сходств. Некоторые настройки были до неприличия похожими, а некоторые были идентичны другим декоративным элементам.
Это может показаться не таким уж большим делом, но вот в чем загвоздка. Размещение одного декора исключает размещение других декоративных элементов, которые будут размещены после него. Они блокируют друг друга. Если они пытаются разместиться в разных местах, это нормально. Если они частично перекрываются, это нормально, второй появится только там, где не появился первый. Однако если настройки идентичны, то второй декоратор никуда уже не поместится.
Так что это проблема, но и возможность.
Это отличный способ использовать навыки, полученные на других планетах, для улучшения декоративных свойств Наувис. Новая система не только может быть быстрее, но и выглядит намного лучше с точки зрения распределения и контролируемого размещения.
Я начал намечать все декоративные элементы Наувис. Есть 3 переменные оси, которые контролируют размещение: влажность, температура и доп. Aux — это переменная «типа местности», которая контролирует различия, такие как желтая пустыня Наувис и красная (почти, но все же в основном желто-коричневая) пустыня Наувис. Они контролируют широкомасштабное распределение, но есть также переменная «слой шума», которая управляет размещением и неоднородностью меньшего масштаба и похожа на 4-ю ось, но с дискретными приращениями.
Полезно отобразить это визуально, чтобы проверить наличие нежелательных перекрытий, желаемую долю пространства возможностей и т. д. Перекрытия гораздо больше, чем я ожидал. Некоторые декоративные элементы отсутствовали полностью, но диапазон более половины из них был сильно ограничен другими мешающими декоративными элементами.
Отображение 4D-состояния не так уж и плохо, я разработал несколько систем для космических исследований, которые работают с 12D-системой, так что 4D — хороший прорыв в сравнении. Я могу использовать трехмерную ось в блендере (XYZ) для отображения основных занятых объемов. Четвертая ось слоя шума — это цвет поля, что в данном случае очень удобно, поскольку слой шума дискретен и не имеет диапазона (он имеет одно значение, а не диапазон мин-макс).
Вот фиксированное распределение. Предыдущее состояние было повсюду, но у меня нет его копии (и я не хочу вводить данные, чтобы воссоздать его).
Новые объемы декоративного размещения, визуализированные в блендере.
У старой системы было дополнительное ограничение: она не могла выполнять декоративные группировки, например иметь большие варианты в середине кластера, а маленькие — дальше. Это само по себе не было настолько проблематичным, чтобы заслуживать обновления, но возможность улучшить это — еще одно побочное преимущество.
В новой системе все переназначено, чтобы все можно было разместить, но это только верхушка айсберга. Все изменилось, чтобы подчеркнуть определенные области карты. В некоторых засушливых районах больше красных растений, в других – белых. В травянистых районах есть много субрегионов с различным сочетанием растений и большей концентрацией.

Скалы Наувис

Скалы раздражают, правда? Вы думаете, что сможете избавиться от них за несколько минут, поэтому строите так, будто их вообще нет, но они есть. Идея форта на скале звучит круто. Возможно, вы даже экспериментировали с размещением турелей, защищенных скалами, но это никогда не работает так хорошо, как вы надеетесь. Большие озера являются полезными барьерами, а вот скалы — нет. Почему это?
Первая причина в том, что в скалах много щелей. Каждую брешь необходимо защищать, поэтому, если у вас есть брешь в скале через каждые 6 сегментов скалы, вам в любом случае более или менее потребуется непрерывное прикрытие турелей. Да, скала означает, что вам нужно меньше стен, но врагам нужна только одна брешь, чтобы пройти, а подстраиваться под скалу сложнее, чем под ваш удобный чертеж стен.
Вторая причина заключается в том, что скалы следуют полосами. Что это значит? Озеро — хорошее защитное препятствие. Вы, вероятно, сделали бы стены линиями между озерами, если бы они были удобно расположены. Однако скалы используют те же данные о высоте, что и озеро. Это означает, что в большинстве случаев скала — это просто дополнительное кольцо вокруг озера, и это бесполезно. Скала, параллельная озеру, в основном защищает от направления озера, но там уже есть озеро, которое справляется с этой задачей лучше (или оно защищает побережье с внутренней стороны, но это тоже не часто бывает полезно). В большинстве случаев обрыв просто мешается на пути, если вы пытаетесь построить стену между двумя озерами.
Скалы в 1.1. (Высокая скалистость, и оговорённые выше полосы).
Для Наувиса истинная цель становится ясной. Если в течении значимой часть игры мы не можем избавится от скал, то они хотя бы должны существовать наиболее полезным и наименее раздражающим способом. Эта «простая» идея в конечном итоге превратилась в капитальный ремонт поколения планет.

Горные плато

Первая попытка была основана на идее создания серии защищаемых плато. Вокруг них будут скалы, но они не будут следовать тем же линиям, что и озера. Для этого земля над водой была в основном выровнена, а затем к существующей земле отдельно добавились холмы.
Результат был лучше, чем 1,1, но все равно недостаточно хорош. Скалы не будут мешать так сильно, как в версии 1.1, но они были лишь незначительно более полезны, чем раньше. Проблема заключалась в отсутствии хорошего контроля над тем, куда ведут проломы в скалах. Слишком много промежутков в скале означает, что они бесполезны в качестве барьера против врагов, но при этом мешают строительству.
Скалы в Наувисе, попытка восстановления 1
Что действительно необходимо, так это более длинные непрерывные скалы, но в тоже время меньше раздражающих скал. К сожалению, это неразрешимый парадокс.
Давайте на мгновение отвлечемся от этого.

Точные скалы

Обычно я стараюсь не смотреть на код C++, потому что каждый раз, когда я это делаю, мне приходится начинать что-то менять… (например, механику жидкости), тогда как на самом деле мне следует сосредоточиться на других вещах. Зов скал был слишком сильным, и, прежде чем я это осознал, я переписал часть основного кода размещения скал.
Впервые это произошло, когда я работал над Фульгорой. Невозможно было сделать скалы, повторяющие замысловато расположенные края острова. Казалось, просто невозможно совместить скалы и плитки. Я обнаружил, что причина в том, что обрывы «сглаживаются».
Сглаживание — это попытка сделать скалы согласованными, даже если данные о высоте зашумлены. Это было необходимо на старом Наувисе, потому что высота иногда бывает грязной.
Сглаживание было кошмаром для планет, которым требовалось более точное размещение скал, таких как Фульгора. В Фулгоре также нет неустойчивой высоты, поэтому сглаживание не принесет никакой пользы. Моим первым изменением в коде C++ для скал было добавление способа отключения сглаживания на некоторых поверхностях. Внезапно все скалы встали на свои места. Проблема со скалами на Фульгоре мучила меня уже несколько недель, так что сказать, что это было облегчением, — ничего не сказать.

Скалы произвольной формы

Вернемся к плану для Наувиса. Я некоторое время думал о ситуации со скалой. Теперь, когда я был более знаком с основным кодом появления скал, я увидел ясный способ внести некоторые незначительные изменения, которые позволили бы скалам использовать совершенно другое выражение шума для их размещения.
Это означает, что скалы могут двигаться в направлениях, совершенно независимых от воды на планете. По умолчанию они будут использовать высоту воды, но планета может указать другую формулу, если захочет.
Слева: много скал, но ни одна из них не полезна.
Справа: меньше скал, меньше промежутков и потенциально больше пользы.
Основной план заключался в том, чтобы сделать небольшое количество длинных скал, как упоминалось ранее. Меньшее их количество означает, что они не будут так сильно мешать. Длинные сплошные скалы будут лучшим барьером против врагов, но это также лучший барьер для расширения вашей базы.
Если есть огромный утес, вы скорее будете строиться подальше от него, нежели проигнорируете утес и встроитесь в него. Больше влияя на ваше крупномасштабное здание, он меньше влияет на маленькое здание, и это гораздо меньше раздражает.
Меньшее количество скал по своей сути означает, что они также меньше мешают, но это второстепенная проблема, потому что вы всегда можете использовать элементы управления ландшафтом, чтобы повлиять на это по своему усмотрению. Форма, когда они есть, — это самое важное, что оправдывает их существование.
Формы плато, которые были раньше, все еще были хорошей отправной точкой для размещения скал. Это хорошая стартовая форма для больших плато, но ее также можно использовать для создания таких эффектов, как каньоны. Самая большая разница — это масштаб.
Отладка визуализации скальных плато. Темный – низкая область, светлый – высокая.
Это открывает еще одну прекрасную возможность. «Возвышение» скалы в этой точке полностью отделено от возвышения воды, но когда у вас есть линия скал, ведущая к воде, вы ожидаете, что береговая линия будет другой, показывая, что область над скалой будет простираться дальше в воду, поскольку эта область выше.
Вот что я сделал. Высота скалы добавляется к высоте воды. Это создает некоторые приятные особенности местности. Речные участки, ведущие к каньонам, полуостровам, прикрытыми скалами, и нескольким красивым новым островам.
Речное образование.
Образование, напоминающее каньон.

Переделка местности

Проблема в том, что добавление высоты скалы к высоте воды уменьшает количество воды. Уровень воды можно отрегулировать, чтобы добавить больше воды обратно, но в основном это затопляет районы каньонов. Это главный недостаток форм плато, окруженных более низкой сушей: если уровень воды выше, все это превращается в отдельные острова. Это не идеальный вариант для Factorio, потому что вы отрезаны от кусак и вам нужна свалка или эстакада для соединения территорий. Лучше, если большая часть земли останется подключенной.
Проблема: Плато имеют тенденцию образовывать острова.
Возможно, вы помните из FFF-390 , что у меня уже есть решение этой проблемы. Возвышение, основанное на хребте, где есть узкие полоски соединенной земли, а остальная часть - это в основном вода в несвязанных озерах. По сути, это противоположность плато. Использование такого рода шума для создания более надежных сухопутных мостов, смешивание базовой местности и последующее добавление приподнятых скал дает действительно хороший результат для игрового процесса, а также выглядит великолепно.
Но подождите, это выходит за рамки простого изменения ландшафта для улучшения скал. Это приближается к территории капитального ремонта. Если ситуация уже так сильно изменится, то давайте просто сделаем карту Наувис как можно лучше.
Вот что я сделал.
Начнем с водного слайдера. Минимальное количество воды приходится почти на всю сушу, но иногда встречаются небольшие озера, которых мало и они расположены далеко друг от друга.
С другой стороны, избыток воды приводит к появлению красивых групп островов, архипелагов.
Как только ландшафт настроен так, чтобы хорошо справляться с этими экстремальными значениями воды, он допускает некоторые макровариации, если на карте также установлены нормальные значения. При настройке «средняя вода» (по умолчанию) по мере удаления от середины поверхности земля начинает колебаться между этими крайностями, образуя массивные озера и широкие равнины. Он гораздо более разнообразен, чем раньше.
Старт в пустынях был распространенной проблемой. Я добавил дополнительный ползунок, чтобы вы могли настроить влажность стартовой области, не затрагивая остальной мир. Старт в лесу значительно проще.
Типы местности над и под скалами были немного скорректированы, поэтому иногда наблюдается небольшая разница в рельефе. Это небольшой момент, но он делает игру более трехмерной и интегрированной в мир.

Тупики

Многие вещи работали очень хорошо. Местность выглядела намного лучше, играть дальше было приятней, но все это еще не было идеальным. Взгляните
Дорога в каньоне, заблокированная водой.
При путешествии на машине все еще присутствовало множество старых проблем с разведкой и навигацией. Вы следуете за пропастью между лесами, но путь преграждает небольшое озеро. Вы идете по линии скал в поисках пропасти, но она заблокирована деревьями. Но теперь возникла новая проблема: вы можете следовать по сухопутному мосту, но путь вам преграждает отвесная скала.
Лесная тропа, заблокированная скалой.
Проблема в том, что система скал, система сухопутных мостов и система деревьев ничего не знают друг о друге. Однако на самом деле это неразрешимо, потому что в древовидной системе все еще использовались те же определения «вершин», что и в декоративных элементах, упомянутых ранее.
Сухопутный мост, заблокированный деревьями.
Так что я решил изменить и это

Лесной шум

Как и в случае с декоративными элементами, чем больше я изучал систему деревьев, тем больше проблем находил. В целом было немного лучше, потому что «большинство» деревьев были способны заспавнится, но было одно дерево, которое было полностью исключено, поскольку ему требовалась температура, которой не существовало на планете.
В клетках показаны новые объемы размещения деревьев, за исключением того, где ящик для 1 дерева возвращен на исходное место. Сможете ли вы угадать, какой это?
Подобные проблемы очень трудно предотвратить. Чтобы обнаружить многие из этих проблем, требуется огромная организованность и понимание. Даже в этом случае требуется некоторое время, чтобы составить полную картину происходящего, поэтому, когда нужно отрегулировать какую-то мелочь, например, отрегулировать шум, вызывающий температуру, трудно сказать, не сделали ли вы случайно то или иное дерево никогда не появляющимся. Если вы измените шумовой слой декоративного элемента, вы проверите его, и этот декоративный элемент выглядит нормально, но трудно сказать, что вы сделали так, чтобы какой-то другой случайный декоративный элемент никогда не появлялся. У нас есть тесты, предупреждающие о случайных изменениях, но иногда эти негативные изменения смешиваются с другими изменениями, когда ожидается, что генерация карты изменится, поэтому их не замечают.
В любом случае, как и в случае с декоративными элементами, расположение деревьев было изменено, чтобы сделать области более характерными.
Как и прежде, в засушливых районах плотность деревьев обычно ниже, а в влажных – больше, но разница более значительна и более постоянна. В пустыне с абсолютной нулевой влажностью теперь вообще нет деревьев.
Какие-нибудь из этих деревьев кажутся вам новыми?
Все это выглядит красиво, и это здорово, но на самом деле все это ради конечной цели — интеграции деревьев с другими системами для улучшения игрового процесса.

Природные тропы

Это то, что действительно связывает все воедино.
Сухопутные мосты обозначены хребтами, то есть существует непрерывная лента, определяющая высшую точку. Когда есть сухопутный мост, эта ленточная линия проходит примерно посередине полосы земли. Эти ленты представляют собой области, которые следует держать свободными, поэтому они добавляются в список путей.
Плато на самом деле используют систему, очень похожую на хребты, но она перевернутая. Ленточные линии вместо высоких точек представляют собой низкие точки, по сути, области «каньонов» между холмами. Если вы следуете по краю обрыва снизу, вы часто попадаете в эти области, поэтому важно, чтобы эти области не были заблокированы деревьями, поэтому они также добавляются в пути.
Густые леса также представляют собой проблему для передвижения, особенно если вы установите ползунок плотности деревьев на максимум и попытаетесь передвигаться по влажному участку ландшафта. В набор тропинок также добавлен дополнительный набор линий для лесных троп.
Все эти линии пути объединяются и вычитаются из расположения скал и деревьев. Результат чрезвычайно удобен и выглядит естественно. Лесные тропы являются результатом движения животных, и имеет смысл проложить их через расщелины в скалах, потому что именно там они могут пройти. Если вы идете по сухопутному мосту, то всегда есть путь через любые скалы и деревья, с которыми вы можете столкнуться.
Есть, конечно, исключения, когда вещи блокируют друг друга, но это, как правило, совпадения. Например, местность просто соединяется между двумя озерами, образуя по сути сухопутный мост, но поскольку он не был создан специальной системой сухопутных мостов, маршрут не защищен и может быть забит деревьями.
Настоящим испытанием для меня было установить максимальные настройки для деревьев и скал и попытаться перемещаться по карте на машине. И знаешь, что? На самом деле это действительно классная карта, по которой сейчас можно передвигаться.

Последние штрихи

Вот результаты:
Карта в масштабе 100%.
Карта в масштабе 50%. Примечание. При изменении масштаба изменяются размеры только элементов стиля фасада. Такие вещи, как руда, остаются на прежнем месте.
Карта в масштабе 25%.
Еще одна карта в масштабе 25%.
Элементы пейзажа
Я вложил в это много труда и тщательно тестировал его на протяжении всего процесса, и наконец оно заработало. Предстоит провести еще больше испытаний, потому что это большое изменение, и оно очень существенно влияет на всех. Чуть позже нужно будет сделать еще несколько мелких вещей, например, более неоднородные опушки леса, но это не является существенным изменением игрового процесса.
Подстраховкой для всех этих изменений является то, что новый ландшафт чрезвычайно легко настраивается. Даже если вам не нравятся какие-то настройки, карту можно легко настроить так, как вам нравится. Например, я внес некоторые дополнительные изменения в ползунок частоты обрывов, так что значение ниже 100% будет удалять обрывы из огромных областей карты.
Кроме того, если вам действительно нравится старая местность, она все еще здесь, как и опция создания карты для одного острова.
Как всегда, идите по тропам к привычным местам:
Форум Редит