Я почти уверен, что Source Engine - единственный движок, который будет поддерживать это из коробки. Вы можете прочитать о некоторых технических проблемах в статье, которую я нашел на Gamasutra , скопированной здесь для будущих читателей:
«Другая проблема, с которой мы столкнулись, заключалась в необходимости изменения дистанционных систем, таких как уровень детализации (LOD) для моделей, потому что в нашей игре расстояние зависит от местоположения портала.
Это означает, что при расчете расстояния выбираются три линии, соединяющие две точки, а не одну линию. Кроме того, линия обзора может проходить через один портал более одного раза, чтобы достичь своей цели.
Source Engine делает много предварительно вычисленных оптимизаций видимости для отбора. Разрешение пользователям соединять листы видимости с порталами добавило еще один уровень сложности.
Для лучшего рендеринга мы реализовали метод рисования буфера трафарета для представлений портала, который дал нам большую гибкость для обработки глубины рекурсии портала. Это позволило нам рендерить бесконечно глубокое количество порталов (ограниченных только производительностью), что делало наши «бесконечные» коридоры довольно аккуратными.
Трафаретный рисунок также помог нам решить проблему правильной интеграции с другими технологиями в движке Source, такими как цветение HDR. Так как нам приходится визуализировать наши сцены еще два раза для наших порталов, мы приложили немало усилий для того, чтобы сделать порталы максимально быстрыми, как, например, отбраковка усреднения специального вида на основе краев портала и оптимизация списка для рисования портала. "
Я также помню, что читал где-то, что есть много особых случаев, например, наличие порталов по разные стороны одного и того же блока. Создание порталов не простая задача.
РЕДАКТИРОВАТЬ:
Нашел другую хорошую статью, содержащую это:
Быстро, мы поняли, что нам нужен более надежный метод для рендеринга порталов и обеспечения возможности плавного перемещения игрока и других объектов между ними. Это потребовало, чтобы мы углубились в код рендеринга и физики движка Source, и нам пришлось программировать нашу собственную систему портала.
По сути, нам нужно было сказать системе физики Источника сделать временную дыру только на одной стороне стены, и что все, что находится за порталом, связано с геометрией в другой части карты. Заставить это работать и оптимизировать решения для работы в режиме реального времени было серьезной проблемой.