На Reddit заметили, что в Half-Life 1998 года и Half-Life: Alyx 2020-го одинаково мерцает свет лампочки. Публикация уже несколько дней висит в разделе популярных постов подсайта, посвящённого Half-Life, а игровые медиа обратили на неё внимание только сейчас.
Тогда же пользователи узнали, почему так происходит. Анимация мерцания света привязана к определённой последовательности букв алфавита, которые указывает на степень освещения. Так, например, буква a — это полная темнота, m — обычный свет, а буква z — самый яркий.
А конкретно в Half-Life эта последовательность выглядит вот так: «mmamammmmammamamaaamammma». И, судя по всему, Valve использует её даже спустя 25 лет — точно так же свет мерцает в Half-Life 2 и Portal.
Одной лишь серией Half-Life дело не ограничивается — такой же свет нашли и в Quake. Движок первой Half-Life основан на Quake engine — так что, видимо, корни этого кода идут аж оттуда.
Но почему код до сих пор так и не поменяли? Как пояснили в комментариях к посту, код движка напрямую связан с кодом компилятора карт освещения (лайтмапов). И то, и другое должны обрабатывать значения одинаково, чтобы освещение работало должным образом. Если изменить код мерцания лампы, потребуются изменения и в компиляторе — а это означает, что для каждой карты придётся переделывать и рекомпилировать освещение.
Подтверждения этого нашли на GitHub в коде Quake, Half-Life 1 и Half-Life 2. А конкретно тут в пояснении к коду можно увидеть в том числе то, о чём было рассказано выше — про обозначение букв алфавита.
Кто знает — может, такой же паттерн мерцания ламп найдут и во многих других проектах. В своё время Quake engine лицензировали очень многие студии, включая разработчиков Call of Duty.