Cierre kroutworld.cat

El juego que en su momento hice cuando estudiaba en el grado superior de desarrollo de aplicaciones multiplataforma lo he cerrado como se ha podido ver estos meses.

Estoy aun en fase de reestructurar la nueva web, y mis proyectos, también cerré Eveminingsquad ya que no tengo tiempo para jugar al EVE Online, tantos cambios que han ido haciendo no he podido adaptarme, y ni tampoco dedicarle tiempo a mirarmelo con detalle, ni tampoco dinero para pagar todas mis cuentas cada mes.

Lo único que queda activo, y quiero centrarme es en :

  • ttr-invasions una web de herramientas para un servidor privado de un juego (voy muy atrasada en el upgrade que quería hacer, pero ya saldrá poco a poco)
  • Irregular verbs exam: la web de los verbos irregulares la voy a actualizar a una aplicación de Openui5 cuando tenga tiempo y la reabriré con un nuevo diseño
  • Ciudad 404: Como sabeis es mi proyecto mas ambicioso a parte de Azure Guardians, es una ciudad que podeis visitar en Osgrid.org, aun sigo terminando de pensar como irla modelando en cuanto tengo mis ratos libres
  • Azure Guardians: Hay que migrar de Unity a Godot, estaba pagando la tarifa básica para poder tener algo por si el juego escalaba en cualquier momento, y como la quitaron, decidí que lo migraría a Godot, sera muy dificil, pero voy a ponerme a ello en cuanto pueda (necesito documentarme bien antes de ir a toda velocidad migrando codigo, prefabs y demás, no es fácil pero servirá para evitar cosas como ha pasado con Unity, ya que la nueva tarifa básica que han puesto, para mi es imposible de pagar con todo lo que llevo ya que ha pasado de 37€ al mes a 170€)
    El servidor no le afectara, debido a que esta hecho con PHP, por lo que no hay que preocuparse.

Sacare la nueva web cuando haya terminado de poner en orden la web de ciudad 404, y haya avanzado algo de la migración de Azure Guardians o cualquier otro tema, solo darme tiempo.

Nueva web pronto

He tenido unos años algo difíciles por temas personales, y no he podido realizar nada de lo que me propuse en su dia (terminar la web de información de mi ciudad en Opensimulator, mi sitio web de invasiones del toontown rewritten deje a medias la actualización a una que usaba OpenUI5 o las actualizaciones de Azure Guardians).

Luego desde que me operaron, he necesito mucho tiempo (porque no fue nada fácil el postop), he pasado por muchísimo estrés durante ese proceso (que porfin se ha normalizado) y necesitaba bastante tiempo para volverme a poder centrar en mis cosas

Mi proyecto de Azure Guardians no he terminado ninguna de las actualizaciones que tenia a medias, y este año voy por el mismo camino.

Hay fallos de paginas que no se pueden acceder (debido a que actualizaciones que he tenido que hacer deprisa y corriendo del nginx, y dejándolo sin configurar)

Con el nuevo diseño de web, voy a poner todos mis proyectos (ttr-invasions, ciudad404, azure guardians, etc) y los que no se estaban visualizando arreglarlos (como el generador de exámenes de los verbos irregulares que en su momento cree cuando estudiaba en el curso de acceso a grado superior que de eso, ya hace muchísimos años).

También como podéis observar, cerré el foro de mi web (estaba abandonado), a ver si termino de organizarme, y hago el cambio que he comentado.

Azure Guardians – Build 0.1.36

La semana pasada actualice el servidor y el cliente publico de Azure Guardians con las siguientes novedades:

Modificaciones

– Cuando no tienes cartas para robar pierdes la partida
– Agregadas muchas cartas con nuevas mecánicas (de 90 cartas a 197)

Mecanicas

  • Nuevo tipo carta: Venganza – cuando tienes personajes KO (Carta que segun la cantidad de personajes KO, es mucho mas poderosa).
  • Elementos: Haz tu mazo acorde a un elemento y utiliza cartas potentes que se benefician de ese estado alterado asociado al elemento.
  • Revivir personajes: puedes revivir a tu personaje sin utilizar ninguna carta 1 vez por turno, si necesitas revivirlos mas necesitaras utilizar una carta para ello
  • Ataques para support: Ataques que permiten provocar un estado alterado pero con un coste alto de ataque.
  • Aggro: Permite centrar los ataques en un personaje durante 1 turno (Solo utilizable en guardianes)
  • Invencible: Permite tener daño 0 ese turno, pero cuando la usas no puedes utilizar ningún ataque (Solo disponible en guardianes)
  • Extra equipamiento: Permite agregar un ataque adicional a cada personaje, o a 1 solo (depende del tipo de carta)
  • Hechizo de protección de estados alterados: Permite protegerte durante X turnos de un estado alterado (Solo disponible en supports)

Bugfixes

-Arreglado un indicador de daño + o – en la animación del daño
-Arreglado cuando mirabas las cartas en colección, podías mover las cartas, pero salia un error y no te dejaba mover esa carta, estas no se pueden mover, solo visualizar
– Arreglado varios bugs del servidor que hacían cerrar el proceso del servicio de juego.
– Hecho un round() en los ataques para evitar decimales
– Los hechizos de recuperar vida, no resucitan ahora personajes
– Cuando un personaje tenia un estado alterado se podría cambiar por otro, ahora lo tendrá fijo hasta que le desaparezca

Azure Guardians

Como habéis podido observar, cuando se va a la pagina de cardbattle ( el nombre del prototipo del juego que empece a crear en 2018), ya tiene su nombre final: Azure Guardians.

En esta edición del Indie Dev Day se ha podido probar el videojuego, y se podrá probar su reciente alpha1 (se irán sacando correcciones de esta versión) hasta que llegue el momento de la siguiente versión (cuando contenga cambios grandes) y se vuelva a actualizar el server y el cliente del juego.

Si queréis visitar la pagina de juego, es la siguiente: www.azureguardians.com

En unas semanas, se actualizara la web de TecnoMakers (mi web de proyectos personales), para poner el enlace de juego a donde debe ir, y una ficha técnica de juego actualizada, y el foro se quitara los posts de Cardbattle para re-direccionar al foro de Azure Guardians , su web y su Discord.

Backend de Cardbattle: Finalizado

Después de empezar en Noviembre, lo que fue la primera parte del backend, separando login, instancias y conexiones actuales en un único proceso (para poder preparar, todo lo demás).

Una vez separadas, lo siguiente fue crear el respectivo proceso para cada acción, actualmente el Login sigue siendo un solo proceso, pero en un futuro, serán varios. Ya que este, ya esta preparado, igual que el proceso del juego.

El siguiente proceso, las conexiones donde se guardan todos los tokens de las conexiones exitosas al juego, esto contiene los datos de en que instancia de juego están jugando, y cuando el jugador se desconecta, se avisa a este proceso, para que borre los datos que existen.

Y por ultimo, tenemos el proceso de instancias, que digamos, hace de «load balancer» de los procesos, va iniciando procesos a medida que hacen falta, aun no los cierra si no hay actividad, pero eso para el futuro, lo que también hace es ir levantando instancias cuando haga falta, y si una deja de funcionar, se levanta de nuevo, para que ese puerto, vuelva a estar operativo.

Con esto, es todo el sistema para poder, permitir muchas conexiones, sin saturar los procesos de juego principal, aun quedan mejoras, pero ya en otro momento, ahora se puede decir, que si esta «terminado», y puedo seguir con el contenido del juego, que he dejado de lado, durante bastante tiempo, para poder terminar todo esto que he explicado.

Así que, ahora todas las actualizaciones que van a llegar, serán de contenido para finalizar la versión 1.0 de TecnoMakers Cardbattle, la idea es que haya mas de 400 cartas diferentes, mas de 30 personajes y muchas formas de poder crear mazos, con sus tácticas de combate.

Mejoras al backend de TecnoMakers Cardbattle

El mes pasado lo dedique en especial, a hacer algunas mejoras de contenido, y preparar el contenido para el futuro, pero hay algo, que debe terminarse, y eso es el BACKEND, en otras palabras, el software que hace falta, para poder tener el juego online, funcionando sin caídas, escalado horizontal automático pero de procesos en la misma maquina, etc.

Desde que empece el desarrollo del juego, me centre en lo que se conoce como la instancia del juego, que es lo básico para poder entrar, configurar tus mazos, hacer una partida, etc.
A medida, que fue pasando el tiempo, fui investigando sobre lo que se conoce como Multi Instancia, que es para que los MMORPG (Juegos online multijugador) soporten altas cargas, dentro de todo esto, se encuentran varias cosas:

  • Servidores de login
  • Procesos para las instancias de juego/mapas

En Junio del año pasado, comencé a tener el primer esbozo de como quería hacer la infraestructura a nivel de software, sobre noviembre conseguí hacer lo que era, la base de todo esto, separar el proceso de la instancia para jugar, de las demás (login, servidores y sesiones)

Y hasta este mes, no he vuelto a continuar todo lo relacionado con el sistema multi instancia, programe hace semanas, los 3 procesos adicionales mencionados entre paréntesis y he decidido dividir, en unas 3 fases la implementación, ya que es un proceso, muy delicado y que necesita muchas pruebas iniciales para el buen funcionamiento.

Voy a haceros un repaso de las fases de implementación:

Fase 1 (Puesta en marcha básica)

Esta fase consistía en iniciar 4 procesos de manera manual, y mirar si lo que se hizo en su día, la llamada «base» en Noviembre, seguía funcionando igual y sin problemas adicionales.

Imagen de la primera fase, funcionando correctamente

Fue toda una tarde, la cual me encontré con problemas, de como los procesos se comunicaban entre ellos, pero al final pude solucionarlo, porque la idea es tener 2 procesos maestros que reciban mensajes a un puerto interno, y que se hablen entre ellos (server-server), y tener un código de respuesta de servidor, que lo que hiciese es cambiar a la persona que esta jugando al juego, de una instancia a otra, de manera rápida y transparente.

Fase 2 (Mover el buscar rival de instancia al maestro de sesiones)

El siguiente paso, era iniciar una segunda instancia, y tenerlas interconectadas cuando alguien esta buscando un rival para jugar, porque imagínate que las 2 personas que están conectadas, cada una se las envía a una instancia diferente ¿que haces?

El proceso es facil, mover el codigo de buscar rival del nivel de instancia de juego, al maestro de sesiones, por lo que cuando alguien se apunta a buscar rival, la instancia de juego notifica al maestro de sesiones, que esta persona esta buscando a alguien.

Cuando esta empareja rivales para jugar, como tiene todos los puertos de cada instancia, comprueba si están en la misma, en caso afirmativo, manda un mensaje a la instancia para que empiece la partida, pero en caso negativo, se escoge un jugador/a para que sea el anfitrión/a de la partida y se moverá al otro usuario/a a donde esta la anfitrión/a, cuando este/a este conectado/a, y el servidor lo verifique, la partida empezara.
Pero..
Si, hay un pero, imagínate que las 2 instancias están cerca del limite que he quiero poner, como por ejemplo 200 conexiones simultaneas, se buscara la instancia con menos carga, y se mandara ahí a las 2 personas, esto ultimo lo implementare en la Fase 3.

Fase 3 (Automatización)

La ultima fase, la mas importante por la cual se ha hecho todo este proceso es poder ir levantando instancias, o bajándolas en caso que haya mas o menos carga, también incluyendo un control de si la instancia de juego se cierra de manera inesperada por un error en el código de ejecución, poderla levantar de nuevo sin mi intervención.

A parte de este desarrollo, incluiré lo ultimo que mencione en la fase 2, con esto tendré de manera automatizada, el control de carga del juego, pero a nivel de 1 sola maquina, ya que no tengo los recursos necesarios, ni monetarios, para preparar una infraestructura de varios servidores de manera horizontal.

Un ejemplo puede ser este, que es el caso para conectar a alguien, a una instancia de juego.

Modelo del multi instanciado

Espero que os haya gustado, este articulo, a nivel informativo, de todo lo que estoy preparando en el juego, que a nivel visual, no se puede ver, pero existe, actualmente a nivel de procesos dentro del servidor que tengo funcionando el juego.

Mas información: https://www.reddit.com/r/gamedev/comments/64o4bh/can_someone_explain_how_mmo_servers_work/

Primera fase del update de Febrero: Cartas y efectos nuevos

La update de febrero, la voy a dividir en 3 partes, para poder realizar bien la implementación de todas las novedades, y con calma.

Tipos de cartas nuevas

Todas las cartas, tienen usos diferentes, eso es lo que distingue a una carta, cuando se usa, y también están los efectos, que son añadidos al uso, para poder crear combinaciones diferentes.

Estas son las nuevas cartas que tendrán el siguiente uso:

  • Awaken: Esta carta, al usarla el personaje recupera toda su salud, y recibe al instante un 50% mas de vida DEL TOTAL que tiene ahora mismo, aplica un buff de reducción del 25% de daño del total, a parte añade 1 ataque adicional al personaje (si se usa, no se puede utilizar la carta ataque adicional). LIMITADA A 1 POR MAZO Y CADA PERSONAJE tiene su carta, pero solo puedes tener 1 de esta clase
  • Ataque adicional: El personaje al que se utiliza, gana un ataque adicional hasta 4 (no se puede tener mas, por si piensas en recuperarla de las cartas usadas), y reduce el gasto de energía de los ataques en ESE slot abierto, un 30% (No se puede utilizar con un personaje que se ha usado Awaken).
    LIMITADA A 1 POR MAZO Y CADA PERSONAJE tiene su carta, pero solo puedes tener 1 de esta clase
  • Destrucción de mano: Esta carta hace que tu rival descarte de 1 a 3 cartas de su mano, y podrá tener efectos que serán descritos, en el listado de efectos nuevos
  • Bloqueo de mano: Esta carta bloquea al azar una carta o varias, de 1 a 3 turnos.
  • Visualizar mano: Dependiendo del coste de activación, puedes visualizar una carta al azar, o toda la mano.
  • Generar «aggro»: El aggro es conocido en los videojuegos MMORPG sobretodo, por ser el «foco de atención», al que van a atacar todas las personas en la batalla, del bando rival, durante un corto periodo de turno. Esta carta dependiendo de su coste, te convertirá en el blanco durante 1 o 2 turnos, al activarla regeneras el 100% de la vida, pero no puedes atacar con ese personaje mientras dure el efecto.
  • Coste 0: Esta carta de utilidad, te permitirá equipar un ataque sin gastar energía, para activarla, dependerá de condiciones nuevas.
  • Bloquear arma: Bloquearas el slot del ataque de un personaje rival, de 1 a 3 turnos.
  • Robar arma: Robaras el arma de tu rival (menos ataques especiales de personajes) y lo recibirás en un slot que tengas, en caso que este lleno, se puede perder el ataque, o reemplazar uno que tengas. El gasto sera el 50% en este caso, del ataque robado. LIMITADA A 1 POR MAZO.

Condiciones de uso/activación

Las condiciones de activación actualmente solo estaban basados, en el coste de energía, siendo muy repetitivo, las condiciones de las cartas, a partir de esta actualización, habrán nuevas condiciones para su uso.

Todas las formas mencionadas a continuación, pueden combinarse para activar una carta.

Cambios en las cartas de uso/ataques

  • Coste de energía: Se mantiene tal y como estaba desde el principio del juego
  • Coste por descarte: Para activarla, tienes que descartar X carta(s) de tu mano
  • Coste por retirar cartas usadas: Deberás eliminar del listado de cartas que has utilizado, X carta(s) para proceder a activarla.
  • Requisito de personaje/clase: Se mantiene tal y como estaba al principio del juego, haciendo que esa carta solo se pueda activar en ese personaje o clase (tank, asesino/a, mago/a, support)
  • Sacrificio de recarga energía: Perderás de 1 a 2 turnos, donde no podrás recargar energía.
  • Sacrificio de bloqueo de slot: Perderás temporalmente ese slot de atk/hechizo, durante 2 a 3 turnos, no se pierde lo que tuvieses ahí equipado.

Efectos nuevos

Se añadirán los siguientes efectos, al utilizar un ataque, que los contenga:

  • Devolver trampa a la mano: La trampa no se activa, y es devuelta a la mano del rival.
  • Bloquear carta de la mano: Bloqueas una carta al azar de la mano de tu rival, de 1 a 2 turnos.
  • Auto rank-up: cada turno, sube de rango, si alcanza el rango 5 no pueden ser destruidas ni desequipadas
  • Power-Rank: Cada turno hasta un máximo de 5, sube un 10% el daño base al arma y si es reemplazada por otra carta del mismo tipo de ataque y es de rango mayor, obtiene como base un 50% del daño base que se sumara al daño de la carta, ejemplo: rango 1 -> 20 de atk, obtendras 10 de ataque adicional al daño de la carta

Cambios en efectos de activación de una carta trampa

Actualmente, TODAS las cartas trampa, se activan cuando se realiza un ataque, a partir de ahora el juego te preguntara, si quieres activarla o no, cuando recibes un ataque.

El tiempo limite de respuesta del servidor, serán 10s, en caso negativo de no responder, no se activara. Cuando salga este mensaje, la persona que tiene el turno, el tiempo que tiene en su turno, se congelara hasta que no se vaya el mensaje.

A parte este pequeño cambio, también se insertaran nuevos métodos de activación, para que haya mas variedad:

  • Al equipar un ataque
  • Al usar una carta
  • Al utilizar un hechizo
  • Activación en el turno del rival (solo en draw phase, antes de que robe carta tu rival).

Y también voy a incorporar efectos de cartas, que pueden ser infinitos, que no se vayan a no ser, que se elimine esa carta.
En estos efectos infinitos, un ejemplo puede ser, bloquear el slot de un hechizo o ataque.

Y esto es toda la primera parte de la actualización, que voy a ver si termino en todo febrero.

Futuro de los antiguos juegos

Los antiguos juegos que estaban anunciados, que un día volverán, de momento los quitare, y si puedo, los volveré a implementar, pero totalmente diferente a como se conocían en aquel momento.

El único juego, que si voy a dar información puntual es sobre Night Chase Killing, aun estoy pensándome en cambiar el nombre, pero ya lo decidire, aquel juego que empece a finales de 2010, de vándalos y peleas simuladas, este se convertirá en un juego en tiempo real, o peleas contra NPC, todas por turnos, equipos de 3 personajes donde podrás reclutar personajes de Ciudad404, hacer equipo y luchar contra otros equipos.

El point&click existente, seguirá, ya que el formato de visualizar la ciudad, sera la clave también, para explorar las partes de la ciudad que estén disponibles.

El Modo de combate sera 3vs3 como comente, y a cada «server tick», se ira recargando energía del personaje, cuando este llegue, tendrá un turno de 1min para realizar alguna acción, como atacar o otra acción, utilizar un objeto del inventario, y así sucesivamente, la obtención de los turnos sera mediante la estadística: «Velocidad».

Las estadísticas de los personajes que tendrán, son las siguientes:
Rango: del 1 al 5, aumenta las estadísticas base, y proporciona habilidades especiales nuevas.
ATK: Aumenta el daño base del arma
Def: Aumenta la cantidad de DEF que proporcione su equipamiento (Chaleco, casco, pantalones y botas)
Resistencia: Mejora la vida total
Velocidad: Recuperación basada en «ticks» hasta el proximo ataque. El tiempo de espera base para poder atacar por personajes variara, algunos desde los 10s otros hasta los 15 o 20s.
% Crit: Probabilidad de hacer un daño critico
Stamina: Posibilidad de ejecutar acciones tácticas (esquivar, cambiar posición, skills de los personajes)

Ya proporcionare mas información, una vez consiga terminar, cosas pendientes del núcleo del juego de Cardbattle.

Un paso adelante con la Multi-instancia

El fin de semana pasado aproveche para realizar cambios en como funciona actualmente TecnoMakers cardbattle.

 

El cambio principal ha sido en la adaptación de como conecto a los jugadores/as en el juego, al principio del desarrollo funcionaba de la siguiente manera:

– La persona se conectaba directamente a una instancia, por lo que si se cae la instancia se pierde la conexión.

Con el nuevo modelo multi instancia, todo esto queda en el pasado, y permite mucha mas capacidad de personas online,

 

Así es como funciona actualmente:

Existe actualmente 1 servicio de login, donde te conectas y verifica tus datos, y de aquí se te pasa a una instancia que tenga menos carga.

Cuando te va a traspasar a otra instancia verifica unos datos, y lo que hace es cerrar la conexión del websocket del servicio, y te conecta de nuevo pero a la instancia de juego.

Así es como ha quedado después de este fin de semana, pero aun queda perfeccionar el sistema, y para evitar que una instancia crashee y haya problemas, la manera de solucionar esto, es con 2 servicios internos para ello, este sera el siguiente paso:

Controlador de sesiones: donde si te caes, y el server de login ha dejado de funcionar, esta sera la base de datos local donde se guardara, ejemplo practico: la instancia en la que estas crashea por un error, el cliente verificara una de las instancias de login, y te conectara hasta una que funcione en caso que hayan crasheado, entonces esta si no tiene tus datos, la verificara y te enviara a alguna instancia, si todas fallan, en el peor de los casos te desconectara del juego porque todas las instancias estarán caídas.

Controlador de instancias: Sera un servicio interno que las demás instancias contactaran para obtener un ID, registrar el puerto y iniciarse, y también el servidor de login, para buscar alguna a la que enviar a quien se conecte a jugar, y también levantar instancias si hace falta, o servicios de login.

El cliente para verificar que instancias hay levantadas, hará una petición a una API para obtener el listado de instancias de login conectadas.

 

Una vez termine eso, el juego quedara mas estable, ahora mismo esta puesto solo 1 instancia, para terminar de arreglar cosas del sistema, pero una vez este programado lo mencionado anteriormente, estará listo para poder auto escalar automáticamente.

TecnoMakers cardbattle en el IndieDevDay

El dia 27 de octubre presentare una nueva demo de Cardbattle, la beta4, con muchisimas mas cartas, mas contenido y muchisimas mejoras de cuando enseñe la alpha2 en la Women Make games de Madrid.

Las mejoras que podras observar son:
– cambios visuales en los botones de ataque ( para ayudar a saber si has atacado o no )
– cartas trampa
– diferencias en las cartas de uso, ataque y trampa ( diferente color)
– 9 personajes diferentes para jugar
– Cerca de 100 cartas para poder crear tu mazo.

 

Podeis visitar los datos del evento , y coger tu entrada en: http://www.indiedevday.es/

 

Durante ese dia, si quieres, podras retarme, si me ganas y tienes una cuenta en mi juego, conseguiras un personaje especial, solo de evento.

WordPress Themes