![](http://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/avatars/58b/b18/cc9/58bb18cc940f2ce0aaedcb35d3ea21b8.jpg)
Зеркала в Duke Nukem 3D
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/274/113/ade/274113ade2be029c968e17d9b9646c4c.png)
Году эдак в 1998, я раздобыл редактор уровней для Duke Nukem 3D, и первым делом я создал собственный уровень, где поставил два зеркала друг напротив друга, зеркальный коридор. Загрузился в эту карту, вошел между зеркалами и игра зависла.
Недавно энтузиаст решил проверить все свойства зеркал в Duke Nukem 3D. Нашел много забавного и интересного.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/ua/zr/oq/uazroqpdahoeinmzdgfuz4gv0z4.jpeg)
На первом уровне есть туалет. Один. Значит общий для мальчиков и девочек. С огромным проёмом без двери и с писсуарами. Хм… И с диваном.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/b85/0b7/ecf/b850b7ecfe8d3e25667f7d5f02903f7c.png)
В бета версии были и мужские и женские туалеты.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/274/113/ade/274113ade2be029c968e17d9b9646c4c.png)
Возможно, главная причина существование туалета — это зеркало. Чтобы продемонстрировать крутость движка. Настолько крутой, что может даже зеркало.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/92e/b6c/59b/92eb6c59b3ac2d2f77d4282cd55fe658.png)
В зеркале отображаются монстры.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/pc/ah/j7/pcahj72nsp2xw6gxmfp40sc4j8s.gif)
По зеркалам можно стрелять, на них остаются следы от пуль, но они сломаются от взрыва или если в них просто кинуть гранату.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/b_/a8/ex/b_a8exmavv-cwzmczbcux1s9i-o.gif)
Но самое интересное начинается, если вы введёте читкод на прохождение сквозь стены… и пройдёте сквозь зеркало.
Движок устроен так, что по ту сторону зеркала генерируется такая же комната и немного «магии», чтобы спрайты работали.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/50c/298/d25/50c298d25d24a6ba0bca3ecc86fdaf6b.png)
В зазеркалье, как и в реальной комнате есть телефонный номер на стене, но он «вывернутый».
В игре есть бомбы с дистанционным взрывателем. Что если…
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/w6/xs/ac/w6xsacig7-r4iyx0vwpzygn8sfq.gif)
… войти в зазеркалье, оставив бомбу снаружи и её взорвать?
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/by/yl/7h/byyl7huow2wzc6ir3slfstpzafu.gif)
Мда.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/cab/93e/677/cab93e67730cb079848591d6bb18f6a0.png)
Игра не отображает на карте область зазеркалья.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/7e/mq/rg/7emqrgg0df1apbqzkuu82_wuvvu.gif)
Если вы уйдете в зазеркалье далеко, то вы умрёте, даже с кодом на бессмертие.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/654/5cf/45b/6545cf45b5287b74210b83d08e8d47bd.png)
Вот так выглядит редактор уровней. Красная линия сверху — зеркало.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/c03/09a/880/c0309a8806e7e2fe0ec768c130c694f4.png)
Если войти в «предпросмотр», то увидим заполнение буковками «S». Спецэффект под названием Sector Effector.
Вопрос: разработчик ручками должен прорисовать «зазеркалье» или движок автоматически копирует «реальность»?
Копирует.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/531/fb5/283/531fb5283fc4f3c2fa8a671c686fa4ea.png)
Но при этом центр карты уполз. Почему?
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/1d0/f3e/ae6/1d0f3eae6c79737e41eaa8bc906721d4.png)
Если вы уменьшите масштаб, вы увидите огромную комнату.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/22e/c04/dda/22ec04dda3d8774ebd3651f5824f3c41.png)
Если мы в неё войдём, оглянувшись, мы увидим туалет.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/86e/15e/073/86e15e0738c99a8271b0162ff4c5b782.png)
Но это большая пустая комната.
Движок копирует реальность, но в момент загрузки уровня. Он находит все зеркала и копирует «отражение» в зарезервированную область.
Если вы выходите за пределы этой комнаты в зазеркалье, вы умираете.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/getpro/habr/post_images/fb2/759/f2d/fb2759f2df337aa86af9edebee6c6152.png)
А если специально уменьшить эту «комнату»? Что произойдет?
Ответ
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/yw/jl/dt/ywjldtce-l1zdmrjp89zfzwbqnk.gif)
Издалека зеркало не будет работать. Оно будет работать только для тех участков, которые поместились в уменьшенную комнату.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/zs/lm/ri/zslmrisj2p2tusfjcmty9c0o26a.gif)
Вблизи — работает. Отдаляемся — не работает.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/mg/zb/zw/mgzbzwjzlk-x_yhrhv5e3lxlcdm.gif)
Мы видим, так же что и смерть с кодом на бессмертие также наступает при пересечении границы уменьшенной комнаты.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/yw/jl/dt/ywjldtce-l1zdmrjp89zfzwbqnk.gif)
Издалека зеркало не будет работать. Оно будет работать только для тех участков, которые поместились в уменьшенную комнату.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/zs/lm/ri/zslmrisj2p2tusfjcmty9c0o26a.gif)
Вблизи — работает. Отдаляемся — не работает.
![image](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/mg/zb/zw/mgzbzwjzlk-x_yhrhv5e3lxlcdm.gif)
Мы видим, так же что и смерть с кодом на бессмертие также наступает при пересечении границы уменьшенной комнаты.
Прилетел RUVDS и оставил этот баннер здесь:
![](https://webcf.waybackmachine.org/web/20210331093929im_/https://habrastorage.org/webt/ou/g5/kh/oug5kh6sjydt9llengsiebnp40w.png)
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Сколько часов вы играли в Duke Nukem 3D (в одиночку и по сети)
-
16,2%не больше 1 часа172
-
33,5%больше 10 часов355
-
50,3%больше 100 часов533
Комментарии 141
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.