Tenho certeza de que o Source Engine é o único mecanismo que suportará isso imediatamente. Você pode ler sobre alguns dos problemas técnicos em um artigo que encontrei no Gamasutra , copiado aqui para futuros leitores:
"Outro problema que encontramos foi a necessidade de alterar sistemas baseados em distância, como nível de detalhe (LOD) para modelos, porque, em nosso jogo, a distância é relativa aos locais do portal.
Isso significa que os cálculos de distância se tornaram uma escolha de três linhas conectando dois pontos, em vez de apenas uma linha. Além disso, a linha de visão pode passar por um único portal mais de uma vez para atingir seu objetivo.
O Source Engine faz muitas otimizações de visibilidade pré-calculadas para seleção. Permitir que os usuários coloquem a visibilidade em folhas com portais adicionou outro nível de complexidade.
Para uma melhor renderização, implementamos um método de desenho de buffer de estêncil para vistas do portal, o que nos deu muita flexibilidade para lidar com a profundidade de recursão do portal. Isso nos permitiu renderizar um número infinitamente profundo de portais (limitado apenas pelo desempenho), o que fez nossos corredores "infinitos" parecerem bem organizados.
O desenho do estêncil também nos ajudou a resolver o problema da integração adequada com outras tecnologias no mecanismo Source, como o HDR blooming. Como temos que renderizar nossas cenas mais duas vezes para nossos portais, dedicamos muito esforço para tornar os portais renderizados o mais rápido possível, como a seleção de frustum de vista especial com base nas bordas do portal e otimizações da lista de renderização para o desenho do portal. "
Também me lembro de ter lido em algum lugar que existem muitos casos especiais, como ter portais em lados opostos do mesmo bloco. Fazer portais não é uma tarefa simples.
EDITAR:
Encontrei outro bom artigo que contém isso:
Rapidamente, percebemos que precisávamos de um método mais robusto para renderizar os portais e permitir que o player e outros objetos se movessem perfeitamente entre eles. Isso exigiu que nos aprofundássemos um pouco mais no código de renderização e física do mecanismo de origem, e tivemos que programar nosso próprio sistema de portal.
Basicamente, tivemos que dizer ao sistema de física da Fonte para fazer um furo temporário em apenas um lado de uma parede e que tudo atrás do portal está conectado à geometria em outra parte do mapa. Fazer com que isso funcione e otimizar as soluções para execução em tempo real foi um grande desafio.