Cómo un proyecto VoIP pasó a ser una de las características más especiales de todos los videojuegos
Aproximadamente en 2016, llegó a nuestras manos uno de esos proyectos de tantos que se consideran «raros», esos proyectos que, en cuanto te lo explican pasan a ser un reto entre difícil e imposible, y por otro te hace rebanarte los sesos intentando dar con la forma de hacerlo, hasta que das con la tecla… de esos que te trae una «pequeña empresa desconocida» y que, por desgracia, no dimos con la clave en aquel momento.
Quizá por eso quedó olvidado hasta hace poco en mi memoria y que consistía sencillamente en desarrollar un sistema que le diera «una vuelta de tuerca» a las salas de conferencia que normalmente utilizamos (al menos así lo plantearon desde un principio), que permitiera a varias personas hablar entre sí, pero con varios detalles importantes y necesarios:
- Los participantes de la sala tiene cada uno dos coordenadas (X,Y) de manera que estén situadas en una posición de un plano.
- Cada persona únicamente podrían escuchar a aquellos usuarios que estuvieran dentro de un radio determinado. Si las coordenadas cambian y la distancia entre los usuarios saliese del rango, deberían dejar de escucharse entre sí.
- El volumen deberá variar según la distancia entre sus usuarios. Aumentar conforme más cerca estuvieran los usuarios, y más bajo cuanto mayor distancia estén las coordenadas.
- Cada «sala», deberá ser capaz de soportar salas con más de 100 usuarios
- y algunos detalles más…
Nada más hablar de «salas de conferencia», lo primero que pensamos es cómo hacerlo con Asterisk, aunque rápidamente lo descartamos por que sería demasiado complicado. Las salas de conferencia de Asterisk están creadas pensando en un tipo de sala de conferencia muy concreta, así que la única posibilidad era desarrollarlo a mano usando WebRTC, ya que permitiría control en tiempo real del audio de varios puntos, pero por aquel entonces, WebRTC aún no era un estándar (llegó a hacerse estándar años más tarde, en 2021) y además el sistema de multiconferencia de audio mediante WebRTC, hablando con Iñaki Baz durante el FOSDEM de 2017, aunque posible, en aquel entonces no era nada fácil y requería un MCU (Servidor de conferencias) bastante potente y aún por desarrollar (y esto lo decía tras haber dado una conferencia sobre servidores de conferencias).
Así que se explicó a la empresa interesada las ventajas e inconvenientes de cada posibilidad y que, en aquel entonces, aún le faltaba un poco para poder llevarlo a cabo, no obstante, el camino era sin duda utilizar WebRTC cuando se estabilizase y los avances que surgían rápidamente, lo permitieran.
Y hasta ahí… el proyecto quedó en el olvido… hasta que hace poco retornó a nuestra memoria.
Chat de Proximidad: La VoIP en los juegos
Años después, jugando a varios juegos tipo Shooter, aparece una característica muy interesante: el chat de proximidad, un sistema que permite escuchar a otras personas si éstas se encuentran relativamente cerca y hablan entre sí, lo que permite al jugador saber que tiene cerca a otros jugadores e incluso poder hablar con ellos si se encuentra lo suficientemente cerca virtualmente, permitiendo crear verdaderas salas de conferencia de muchos jugadores.
Tal y como se pedía en los requisitos, el chat de proximidad está «limitado» a 100 participantes, que no están hablando todos a la vez, ya que la mayoría están fuera del rango necesario para poder hablar entre ellos, pero sí pueden llegar a coincidir en un mismo espacio varias personas y que puedan hablar entre sí más de 50, lo que lo hace prácticamente inviable para mantener una conversación, pero sí para darte cuenta que el chat de proximidad es una herramienta muy divertida para hacerte la idea de que estás con mucha más gente.
En apenas dos años, se han disparado los juegos que incluyen el chat de proximidad, esta característica que ha mejorado la interactividad multiusuario a través de internet, lo que convierte en estos juegos en algo mucho más divertido al poder hablar en persona con extraños que están «virtualmente» cerca aunque se encuentren físicamente bien lejos.
Es tal el éxito de esta característica que ya han aparecido servidores y clientes (plugins) para dotar de chat de proximidad a juegos que originalmente no lo incluyen.
Incluso hay herramientas de terceros (plugins o mods) que dotan del chat de proximidad incluso si el juego original no lo incluye y analizando el código, se puede ver que la solución planteada era justamente la que habíamos comentado. Prácticamente si un juego en el que los usuarios pueden desplazarse líbremente sobre un mapa, el chat de proximidad será algo obligatorio.
El metaverso, la realidad virtual, los juegos online multi-usuarios,… hacen que esto del chat de proximidad sea algo a investigar mucho más en serio y si, además aprovechamos las ventajas de las herramientas y librerías que han aparecido en los últimos años, aparecen algunos conceptos muy, muy interesantes.
Cómo puedo probar un chat de proximidad
Podéis ver una lista de proyectos que trabajan sobre el chat de proximidad en GitHub:
https://github.com/search?q=proximity+chat&type=repositories&s=updated&o=desc
Aunque si lo que queréis es probar de forma externa el chat de proximidad rápidamente, os recomiendo que entréis en esta web: https://app.chatmosphere.cc/session/sinologic con varias amigos y hagáis la prueba de lo que puede llegar a ser una característica que la incluyan prácticamente cualquier aplicación o página web, no únicamente juegos online. (Código fuente de chatmosphere)
Herramientas que usarían el chat de proximidad
¿Qué herramientas podrían incluir el chat de proximidad? Básicamente cualquier juego online. Es una opción voluntaria, por lo que cualquiera puede desactivarla, pero el chat de proximidad será útil cuando despegue el mundo de la realidad virtual y el metaverso. Herramientas donde puedas ir virtualmente a un aula y escuchar únicamente al profesor de esa aula o escucharlo con un volumen más bajo si estás más alejado, dará esa sensación de realismo que necesita este tipo de herramientas.
Otra posibilidad más avanzada sería la introducción de «obstáculos» que reduzcan el volumen o incluso distorsionen el audio que escuchamos. Esto quizá sería algo que veremos en breve y es que, de la misma forma que el famoso «raytracing» ha revolucionado los juegos incorporando gráficos hiper-realistas, el mismo sistema se puede utilizar para el sonido y permitir a una persona poder escuchar a otra si las condiciones de la «sala» lo posibilitan. No es lo mismo hablar en una habitación, que detrás de una pared o que en un espacio abierto.
Está claro que para ello aún falta, aunque viendo lo rápido que avanza todo, y con la capacidad de la inteligencia artificial, podríamos tener estas modificaciones a la vuelta de la esquina y que el chat de proximidad sólo sea el comienzo de la VoIP en muchos más ámbitos.