Factorio Dev Diary #402 - Lightspeed circuits
Здравствуйте,
если нас читают любители автоспорта, то вам повезло.
Сеть радиолокационной передачи (Коварекс)
Иногда может быть полезно отправлять сигналы цепи на большие расстояния. Лично я никогда не использовал его ни для чего, но когда мы некоторое время назад тестировали игру, Боскид настоял на том, чтобы мы включили провода в наши чертежи рельсов, потому что никогда не знаешь, когда это может пригодиться.
Я чувствовал себя неловко по этому поводу, потому что это противоречит принципу кодирования «пишите, когда вам это нужно», поскольку добавляет раздувание чего-то, что может даже не пригодиться позже. Но я понимаю, что если это действительно понадобится, потом исправить это будет гораздо сложнее.
Вот так выглядела наша железнодорожная система «на всякий случай».
Чтобы избежать этой дилеммы, мы добавили давно востребованную функцию беспроводной передачи данных с использованием радаров.
Есть много способов сделать это, но мы хотели, чтобы все было просто. Поэтому мы решили, что для каждой поверхности есть только один радарный канал (по-прежнему разделенный между красным и зеленым). Это означает, что вам не нужно ничего настраивать, вы просто подключаете провод и все готово. Если радар теряет питание, соединение с цепью разрывается.Спадание проводов (Коварекс)
Поскольку все улучшения в сети побудили меня использовать ее чаще, меня все больше и больше раздражала эта проблема:
Я хочу переместить нижний набор комбинаторов, но если я сделаю это с помощью вырезания/вставки, все провода между двумя частями будут потеряны, и мне придется переподключить его.Это стало настолько раздражающим, что мне просто пришлось добавить эту функцию - сделать так, чтобы схема запоминала соединения проводов внешней цепи и пыталась переподключить их, если это возможно. Чтобы свести к минимуму проблемы, эти соединения запоминаются только при использовании инструмента вырезания, а не при переносе в библиотеку чертежей или строку экспорта чертежей.
Скорость света слишком мала. Нам нужно идти прямо на смехотворной скорости! (Рсединг)
В Factorio нет такого понятия, как «слишком быстро». Начиная с первой установленной машины, все направлено на то, чтобы сделать их быстрее. Более быстрые ленты, более быстрые устройства для вставки, более быстрые сборочные машины и скоростные модули, которые делают их еще быстрее. Но этого недостаточно. Дальше добавляете маячки с модулями скорости, а потом еще и еще.
Но этого все еще недостаточно. Этого никогда не бывает достаточно. Модификации еще больше увеличивают цифры и выходят за пределы того, с чем может справиться сам движок .
Об этом сообщалось «несколько» раз ( 69490 107571 60136 ), и каждый раз мы (я) говорили примерно одно и то же: «сумасшедшие числа дают сумасшедшие результаты», «если базовая игра не столкнется с этим, мы не хотим делать это». логика крафта более сложная/хрупкая», «только не делайте этого, 1 крафт за такт — это достаточно быстро».
Но затем случилась Space Age с ее легендарными скоростными модулями, и внезапно я столкнулся с этой проблемой базовой игры, так что мне пришлось «съесть ворону» и найти решение.
Управляйте граничные случаи, но не делайте основной случай медленнее
Концептуально это простое решение: зациклить логику крафта, если ему нужно выполнять быстрее, чем 1 крафт за такт. Но с точки зрения кода все не так просто. Годы оптимизации и функций сборки машин означали, что любые внесенные изменения имели высокую вероятность что-то сломать, если я не до конца понимал, что должна была делать каждая строка кода и что она на самом деле делала.
Примерно через два дня просмотра кода, его перестановки и написания комментариев, объясняющих отдельные части, у меня появился план, как заставить его работать. Написание окончательных изменений, чтобы все работало правильно, заняло около 1 часа и сработало правильно с первой попытки. Этого не должно было случиться, и это вызвало у меня сомнения. Спустя несколько дополнительных тестов и просьбы Боскида попытаться сломать его, это подтвердилось.
Но 2 дня анализа и понимания существующего кода принесли свои плоды!
Легендарная литейная мастерская со скоростью +2500%, выполняющая 4,33 крафта за такт.Основная проблема была исправлена, и (насколько я могу судить) единственным ограничением скорости изготовления теперь является количество ингредиентов, имеющихся в машине, и количество свободного места в выходных слотах.
Как всегда, передавайте нам свои мысли по беспроводной сети в привычных местах:
Форум Редит