Hemos actualizado algunos problemas que impedían jugar o empeoraban la experiencia a algunos jugadores.
De momento no disponemos de un sistema de actualización automático, por lo que deberéis descargar la nueva versión desde aquí si queréis seguir entrando en el servidor.
Hemos actualizado algunos problemas que impedían jugar o empeoraban la experiencia a algunos jugadores.
De momento no disponemos de un sistema de actualización automático, por lo que deberéis descargar la nueva versión desde aquí si queréis seguir entrando en el servidor.
Esta semana hemos avanzado en varios aspectos de esta fase de estructura y elementos básicos en la que nos encontramos, y nos encontraremos durante un buen tiempo.
La semana pasada hablábamos de la nueva herramienta Room Editor y su funcionalidad a la hora de crear animaciones. Esta semana ya hemos perfilado algunos bugs que se crearon en la anterior build, donde las animaciones ya funcionan entre distintas cámaras y continúan desde el fotograma que hubiese usado la ultima cámara antes de la transición.
Cursores
Hemos implementando una primera versión de cursores animados, para empezar a ofrecer un feedback sobre qué elemento se encuentra bajo nuestro cursor, esto es: una puerta, una zona de transición, un objeto interactuable, etc…
Chat
Entre las características actuales del chat podemos encontrar lo siguiente:
Rich text: Tags para colores y formatos de texto (negrita, cursiva y color)
Emoticonos: Actualmente hemos añadido los emojiis básicos en dos formatos: por referencia (algo que pretendemos eliminar en el futuro) y por código unicode (esto ayudará a usar teclados virtuales que incluyen estos iconos, como en macOS)
Otracaracterística del chat que pensamos puede ser interesante de cara al futuro, tanto por temas de debuging por parte del staff como para la futura creación de mods por entusiastas del juego, son los comandos de reflexión.
Esta herramienta permite ejecutar funciones por reflexión de elementos concretos del juego. La idea principal tras esto es incluir una forma temprana para modificaciones del juego ingame, uno de los pilares para permitir el modding.
El vídeo que os ponemos a continuación muestra un ejemplo de esto: Existiendo una clase especifica para el control de cursores e incluyendo la interfaz IGameCommand, esta herramienta permite llamar a cualquier función (como la función SetCursor en el ejemplo)desde el propio juego, sobreescribiendo su comportamiento, es este caso, cambiando al cursor «estándar» incluso cuando el comportamiento normal (sin haber usado este comando) es usar el cursor de desplazamiento de zona.
Para ello debemos indicar comandos con la siguiente sintaxis:
La última característica que hemos añadido a las habitaciones son las puertas y objetos interactuables. Fuera de la simpleza que puedan parecer, ha sido necesario plantearse algunas cosas:
Zona de área de uso para todos los interactuables. Esto incluye por supuesto a las puertas, y nos permite indicar la zona aleatoria donde un personaje debe encontrarse para poder ejecutar la acción del objeto.
Zona final de transición: Cuando cambiamos de sala, debemos dirigirnos a la puerta, esperar a que se abra una vez hemos llegado, y continuar andando hacia «el fondo» para comenzar la pantalla de carga. Todo esto esta incompleto y únicamente tenemos planteada la UI para automatizar y facilitar la creación de estas puertas.
Os dejamos un vídeo donde se muestran casi todas las características de las que hemos hablado hoy:
Estructura de servidores
Hemos replanteado la estructura de servidores para agilizar el uso que tenga cada uno y aumentar, en lo posible, el número de usuarios concurrentes sin tener que adquirir la versión profesional del framework que usamos para el netcode.
Hasta el momento teníamos un único servidor donde habíamos desplegado todos los elementos. Teniendo en cuenta que el limite de usuarios impuestos por el framework es de 100 usuarios, esto implicaba que si había 90 personas jugando, y 10 en la zona de login (selección de personaje y todo eso), significaba que nadie más podria conectarse ni al login.
Ahora hemos separado en tres servidores todo esto proceso: Uno para el login, otro para la base de datos y otro para cada cárcel. El servidor que utiliza la base de datos no tiene ningún tipo de limite a la hora de consultas concurrente (más allá de los propios limites técnicos) pero tanto el servidor de Login como los servidores de Cárcel, sí consumirán este limite de 100 usuarios, pero con esta nueva estructura, 100 cada uno. Es decir, 100 personas haciendo login a la vez que otras 100 personas juegan en una cárcel y otra 100 personas en otra cárcel distinta. Y todos a la vez.
Esta semana en programación hemos hecho algunos avances en el sistema de habitaciones y en la herramienta ‘Room Editor’ para automatizar todo este proceso.
La semana pasada hablábamos del proceso de automatizar los elementos básicos de una escena, es decir, la posición de las cámaras, la aplicación de los shaders y la asignación de zonas.
En esta ocasión hemos añadido un sistema aun en desarrollo de animaciones. Con esto, podremos recrear algunas partes del juego que sí contenían animaciones (¿alguien recuerda las moscas de la cocina?).
Las animaciones de momento funcionan a 24fps, aunque se esta barajando la posibilidad de usar un framerate má bajo (de unos 15) para aumentar la sensación de los juegos de aquella epoca, pues algo muy caracteristico era precisamente esa «falta de fotogramas» en las animaciones del fodo.
Os adjunto un vídeo de este sistema de animación en funcionamiento. Como podréis observar aun faltan depurar algunas cosas.
En términos de rendimiento, las animaciones son creadas extrayendo una región de pixeles de la imagen original (el render completo) y se guardan en archivos en formato RGB24. Esto nos esta dando una tasa de refresco en el juego de unos 1020 FPS, con todos los efectos activados.
Esta cifra sin embargo variará en el futuro, pues no estamos considerando escenarios con más personajes, más efectos y más recursos en acción. Sin embargo, sí nos permite ir comprobando que el futuro juego de La Prisión consuma los mínimos recursos posibles. En otras palabras: que funcione en la mayoría de ordenadores posibles.
La herramienta Room Editor también ha recibido una importante actualización, añadiendo una pestaña especifica para toda la creación de animaciones. Básicamente, indicando una ruta, un rectángulo, una velocidad y una curva de animación, Room Editor creará por nosotros todos los pasos de forma transparente.
Lamentablemente la herramienta aun no se encuentra completada en este momento, a falta de depurar algunas de sus características actuales y la implemención de algunas nuevas.
También hemos mejorado el shader de transparencias para elementos 3D, añadiéndole la posibilidad de utilizar una mascara, lo que nos permite crear verjas en el juego que ocultan la geometría de los elementos 3D tras ellos:
A lo largo de esta semana hemos avanzado en más elementos esenciales para el desarrollo del juego. Uno de esos elementos es la automatización a la hora de crear habitaciones.
También hemos creado una wiki para ir documentando herramientas y mecánicas del juego.
Y hemos mejorado algunas cuestiones de seguridad en el servidor. Esperamos que estas medidas garanticen que nadie pueda explotar elementos importantes y borrar la base de datos.
Es difícil mostrar cosas de programación sin entrar en código puro, por lo que os dejo un par de screenshot de la base de datos actual por eso de ir rellenando un poco el post 😛
Room Editor
Room Editor es una herramienta desarrollada para facilitar la creación de habitaciones en Unity de forma automática.
Sin embargo es importante recalcar que aun faltan muchos elementos, por lo que este acercamiento es para agilizar el desarrollo en la parte de gráficos, permitiendoles experimentar sin necesidad de programar o tocar elementos del motor.
En el vídeo podéis observar su funcionamiento en acción. Algunos procesos aun deben ser hechos a mano, como la creación de campo de navegación.
La Prisión Wiki
Como mencionaba antes, hemos creado una wiki usando Mediawiki para ir documentando todos los elementos del juego. Si decides visitarla, ten en cuenta que estamos en los primeros días de haberla levantando, por lo que la mayoría de la información o es inexistente, o es incompleta o no esta verificada, por lo que recomiendo coger con pinzas cualquier cosa que leáis ahí en los próximos meses:
Seguimos en la busqueda incansable de encontrar un sistema de reglas para aplicarlo al juego. En anteriores entradas hablabamos del problema en el que nos encontramos al no recibir nada de soporte por el equipo original, y no saber con exactitud las reglas que regian todo por detrás.
Hemos estamos mirando muchos juegos y consultando a muchas personas y seguimos sin tener una decisión clara al respecto. Si conoces a alguien que pueda ayudarnos con este tema, por favor contacta con nosotros en los comentarios o en el grupo oficial de Telegram.
A continuación os pongo la lista de juegos que estamos valorando:
Hoy vamos hablar de los avances en el sistema de traducción que queremos implementar en el juego. La entrada que nos acontece en esta ocasión es, como muchas de las cosas que aun faltan por llegar, una de las bases que cimentará el futuro juego de La Prisión.
Siempre he creído que la traducción de un juego es importante, y que el idioma mínimo que cada juego debe llevar siempre es el ingles. Es un idioma muy importante, hablado por la mayoría, y que permite al mundo conocer obras que, de otra manera, se relegarían a los pocos que compartieran su lengua original.
Pero también he creído siempre que un juego debe respetar su raíces y el país donde se produjo, y eso incluye añadir el castellano como lenguaje al juego. Por ende, no hay otra solución que garantizar un sistema que permita añadir toda lengua al juego, y ofrezca, frente a otras soluciones más clásicas, una verdadera ayuda en el día a día entre los muros de La Prisión.
Herramienta para Unity
Estamos desarrollado una herramienta para ser usada internamente en Unity con la finalidad de acelerar y acomodar el proceso de la localización.
Estas son las carateristicas <ironia>del original nombre: Localization Editor </ironia>:
Serialización binaria del contenido en UTF-16 para permitir lenguajes complejos como el japones o, quien sabe, futuros lenguajes alienigenas más complejos de lo que hoy podamos imaginar :P.
Importación y exportación en formato CSV, un formato muy conocido en el área de la traducción.
Sistema de traducción estática y dinámica, esto es: Textos que no se modifican y textos solicitados por el código en tiempo de ejecución.
Sistema de rutas de recurso: Utilidad para assets y elementos de contenido binario como imágenes o sonidos.
Sistema de duplicación: Un problema típico en sistemas de traducción es duplicar entradas innecesarias, como crear dos claves con el mismo contenido en espacios de nombre distintos. Nuestra herramienta detectará y avisará de dichas duplicaciones.
Algunos bugs por arreglar: Esta es una característica muy común en cualquier herramienta…
No todas las características están aun acabadas, pero si las suficientes como para considerar que puede usarse en el repositorio principal del juego.
Cambiar lenguaje ingame
Reconozco que esto es quizá más un capricho mio que una necesidad real del juego, y es que nuca podré olvidar lo ingenioso que me resultó, en su momento, esta posibilidad en un addon del que jamás podré recordar el nombre en World of Warcraft.
La Prisión es, por su propia naturaleza, un juego español con pocos recursos, y eso significa que, si en un futuro, una persona de distinto idioma quisiera saber el nombre original que tal o cual objeto tiene en castellano, le permitirá buscar información por internet que, poniendo el nombre traducido, no podría encontrar tan facilmente.
Es cierto que uno siempre puede ir a opciones, idiomas, y cambiarlo. Pero, ¿por qué no permitir un atajo de teclado que lo haga en tiempo real? ¿no es más cómodo para esa gente, mirar por unos segundos el nombre original, dentro del propio juego, y luego volver a su idioma? Yo creo que sí, y creo que alguien le terminará por encontrar la utilidad.
Como podéis ver en el vídeo de a continuación no todos los textos están implementados a falta de depurar algunas características de la herramienta.
Buscando inspiración en Asheron’s Call para la base de datos
El 31 de enero de 2017, no mucho antes de que lo hiciera La Prisión, el juego multijugador masivo Asheron’s Call cerraba sus puertas de forma definitiva. La comunidad que hubo alrededor de ese juego, vivió lo mismo que, en estos días, nuestra comunidad esta viviendo, y aunque desconozco si con ayuda o sin ella del staff original, la comunidad creó un emulador del servidor, de forma libre, disponible en github:
Gracias a su aportación, nuestro equipo a podido examinar el funcionamiento de este, incorporando a nuestra base de datos técnicas que han sido usadas para este juego tan famoso en su momento.
Si sois desarrolladores os invito a que le echéis un vistazo, esta escrito en un sano y moderno C# fácil de entender y con muy buenas ideas dentro.
¡Hola a todos! Bienvenid@s al blog oficial del proyecto: Revive La Prisión.
Como muchos sabreis, en el año 2018, los servidores del juego cerraron definitivamente, provocando que un grupo de antiguos jugadores crearan un grupo con la esperanza de volver a jugar algun día.
Ese día, cada vez está más cerca.
En el momento de escribir estas lineas, somos dos programadores, por lo que el trabajo a repartir es titánico. Pero no es algo que nos importe, para nosotros es un placer dedicarle el tiempo que necesita un proyecto así, que estimo, no será menor a un año. Con suerte, en el 2021, podremos empezar con una beta abierta.
Tecnología usada
Han sido muchos los debates sobre qué tecnologías usar en el desarrollo, pero al final, las ganadoras, fueron las siguientes:
Smartfoxserver 2X: Servidor principal
Unity 2019.X: Engine principal
¿Qué implica esto para el futuro del juego? Por un lado, ambas tecnologias no son libres ni gratuitas, aunque ambas ofrecen una solución gratuita, aunque limitada, en sus prestaciones. Es esta ultima parte en la que el juego vivirá, dentro de los limites impuestos por estas tecnologias.
Uno de esos limites, por ejemplo, es el número concurrente de usuarios que pueden conectarse a La Prisión, que rondará los 100 usuarios por cárcel.
El motivo principal de usar estas dos tecnologías son por temas de tiempo. Tanto Unity como Smartfoxserver ahorran, si no cientos, miles de horas, en el campo de desarrollo. El segundo motivo, es que ambas herramientas ofrecen la posibilidad de actualizarlas a un plan de pago, desbloqueando todos esos limites impuestos, y la tercera, que son las herramientas que a día de hoy, 2020, conocen la mayoría de los developers, lo que nos permitirá, en el futuro, ampliar nuestro personal técnico.
La «esencia» de un juego de 1999
Para mi, este es uno de los motivos principales por lo que me involucro en este desarrollo. Y es que los juegos que existen hoy en día, poco o nada tienen que ver con lo que fueron sus atávicos percursores.
Para lograr mantener esa esencia hemos tomado algunas decisiones tanto a nivel de mecánicas como gráficas.
A nivel mecánica será bastante parecido al juego original, esto es: movimiento por click & point, cámaras estáticas, combate en 3D por turnos, y un gran foco, en el chat.
A nivel gráfico es bastante difícil lograr algo parecido, sobre todo, siendo únicamente dos programadores en el desarrollo del día a día. Por lo que si eres una persona con ganas de colaborar y conocimiento en el área audiovisual, contacto con nosotros en Telegram (@jcastro3d, @Jontxus, @JOTACorso).
Hemos desarrollado una herramienta para simular los fondos pre-renderizados que respeta la esencia de aquella época, a la vez que añade ciertas mejoras gráficas que casan perfectamente con el estilo.
El funcionamiento que hay detrás es el siguiente: Cargamos una imagen pre-renderizada de fondo, encima de esta imagen, cargamos una simplificación del nivel y le añadimos un shader invisible.
Y la gracia de todo, radica en dicho shader. Pese a ser invisible, seguirá ocultando la geometría de otros elementos 3D que estén detrás, a la vez que será capaz de recibir proyecciones de sombras del resto de elementos.
Esto permite un comportamiento visual más rico y cercano a lo que los juegos modernos nos puedan ofrecer hoy en día, a la vez, que mantiene esa esencia de imagen pre-renderizada granulada y antigua que tan difícil es de lograr con 3D en tiempo real.
El vídeo de a continuación fue el primer ejemplo de esta tecnología cuando la usamos, y fue un vídeo que rondó por el canal oficial de Telegram durante un tiempo. Como imaginareis no es un entorno que se vaya a usar en el juego, al igual que el personaje.
Sistema de reglas
Todo juego de rol necesita un sistema de reglas sobre el que sustenta el progreso de los personajes, los combates y el entorno. Por desgracia, La Prisión usaba un sistema de reglas propio del que desconocemos casi por completo cómo funcionaba a nivel interno.
Aunque tenemos información cómo cuantos puntos disponía un crimen al empezar su creación, o la vida total según su constitución, nos faltan muchísimos datos para poder programar un sistema de reglas parecido.
Esto nos ha obligado a buscar una alternativa. En la actualidad estamos debatiendo sobre qué sistema usar, por lo que sería un buen momento para participar en los comentarios y exponer tu opinión al respecto.
Actualmente se esta barajando el sistema de reglas de D&D, en su variante OGL, la mismia que usa Pathfinder y que se trata de Open Source, lo que nos permitiría usarlas sin problemas legales, más la tranquilidad, de ser un sistema con más de 20 años de testeo a sus espaldas.
¿Qué opinas sobre esto? ¿Hay algún ruleset que conozcas y creas que encajaría como anillo al dedo para La Prisión?
Sistema de Persistencia
Existen muchos tipos de MMO, con muchas mecánicas distintas, pero todos ellos comparten el concepto de persistencia. Nuestro pequeño equipo ya tiene las bases para permitir la persistencia en cuentas y personajes (no aun en objetos u otros elementos).
Aunque puede parecer poco, son los primeros pasos sobre la que se sustentaran el resto de sistemas.
Registro de cuenta en nuestra base de datos
Sistema de encriptación para los credenciales del usuario.
Creación de personajes, tanto a nivel de stats como gráfico.
Destruir un personaje (en la cuenta del propietario)
A continuación os dejo un vídeo con el último estado del juego. Tened en cuenta que hablamos de un prototipo, donde buscamos el funcionamiento y dejamos el arte, un poco de lado. Normalmente estas cosas no suelen enseñarse al publico en una empresa de videojuegos, pues es algo demasiado prematuro. Espero que os sea de interés aun así.