Novedades
¡Saludos prisioneros!
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)
Otra caracterí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:
//<class> <func_name> [<(Type)param>]
Ejemplos:
//cursor setcursor (Carcel.UI.Cursor+ECursors)MoveTo
//roommanager loadroom (System.String)CorridorL_Auto_Room
Puertas
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.
Un saludo a todos!
El nuevo equipo de La Prisión.