Пятничные факты #304 – Мелкие ошибки; Большие изменения

Поделиться

опубликовали Klonan, Sanqui, V453000, Posila, Twinsen

Привет,
Мы имеем сейчас 28 ошибок на форуме. Последние ошибки часто являются теми, которые мы по какой-то причине откладывали, обычно они требуют более значительных изменений и решений. Вот почему на этой неделе нам есть о чем поговорить.

G2A обновленная информация

G2Aобратились к нам в этот понедельник, ничего особенного не произошло, поэтому я буду коротким. Они спросили, согласны ли мы провести аудит для проверки денег, потерянных для возвратных платежей, мы ответили «да», и они ответили, что начнут связываться с некоторыми аудиторскими компаниями, и что это «займет некоторое время».

Обход препятствий планировщика жд

Участники форума убедили Kovarex добавить что-то, чтобы использовать режим обхода препятствий планировщика железных дорог. Теперь при планировании железнодорожного пути удерживание CTRL позволит использовать планирование призраков для обхода препятствий.

Описание серверов Sanqui

Уважаемые владельцы серверов: поле описания сервера увеличено с 120 до 5000 символов и теперь загружается немедленно. Как только выйдет следующий патч, вы можете перестать использовать поле «теги» для своих красочных описаний.

Изменения в переработке нефти V453000

Мы решили изменить базовый рецепт переработки нефти, чтобы теперь он производил только нефтяной газ.

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

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

Это означает, что легкая и тяжелая нефть доступна только после того, как будет исследована технология Advanced Oil Processing. Самая большая проблема, которую это представляет, состоит в том, что  роботам требуется мазут, сделанный из тяжелой нефти.

//cdn.factorio.com/assets/img/blog/fff-304-worker-robots-technology-tree-full.png

//cdn.factorio.com/assets/img/blog/fff-304-worker-robots-technology-tree-full.png

Решение, которое мы решили применить, состоит в том, чтобы переместить рабочих роботов за химический пакет. Это изменение указывает, насколько быстро вы сможете получить рабочих роботов, но разница не должна быть слишком резкой, так как для того, чтобы роботы заработали, вам уже нужно настроить полный нефтеперерабатывающий завод, усовершенствованные схемы и 2 обновления двигателей – что уже составляет большую часть научного пакета сделана.

Базовая переработка нефти в настоящее время дает на 25% больше нефтяного газа, чтобы компенсировать потери легкой и тяжелой нефти на твердое топливо.

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

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

Лазерная турель перешла в химическую науку

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

Исправлена скорость стрельбы лазерной турелью

Была ошибка с лазерными турелями, повышение скорости стрельбы фактически не увеличивало их скорость стрельбы, так как мы переключили их на использование лучей. Posila исправил это так, что большая скорость стрельбы из турели фактически приводит к большему урону в секунду, не только для лазерных турелей, но и для личной лазерной защиты.

Теперь, когда бонус скорости стрельбы работает должным образом, мы снизили базовую скорость стрельбы лазерной турели и персональной лазерной защиты на 50%, и со всеми улучшениями скорость стрельбы составит 160% от того, что было раньше.

Еще один результат этого исправления: мы решили изменить начальный урон личной лазерной защиты с 40 до 30. Однако при использовании технологий с полной скоростью стрельбы урон намного выше (за счет большего количества энергии).

Свечение лазерного луча posila

После исправления того, что лазерные лучи не светятся в темноте, OwnlyMe выпускает мод “Светящиеся лазерные лучи”, который позволяет лазерным лучам освещать землю под ними. Вацлав попросил, чтобы это было основной функцией игры, но была одна загвоздка: лучевая графика не накладывалась правильно.

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

Вацлав попытался обойти проблему , снова настроив края спрайтов, но оказалось, что это невозможно.

После прохождения кода, который рисует лучи, я понял, что мы вычисляем точное положение каждой плитки луча, но затем передаем его функциям рисования, которые преобразуют положение в MapPosition, которое использует координаты с фиксированной точкой только с 8 битами для дробной части. Из-за этого плитки не выравнивались должным образом, и иногда они создавали зазор или перекрывали друг друга. Чтобы закрыть пробелы, спрайты были увеличены на 1%, что привело к их перекрытию. Первоначально, когда электрический луч был создан еще в 2015 году, это не создавало видимых проблем.

Так что исправить случайное округление положения рендеринга было легко, и тело луча начало укладываться правильно, но все еще были видимые швы в голове и хвосте луча. Я читал о том, как растеризация треугольников работает на графических процессорах, поэтому я подумал, что это должно быть из-за того, что спрайты головы и хвоста имеют размеры, отличные от спрайтов тела, чтобы они не разделяли ребро точно, что приводит к тому, что некоторые пиксели на ребре быть растеризованным обоими квадраторами, а некоторые – ни четырьмя. Потратив некоторое время на исправление этой проблемы, я обнаружил, что проблема не в растеризации краев, а в фильтрации текстур.

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

Теперь лучи и свечение настолько близки к идеальному пикселю, насколько мы можем их получить. Свечение действительно делает сцены намного приятнее.

Застревание манипуляторов Twinsen

Я сделал некоторые улучшения в манипуляторах во время некоторых патчей 0.17. Я сделал их быстрее, удалив, как мне показалось, бесполезные паузы, когда манипулятор в некоторых ситуациях ничего не делал за один тик. Но после 0.17.50 это начало происходить:

В некоторых специфических ситуациях манипулятор будет стремиться к тому, чтобы к нему приближался предмет, но поскольку предмет был слишком быстрым, он мог бы перескочить через головку устройства манипулятора . Если это рассчитано определенным образом, это произойдет на неопределенный срок. До 0.17.50 этого не происходило, потому что манипулятор делал паузу на 1 тик после того, как не смог подобрать предмет, нарушая любые циклы синхронизации, но это также означало, что манипулятор мог ожидать до 10 тиков за один ход (так как манипулятор отслеживает элементы движущихся ремней на протяжении всего движения)

Поэтому я не хотел возвращаться к предыдущей логике. Многие более сложные решения также были не очень выполнимы, так как взаимодействие конвейер<-> манипулятор является важной частью Factorio. Таким образом, окончательное решение заключалось в том, чтобы сделать паузу на 1 тик после того, как не удалось подобрать предмет, но только если головка манипулятора находится сверху конвейера. Это должно быть лучшим компромиссом из всех рассматриваемых вещей.

Мы планируем выпустить патч в понедельник, поэтому на этих выходных у вас будет возможность поделиться своими мыслями о любых этих изменениях на нашем форуме.


Поделиться

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