Buenas a todos.
En septiembre de 2016 comencé un proyecto individual para crear un Turret Defense para teléfonos móviles. Todos los que había probado dejaban huecos para poner las torres en posiciones específicas y yo quería poder formar caminos como hacía en el starcraft.
Así que me puse manos a la obra para hacer un juego en Unity que no debería llevarme más que unos meses.
Empecé creando el pathfinding. En la empresa en la que trabajo usamos uno llamado Astarpath pero conocía los recursos que usaba y yo quería poder mover a decenas de unidades sin penalización.
Así que creé un mapa de un tamaño que me parecía apropiado para poder usarse en móviles, 11x12 celsas, y le asigné nodos a cada celda.
Cada vez que construyo una torreta recalculo los pesos de los nodos y así cada nodo sabe cuál es su vecino que le acerca más a la meta. Cuando un enemigo llega a un nodo le pregunta al MapController cuál es el siguiente nodo y así consigo un coste lineal. Por supuesto no hay detección de colisiones, pero es que tampoco lo quería.
Intenté aprender a modelar con Blender para crear enemigos low poli, pero me sentía un inútil total. Al final me fui a por una solución más sencilla para mí aunque peor para el rendimiento. Los enemigos están creados con primitivas de unity. Todo son cubos escalados.
El shader que usan es el más básico, un difuse, así pueden batchear bien y me sobran recursos para meterle sombras en tiempo real, que mejora mucho la sensación final.
Las torres por supuesto también están hechas con primitivas, al igual que las partículas.
Todas las definiciones estan en json.
Al principio pensaba meter compras inapp, así que quería tener un servidor para validarlas y poder recuperar cuentas. De modo que opté por programar elen juego como si hiciera llamadas a un server que en realidad estaba en el propio cliente. Así cuando fuera a dar el paso ade un servidor remoto sólo tenía que replicar el comportamiento de esas clases.
Pero al final pasé de crear inapps porque tenía que poner mi dirección real y me iba a retrasar mucho el desarrollo, ya que yo de servers ni idea. Decidí que si me hackeaban pues me daba igual. Aun así seguí programando todo en base a ese fakeserver porque me ayudó a organizarme bastante bien.
Para la interfaz opté por el pluguin de doozyUi, que aunque no sea lo mejor para el rrendimiento me ha ahorrado muchísimo trabajo para las animaciones de menús. Además viene con hottween que es súper útil.
Para las localizaciones hay un plugin que cuesta unos 50€ y te lo resuelve todo, pero por 50€ menos encontré una web (luego pongo la info) que me parseaba las excel de google docs a json, así que lo usé y me programé mi propia utilidad muy sencillita.
Para monetizar la app quería tirar de admob, pero tras publicar ayer una primera versión, he visto que no sirve suficientes vídeos así que trendré que meter también unity ads.
Y bueno, tras muchos retrasos y meses sin trabajar, ayer subí una primera versión a la tienda.
Faltan más niveles.
Más enemigos.
Más torres.
Más logros.
Pulir la interfaz.
Meter música.
Ponerle un icono y capturas de la tienda decentes.
Así que está ahora a mitad de desarrollo para mi gusto, aunque lo tenga ya publicado, sólo quería subirlo ya porque si no acabaría por no subirlo nunca.
Por si queréis probarlo este es el enlace:
https://play.google.com/store/apps/details?id=com.VeryFatHamster.TD
Esta semana tengo las siguientes tareas:
Integrar analíticas de firebase.
Integrar anuncios de unity ads.
Meter al menos 3 niveles más.
Corregir algunas cosillas que me han comentado.
Y meter algunos logros más.
Lo malo es que ando fatal de tiempo, casi tengo sólo el fin de semana para trabajar. A ver qué tal se me da.
Ahora pongo capturas que he llegado a casa y no he encendido ni el pc aún.
Edit:
Menús del juego
Una partida de ejemplo