Estoy bastante seguro de que el motor de origen es el único motor que lo admitirá de inmediato. Puedes leer sobre algunos de los problemas técnicos en un artículo que encontré en Gamasutra , copiado aquí para futuros lectores:
"Otro problema que encontramos fue la necesidad de cambiar los sistemas basados en la distancia, como el nivel de detalle (LOD) para los modelos, porque con nuestro juego, la distancia es relativa a las ubicaciones del portal.
Esto significa que los cálculos de distancia se convirtieron en una opción de tres líneas que conectan dos puntos, en lugar de solo una línea. Además, la línea de visión puede pasar a través de un solo portal más de una vez para alcanzar su objetivo.
El motor de origen realiza muchas optimizaciones de visibilidad precalculadas para el sacrificio. Permitir a los usuarios tender puentes de visibilidad con portales agregó otro nivel de complejidad.
Para una mejor representación, implementamos un método de dibujo de búfer de plantilla para vistas del portal, que nos dio mucha flexibilidad para manejar la profundidad de recursión del portal. Esto nos permitió representar un número infinitamente profundo de portales (limitados solo por el rendimiento), lo que hizo que nuestros pasillos "infinitos" se vean bastante limpios.
El dibujo de galería de símbolos también nos ayudó a resolver el problema de integrarnos adecuadamente con otras tecnologías en el motor Source, como la floración HDR. Dado que tenemos que renderizar nuestras escenas dos veces más para nuestros portales, dedicamos mucho de nuestro esfuerzo a hacer que los portales se procesen lo más rápido posible, como el sacrificio de vista especial basado en los bordes del portal y las optimizaciones de la lista de renderizado para el dibujo del portal. "
También recuerdo haber leído en alguna parte que hay muchos casos especiales, como tener portales en lados opuestos del mismo bloque. Hacer portales no es una tarea simple.
EDITAR:
Encontré otro buen artículo que contiene esto:
Rápidamente, nos dimos cuenta de que necesitábamos un método más robusto para representar los portales y permitir que el jugador y otros objetos se muevan sin problemas entre ellos. Esto requirió que profundizáramos un poco más en el código de física y renderizado del motor Source, y tuvimos que programar nuestro propio sistema de portal.
Básicamente, tuvimos que decirle al sistema de física de la Fuente que haga un agujero temporal en un solo lado de una pared, y que todo detrás del portal está conectado a la geometría en otra parte del mapa. Hacer que esto funcione y optimizar las soluciones para que se ejecuten en tiempo real fue un gran desafío.