Fingers vs Zombies, historia de un desarrollo en solitario.

Hola, esta entrada quiere resumir mi experiencia en el reto que me autoimpuse de realizar un juego original para android en el menor tiempo posible.

El objetivo inicial era realizar en una semana pero al final tuve que usar cerca de 3 semanas para acabarlo principalmente debido a cambios que quise introducir en la dificultad, implementacíon de servicios que nunca me había encargado de implementar en el pasado y responsabilidades que me obligaron a dedicar menos tiempo al desarrollo ciertos días.

El juego es del genero casual por el simple hecho de que el objetivo no es otro que aguantar el mayor tiempo posible matando zombies evitando que estos lleguen a la cabaña de los supervivientes de un minimundo lowpoly.

Esta escena representa el concepto visual que elegí para el juego e incluye algunos de los modelos usados:

La primera de las tareas fue el diseño 3D, me puse a modelar todos los elementos que quería usar en el juego, texturizarlos y, en el caso de los zombies, rigear y animar. Elegí una estética Low-poly no solo porque me pierde su atractivo visual si no porque considero que es un estilo más asequible cuando el tiempo es un factor a tener en cuenta. Los zombies están inspirados en el estilo voxel de los zombies del minecraft pero con bordes menos marcados.

Durante el modelado tuve muy en cuenta que la topología de los modelos estuviera optimizada para el juego, nada de tris o ngons y cuide el poly-count de cada modelo dado que quería un juego fluido para teléfonos móviles android.

Hecho el diseño 3D me volvi a Unity donde me puse a trabajar en las lógica del juego, al principio mi inexperiencia me hizo preguntarme si valía la pena mover el planeta en vez de la cámara pero fue una posibilidad que descarte rápido al ver que ello afectaría a los rigidbody que queria usar en los zombies, tuve que idearmelas para sacar un script que me permitiera mover la camara al rededor de todo el mundo simplemente deslizando el dedo sobre la pantalla, el resultado fue este:

Captura desde mi teléfono Android en la fase de desarrollo.

Para programar el movimiento de los zombies por el escenario cree unos spawn points y unas breadcrounts para que estos las siguieran, hay un nº limitado de caminos que pueden escoger y una vez escogen uno lo siguen hasta el final (la cabaña), al testear el juego una vez había implementado esto junto la muerte de los zombies al ser espachurrados me di cuenta de que no me interesaba dar tanta libertad al jugador para mover la cámara al rededor de todo el planeta, la razón era que sería muy sencillo situarse en una posición donde se vieran todos los caminos y acabar con todos los zombies sin esfuerzo. Me dio algo de pena tener que limitar esa característica porque me gustaba el hecho de que se pudiera situar la cámara en cualquier punto, pero una vez probé el juego con esa limitación me di cuenta que era un acierto y el juego volvía a retar al jugador obligándole a moverse constantemente.

Mas adelante, gracias a los consejos de las personas que testearon el juego antes de que fuera publicado, decidí hacer algunos cambios como el que los enemigos fueran tuvieran un hitbox mas grande y el texto en los botones no confundiera al jugador.

El resultado final es el siguiente:

 

Para los anuncios decidí usar Unity Ads y para la tabla de puntuaciones Google Services, implementar estos servicios fue una experiencia enriquecedora de la que pude aprender bastante. Decidí que los anuncios premiaran al jugador cuando pulsaba el botón “extra life” ya que esta demostrado que tienen mejor aceptación entre los usuarios.

Al final el juego salio una vez implemente Unity analytics y decidí que ya era hora de ponerle punto y final a todo el tiempo que dedique a dar forma al proyecto. En el futuro puede que introduzca mas características que quedaron en el tintero, pero eso será otra historia.

Esta experiencia me ha servido para ponerme a prueba y sobre todo para mejorar en mas de un campo. Mi conclusión es que el desarrollo de videojuegos implica a muchos roles y es difícil poder centrarse en todos ellos, sigo enfatizando que mi rol principal esta ligado al diseño y no a la programación y por ello es algo que tratare de trabajar y explotar mas, de todas formas siempre viene bien conocer otros roles, ayuda a facilitar y entender el trabajo que pueden llegar a realizar tus compañeros de equipo y te permite ir mas allá con mayor seguridad.

Deja un comentario

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