Desarrollando un videogame: revision 22

Limbo

En búsqueda del balance, es necesario darle al usuario la chance de salir sin perder más dinero del que desea perder. Creo que en especial, aplica al usuario que pierde, dado que el que viene ganando y sigue ganando dinero, no posee la misma necesidad de abordar una salida, como el que viene perdiendo.


Transcripción:

Una de las cosas que hay que hacer para llegar a donde queremos llegar, es hacer que el player clickee en respawn o en cancel, previo a respawnear…

Es decir, que pueda elegir lo que hacer después de perder. El problema acá es que en lo que refiere al player, Game posee dos condiciones: hay player o no hay player.

Si no hay player, no puede ver las balas que se aproximan a él, ni las balas que hay cerca de él, ni los powerups cerca de él, o los demás players, porque, incluso haciendo un bypass de las funciones, el player no dispone de posición ni nada de manera que me es imposible clavarlo.

Si hay player, por lo general, era una unidad y ya… osea, no hay diseñada, forma alguna donde el player no pueda moverse, no sea visible, no hay modo alguno para que el usuario pueda ver, sin presencia.



Opción inválida: desconexión:

Una opción, que es la primera que abordé, es sacarle la presencia al player, osea, desenchufarlo, hacer una desconexión.

El problema acá es, más bien… los problemas acá, son varios, empezando porque si el player quiere hacer un respawn, debería de crear una nueva conexión, y en segundo lugar, la información que va y viene desde el player va hacia la nada, y el browser queda esperando información la cual no va a llegar nunca porque la conexión al sock fue eliminada.


Opción válida:

Lo que diseñamos, del drone, para que el usuario pueda ver cuando se queda con poco dinero, corresponden a funciones de la misma función respawn.

Es quizás lo más cercano a lo que habría que hacer. El problema con eso, es que apenas lo liquidas aparecería un drone donde había una unidad…

Lo que buscamos acá es que si la “vida/energia” es inferior o igual a 0, sea una sombra… una vara clavada en el piso, invisible, imposible de moverse quizás… esperando que el usuario seleccione si quiere respawnear o no.

Si el usuario no quiere respawnear, habría que reenviarlo a la selección de servidores, que debería de verse en el menú principal.

Las imagenes que ponemos cuando el usuario pierde, la calabera, habría que dividirla en 2. Haciendo que corra la primera función y que luego el usuario seleccione si quiere volver o salir.

Si quiere volver, ahí corremos respawn, respawn mismo revisa el dinero del usuario y le daría una nueva unidad o un drone, dependiendo del dinero disponible del usuario.

Si quiere salir, ahí si puedo correr la función de desconexión y llevarlo de nuevo al main menu. Eso, debería de verse… más o menos así:

La propiedad player.is_drone deberia de remplazarse por algo así como player.class de forma global, a fin de hacer posible incorporar diversas clases de player, los cuales conllevarían propiedades no siempre iguales.

Con algunas modificaciones a fin de que no sea visible para los demás, y modificando la clase player, porque cuando creamos los drones, esperabamos un boolean (es drone, si o no), sin embargo, ahora debería de haber, al menos 3 clases:

  • panzer
  • drone
  • shadow

Hecho eso, player quedaría en shadow esperando que decida si quiere o no respawnear y un clock de 5′ para que reaparezca como un panzer o un drone.

En lo gráfico, eso debería de verse así…

 

Donde esa escena debería de quedar esperando que el player defina si quiere seguir o no, unos 5 segundos y respawnearlo solo en 5 segundos o bien, 8 segundos si no hace nada.

Tenerlo en espera ahí, es un sock más, recibiendo y enviando información que no hace nada…

El foco debería de sacarse del canvas, y llevarlo hacia el menú superior, incluso quizás el menú ese debería de ser un canvas full screaneado.


Yeap, eso debería de funcionar. Para sumarle esencia a eso, se podría mandar información al usuario para que cambie la música de fondo y darle un poco más de drama…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *