Году эдак в 1998, я раздобыл редактор уровней для Duke Nukem 3D, и первым делом я создал собствнный уровень, где поставил два зеркала друг напротив друга, зеркальный коридор. Загрузился в эту карту, вошел между зеркалами и игра зависла.
Недавно энтузиаст решил проверить все свойства зеркал в Duke Nukem 3D. Нашел много забавного и интересного.
На первом уровне есть туалет. Один. Значит общий для мальчиков и девочек. С огромным проёмом без двери и с писсуарами. Хм… И с диваном.
В бета версии были и мужские и женские туалеты.
Возможно, главная причина существование туалета — это зеркало. Чтобы продемонстрировать крутость движка. Настолько крутой, что может даже зеркало.
В зеркале отображаются монстры.
По зеркалам можно стрелять, на них остаются следы от пуль, но они сломаются от взрыва или если в них просто кинуть гранату.
Но самое интересное начинается, если вы введёте читкод на прохождение сквозь стены… и пройдёте сквозь зеркало.
Движок устроен так, что по ту сторону зеркала генерируется такая же комната и немного «магии», чтобы спрайты работали.
В зазеркалье, как и в реальной комнате есть телефонный номер на стене, но он «вывернутый».
В игре есть бомбы с дистанционным взрывателем. Что если…
… войти в зазеркалье, оставив бомбу снаружи и её взорвать?
Мда.
Игра не отображает на карте область зазеркалья.
Если вы уйдете в зазеркалье далеко, то вы умрёте, даже с кодом на бессмертие.
Вот так выглядит редактор уровней. Красная линия сверху — зеркало.
Если войти в «предпросмотр», то увидим заполнение буковками «S». Спецэффект под названием Sector Effector.
Вопрос: разработчик ручками должен прорисовать «зазеркалье» или движок автоматически копирует «реальность»?
Копирует.
Но при этом центр карты уполз. Почему?
Если вы уменьшите масштаб, вы увидите огромную комнату.
Если мы в неё войдём, оглянувшись, мы увидим туалет.
Но это большая пустая комната.
Движок копирует реальность, но в момент загрузки уровня. Он находит все зеркала и копирует «отражение» в зарезервированную область.
Если вы выходите за пределы этой комнаты в зазеркалье, вы умираете.
А если специально уменьшить эту «комнату»? Что произойдет?
Издалека зеркало не будет работать. Оно будет работать только для тех участков, которые поместились в уменьшенную комнату.
Вблизи — работет. Отдаляемся — не работает.
Мы видим, так же что и смерть с кодом на бессмертие также наступает при пересечении границы уменьшенной комнаты.
Автор: Алексей JetHackers Стаценко