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