Выпуск от 28 февраля 2018г.
Пока Марк Эйбент отсутствует (по-видимому, выполняет какое-то секретное задание), Макс Хан смело вступает в битву с багом, который генерирует бесплатное топливо прямо во время полета. Истребит ли он его к досаде экономных пилотов? Смотрите и узнаете.
Привет, меня зовут Макс Хан. Марка сегодня нет, поэтому вести «Истребителей багов» буду я. Давайте начинать.
Сегодня мы разберемся с небольшим забавным багом, который позволяет вам генерировать топливо за счет теплового излучения и энергопотребления. Это значит, что мы наконец-то преодолели энтропию! Однако команда не хочет этого, так что придется избавляться от бага.
Когда дизайнеры балансировали систему каналов/трубопроводов, они также настраивали генерацию топлива для заборников и потребление топлива для баков и полетного контроллера. В процессе они заметили, что если выключить все системы и просто неподвижно зависнуть, корабль будет генерировать топливо. Потребовалось покопаться в коде какое-то время, чтобы установить причину. Вот здесь показаны компоненты, которые используются для управления системой каналов. Эта система, в свою очередь, определяет механизм распределения тепла и питания по кораблю. Нам удалось выяснить, что в одной небольшой части кода мы определяем, какой канал следует включить, а какой отключить, и где они будут соединяться. Изначально они все были соединены воедино, а это значит, что когда какой-то канал активировался, он тут же подсоединялся к остальным, и вы могли видеть то, что я сейчас продемонстрирую.
На тестовом уровне создадим особый Gladius, у которого нет топливозаборников. Если мы израсходуем немного топлива и переведем корабль в режим бездействия, вы увидите, как в правом верхнем углу экрана числа начинают медленно расти: по одной единице каждые пару секунд. Этот особый Gladius без заборников не должен генерировать топливо вообще, но его запас все же медленно пополняется.
В итоге мы обнаружили, как что-то наполняло топливопроводы, от которых топливо затем поступало в баки. Здесь важны числа: одни подаются на вход системы, другие являются выходными данными. Причина такого поведения крылась в том, что мы соединяли каналы энергии и тепла вместе, потому что у нас не было особой механики, где происходило бы разделение на каналы для тепла и каналы для электричества. В итоге все, что мне нужно было сделать, так это добавить проверки, чтобы убедиться, что энергию мы подключаем к электрическому каналу, а тепло к тепловому.
Если мы теперь объединим все, внесем изменения в компонент сущности и перекомпилируем код, то тепло будет передаваться только по тепловым каналам, энергия – по с электрическим, а топливо – по топливопроводам. Теперь присоединенные к этим каналам компоненты не будут повсеместно генерировать какие-то произвольные значения и нарушать законы физики.
После компиляции снова запустим тестовый уровень и загрузим Gladius. Помним, что он особенный – у него нет топливозаборников. Включим каналы и полетаем по уровню. Теперь мы можем заметить, как показатель уровня топлива уверенно идет вниз. Даже если зависнуть в бездействии, корабль продолжит сжигать топливо. Что же касается энергии и тепла, то они больше не влияют на топливозаборники.
И в итоге мы пришли к разочаровывающему результату: если мы хотим следовать законам физики, нельзя просто так генерировать топливо из тепла. Нам нужно распределить ресурсы по правильным каналам и запретить вам получать бесплатное топливо при полете на корабле.
Марк может быть вернется в следующий раз, а может и нет. Увидим. С вами был Макс Хан, спасибо что присоединились к «Истребителям багов».