Devlog: Cómo hice el simulador de raqueta mata mosquitos

Hace algunos días vi en facebook que hicieron meme con una app que se llama "aire acondicionado" y es que el chiste está en que podés descargarlo y tener "aire acondicionado" en tu celular, obviamente esto no es cierto.

Al mismo tiempo recordé que hace tiempo vi apps como "martillo" que no era nada mas que una imagen de martillo en tu celular, lo chistoso es que aseguraba convertir tu celular en un martillo, ya te imaginarás el resultado, también apps de tipo "descargar memoria RAM" o incluso "app que no hace nada" donde era una app en blanco que literalmente no hacía nada.

Todo esto me llevó a animarme a crear algo parecido, como algunos de los que me conocen saben que mi sentido del humor muchas veces roza lo absurdo, pasé todo el día pensando en qué hacer.

Una app de plagatox fue lo primero que se me vino a la mente, pero yo no quería hacer una simple app de una imagen, yo quería hacer algo que se sienta mas realista y que se pueda manipular, fue entonces charlando con alguien que se me ocurrió hacer la raqueta mata mosquitos, claro, ahí no solo iba a poner una imagen si no también podía hacerlo como simulador, donde agitando el celular podrías matar mosquitos, investigué en la playstore y aunque hay muchas apps que aseguran matar o espantar mosquitos, no había una como la que tenía pensado yo.

Lo siguiente fue pensar en qué tecnología usar, incluso tenía en mente Love2D, ya que no es una app tan complicada de hacer, pero al final me decidí por Godot Engine, ya que próximamente pienso agregarle algún sistema de anuncios alternativo a admob, para ir probando los nuevos plugins de la versión 3.2 que ya se pueden trabajar con empresas como AdColony o MoPub por ejemplo.

Al final del devlog te dejo los enlaces para que puedas ver el código fuente y/o descargar la aplicación.

La app


La app se ve así:

La estructura de los nodos es así:
El nodo principal como lo indica su ícono es un Control, el ColorRect lo agregué para rellenar el color de fondo y la app se pueda ajustar bien a las pantallas de los dispositivos sin que se vea donde concluye la imagen, usé el modo Expand en 2D para esto.

En el nodo CenterContainer/Control coloqué los nodos que corresponden a "los mosquitos", de lo que explicaré mas adelante.

El código base


Como podrás ver usé el Giroscopio para realizar la app, anteriormente había intentado con el acelerómetro, sentí que se me podía complicar un poco por el tema de la gravedad.

get_gyroscope() devuelve un Vector3, por lo que con eso puedo saber en qué dirección se está girando el celular, tomando en cuenta que al hacer el movimiento de la raqueta hay que hacer giros y estos giros pueden ir en cualquier dirección, lo que hice simplemente fue obtener la longitud (length) de éste y a partir de ahí solo hice una validación conforme el resultado para generar aleatoriamente los sonidos, entre mas baja la longitud, menos probable es que se ejecute un sonido.

He utilizado el physics_process y no el _process para conseguir una aleatoriedad mas equilibrada, ya que la velocidad del _process depende del dispositivo y eso causaría que la experiencia sea distinta según el dispositivo.

En la línea 23, el método spartk() es llamado del nodo de los mosquitos que muestro a continuación.

Un total de 25 (por eso el randi()%25) nodos posicionados en distintas zonas de la raqueta para generar un efecto "realista" aunque cuando probé esto en el celular me dí cuenta que nadie lo notaría, pues al usar la raqueta la estás agitando y no se ve claramente el efecto, pero al final la pereza me obligó a dejarlo así.

El nodo del mosquito

En su momento lo nombré Star, porque usé unas texturas de estrellas para generar el efecto de chispa, el animation player es el responsable de hacer que la estrella aparezca y desaparezca como si de una chispa se tratase y usé el AudioStreamPlayer2D para que genere el efecto de posición, ya que este nodo hace que el volumen sea mas alto o mas bajo dependiendo de donde esté colocado el nodo.
El nodo entonces carga las texturas en el ready y aleatoriamente cada vez que es llamado el método spark() cambia de textura y se ejecuta la animación y el audio, adicionalmente le agregué un pitch_scale aleatorio porque usé solo un sonido y alterando un poco el pitch consigo que se sienta mas realista.

En fín, tardé unos 30 minutos en programar la app y me he divertido haciendola, pero mas me divertí cuando la probé por primera vez, y es que creo que conseguí simular muy bien la raqueta.

Link de la app en google play: https://play.google.com/store/apps/details?id=com.damv.raqueta_mata_mosquitos
Link del código fuente en github: https://github.com/DeybisMelendez/raqueta-mata-mosquitos

Comentarios

  1. Gracias hice un fork de tu repositorio,hace días estoy investigando los nodos control y me cuestan bastante,sobre todo para reutilizarlos..saludos

    ResponderBorrar

Publicar un comentario