Reescribiendo el código para la versión 4.0


Hola!

El día de hoy quería contarte sobre la odisea de reescribir todo el código de My Tomatoes para la versión 4.0.  Seguro te estarás pensando Ragthor ¿por que carajos querrías reescribir todo el código de un juego en vez de hacer una parte 2 y listo? y la respuesta es bastante sencilla: Quiero a mis usuarios y les debo contenido.

Con esa base en mente, fue que inicie la odisea de arreglar bugs y demás. Originalmente pensaba reescribir un 20% para poder agregar armas de manera más sencilla, luego fue el 60% y ahora es un 100%. La actualización se me esta saliendo de las manos pero veo la luz al final del camino y quiero compartir contigo un poco del proceso que hice para lograr esto.


Hace aproximadamente un mes tuve una entrevista de trabajo y me preguntaron sobre "Encapsulamiento"... y yo dije "ke" y si, es que no sabia muy bien a que se refería ese termino y es por eso que luego de terminar la charla, me puse a investigar y me di cuenta que formaba parte de algo que había escuchado pero no investigado, los principios SOLID. Ahora bien, seguramente te preguntaras que es solid y deja que responda de manera muy breve a tu pregunta. Son las siglas de Single responsability, Open-Closed, Liskov substitution, Interface segregation y Dependency inversion. Se trata de cinco principios de la programación orientada a objetos, el cual acuño Robert C. Martin y que gracias a esto tendremos un código más limpio y que podrá ir escalando con el tiempo. Te invito a que investigues sobre este tema ya que es muy interesante y si eres desarrollador hará que tus proyectos vivan por más tiempo.

Pues bien, investigando esto me di cuenta que mi proyecto no respetaba ninguno de estos principios y quería arreglarlo, se que podría haber iniciado con una parte 2 pero tengo usuarios que tienen el juego instalado y quería darles actualizaciones con mucho más contenido.


En primer lugar quiero compartir contigo un devlog donde muestro partículas en las que trabaje para que el juego se sienta con más vida:



Uno de mis objetivos era agregar armas pero era demasiado difícil, ya que todo el código del jugador lo tenia en un solo script y esto es muy, MUY malo. Aquí te comparto un poco del código original que se encuentra hasta la versión 3.85:


En resumen lo que estaba haciendo es que al disparar, si tus balas eran mayor a cero, si ya se había pasado el tiempo de espera y si además tu arma no era la pica, entonces ahí ibas a reproducir un sonido que siempre era el mismo para todas las armas, ibas a invocar una bala en tu posición, ibas a restar 1 a las balas y luego reproducías la animación del arma. Pero claro, cuando quería usar la pica debía copiar y pegar todo el código y luego modificar ahí valores. ¿Qué pasa? que si quería agregar más armas, debía copiar y pegar aun más código y esto provocaba bugs y muchos bajones de FPS.

Ahora quiero compartir el código de la versión 4.0 que esta por salir, antes que nada quiero aclararte que aun estoy trabajando y es posible que cambie en un futuro. Realmente no se si estoy aplicando del todo bien los principios SOLID pero sinceramente noto una gran mejoría.



Si bien es más código, esto me da muchas ventajas. Ahora el arma es un objeto que tiene el jugador y este es scriptable por lo que para agregar un arma, simplemente hago clic derecho en mi carpeta de Assets -> My Tomatoes -> New Weapon y cambiando valores ya tengo una nueva, así puedo poner todas las que quiera en pocos clics y sin modificar el código.



Y eso no es lo mejor, ahora cada arma puede tener diferentes valores, mientras que antes todas tenían lo mismo:

  • Daño a los enemigos.
  • Cuantas balas va a gastar por disparo (Una pistola gasta 1 pero una escopeta 2).
  • Tiempo de espera antes de disparar nuevamente.
  • Sonido propio de disparo.
  • Animaciones propias.

En el futuro puede que se agreguen más funciones. Además de esto, ahora el disparo no es una bala que aparece y va en una dirección, si no que usa el mismo estilo de disparo que Doom, crea un rayo invisible que al chocar contra un objeto verifica su ID y si es un enemigo le causa daño. Esto sirve porque ahora también existen barriles entonces si le disparas a un objeto que tiene el ID "Barrel" veras unas partículas diferentes y pueden pasar otras cosas.


Y bueno quiero dejar este post por aquí para que no se vuelva tan largo. Si te gustaría ver más contenido de la actualización como los nuevos enemigos o la manera diferente de crear mapas, o incluso si tienes una sugerencia puedes comentarlo aquí debajo.

Te mando un abrazo enorme y gracias por jugar.


- Ragthor

Files

My_Tomatoes_Beta.zip 24 MB
Jul 30, 2021

Get My Tomatoes

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.