El guardián invisible, y bloqueos que por fin se explican 👁️
Hace un tiempo escribimos aquí sobre un juego pensado para niños desde el diseño: reportes, comentarios y un ojo atento. Sinceramente, el ojo atento era la parte más floja: podíamos recibir reportes, pero apenas podíamos ver qué pasaba realmente en un mundo. En eso hemos estado trabajando, con dos piezas: un modo observador para la supervisión y un sistema de bloqueos completamente renovado que por fin les explica a los jugadores afectados qué está pasando.
El modo observador. Cuando llega un reporte («alguien está construyendo tonterías», «alguien está escribiendo cosas feas»), ahora podemos entrar en ese mundo sin molestar. Y de forma invisible de verdad, no del tipo «por favor, no me dibujes», que un juego modificado podría ignorar sin más. El servidor se guarda al observador por completo para sí: sin avatar, sin nave estacionada, sin plataforma de aterrizaje ocupada, sin animación de descenso, sin mascotas, sin speeder, sin ocupar plaza de jugador y sin cambiar el número de jugadores. Para todos los que están en ese mundo, literalmente no hay nadie. El vuelo atraviesa paredes (si no, nunca podrías entrar en una base cerrada a cal y canto), las criaturas ignoran al observador y disparar no es posible de todos modos.
Mirar significa mirar. El observador no puede tocar nada en el mundo, con una única excepción: puede minar bloques. Es la única palanca que de verdad elimina de un mundo una construcción ofensiva, y cada bloque eliminado queda registrado. En el chat, el observador está silenciado; para dejarse ver a propósito hace falta un comando aparte. Y en pantalla aparece todo el rato un cartel fijo de OBSERVADOR: nunca deberías creer por error que estás jugando con normalidad.
Por qué está construido de forma tan estricta. Dos decisiones que desde fuera no se ven, pero que eran importantes para nosotros. Primera: el rol de observador no se guarda en la partida, sino que se vuelve a calcular a partir de la configuración del servidor cada vez que alguien se une. Las partidas guardadas se pueden descargar y volver a subir en otro sitio, y un rol de supervisor guardado viajaría con ellas a máquinas que no son nuestras. Segunda: no es una opción del mundo. Quien es dueño de un mundo no debe poder desactivar la supervisión de ese mundo. Por eso tampoco depende del ajuste de «trucos de administrador», que en los mundos ya viene desactivado por defecto.
Encontrar dónde pasó algo. Para eso hay comandos nuevos: /players muestra quién está conectado, y también a todos los que han jugado alguna vez en ese mundo; /builds muestra dónde ha construido alguien; /where te lleva hasta un jugador; /goto salta también entre planetas (el antiguo teletransporte solo fijaba coordenadas y te dejaba en el planeta equivocado 🙈). Además, una página de resumen en nuestro panel de administración lee directamente de la partida guardada del mundo: jugadores, estructuras y «puntos calientes de construcción»; así encuentras incluso una casa que alguien plantó en medio de la nada sin núcleo de base. Y cada celda modificada recuerda ahora quién la tocó por última vez y cuándo. Antes de incorporarlo, medimos lo que cuesta en almacenamiento: ni una sola fila extra en la base de datos, porque de todos modos se guarda por celda.
También en mundos privados, con doble cerradura. Las primeras versiones tenían un agujero absurdo: el observador invisible solo podía llegar a mundos públicos sin contraseña, justo aquellos en los que menos pasa. Los niños casi siempre juegan en mundos privados cuya contraseña circula entre un grupo de amigos. Por eso ahora la supervisión llega también a esos. Para que esto no se convierta en una puerta trasera, el acceso tiene doble cerradura: hace falta una cuenta de operador que solo se puede crear presentando un código secreto y el nombre de jugador previsto para ello, que está reservado en todo el sistema y que nadie más puede registrar ni usar para jugar. Si falta cualquiera de los dos, no pasa absolutamente nada.
Y luego, los bloqueos. Esto antes estaba resuelto francamente mal: una cuenta bloqueada podía iniciar sesión con total normalidad, y el muro solo aparecía al unirse a un mundo, sin motivo, sin fecha y sin forma de preguntar. Desde el lado del jugador, el juego simplemente estaba roto. Ahora el propio inicio de sesión trae la situación, y hay una bandeja de mensajes: «Tu mundo fue eliminado (motivo)», «Tu bloqueo ha sido levantado». Ese mensaje se escribe en el momento en que pasa algo: más tarde la información ya no existe, porque un mundo eliminado, bueno, ya no está.
Un tiempo fuera en lugar de un destierro. Los bloqueos ahora son sobre todo temporales: tres días por defecto. Un tiempo fuera que ya terminó cuenta como «no bloqueado» en todos los puntos de control, para que «tres días de descanso» nunca se convierta a escondidas en una exclusión permanente. Aun así, el registro se conserva en el historial. Los motivos vienen en categorías fijas (chat, destrozos, trampas, nombre, otros) que se muestran traducidas al alemán y al inglés, y si una persona añade algo, aparece tal cual, exactamente como se escribió. Lo más importante de todo: el mensaje puede decir el día en que vuelves a ser bienvenido.
Los dueños de mundos ahora pueden moderar su propio mundo. Si tienes un mundo, recibes la misma palanca para tu mundo: tu propia lista de bloqueos, aplicada con la misma fiabilidad que la nuestra. Recuerda la cuenta (así que cambiarse el nombre no sirve) y el nombre en el juego (los invitados del arcade no tienen cuenta). Eliges de una lista de personas que de verdad visitaron el mundo: escribir nombres a mano es justo la manera de acabar bloqueando al niño equivocado. Y como un bloqueo solo decide sobre la siguiente entrada, también existe la expulsión: el jugador vuelve al menú al instante, con un motivo y en su propio idioma. El mensaje sale antes de que se cierre la conexión, para que un juego modificado no pueda ignorarlo sin más y seguir jugando.
Lo que, a propósito, no construimos. Lo obvio contra quien esquiva un bloqueo sería reconocer el dispositivo («cuenta nueva, mismo PC»). Lo descartamos por tres motivos: el identificador cambia en cuanto se conecta una memoria USB o Windows hace una actualización grande; un juego modificado puede falsificarlo en cinco minutos; y los equipos de un colegio configurados de forma idéntica parecerían todos iguales. Y luego está la parte legal: según la ley alemana, leer un identificador de dispositivo requiere un consentimiento que los menores de 16 años no pueden dar de forma válida. La supervisión no debe convertirse en vigilancia. Y una regla más, escrita en el código: la propia cuenta de operador no puede ser bloqueada ni expulsada; si no, la supervisión podría desactivarse desde dentro.
Todo esto ya está en el código y entrará en funcionamiento con la próxima actualización del servidor. Esperamos de corazón necesitarlo lo menos posible. 🌟
Comentarios