[Devlog] Gunny

Yerboth

Introducción

Como no es un proyecto muy serio el devlog tampoco va a serlo :) Soy bastante noob todavía tanto con Unity como con el pixelart y es mi primer proyecto que quiero terminar y no es solo por aprender (que también).

Voy a ir poniendo el proceso que he seguido (pronto veréis que empiezo la casa por el tejado) hasta cómo está hoy y luego iré poniendo los avances. Se viene tochopost sorry, luego iré actualizando más de a poco.

Mecánica principal

Lo primero que se me ocurrió fue la mecánica: un plataformas en el que no puedes saltar ni correr, la única forma de moverse es disparando con la fuerza del retroceso. Si disparas hacia abajo hace un efecto de jetpack que te permite volar.
Solo con esta idea me fui a aseprite y se me ocurrió que un buen arma para la mecánica sería una minigun, así que pillé unas referencias y me salió esto:

El resultado me gustó aunque es un sprite bastante grande y detallado, lo que me obliga a que todo lo demás también lo sea. Y en vez de intentar reducirlo y pintarlo con menos resolución pensé "bueno, no hay prisa" y seguí.

Con el doble delineado se quedaba un aspecto cartoon que me moló así que seguí a partir de ahí y dibujé un conejo que será el player. Tuve que reducir un poco la longitud del arma y quedó así, en el futuro quizás pruebo a ponerle alguna mochila.

Con esto me fuí a Unity y empecé a programar toda la mecánica del disparo. Los proyectiles salen con un sistema de partículas y tienen otro con "chispas" cuando impacta, tengo pendiente hacer un tercer sistema de partículas que vaya soltando los casquillos de las balas. Tanto la fuerza como la cantidad de proyectiles empieza un poco más pequeña y va aumentando.

Además la fuerza es mayor si disparas hacia abajo para facilitar el vuelo. Esto intenté hacerlo con ángulos pero después de perder unas horas no conseguía que funcionara bien así que simplemente tiene en cuenta si el cursor está una distancia por debajo del personaje. Es más cutre pero el resultado me sirve xD

Programé un script para la cámara (que luego cambiaré por Cinemachine porque no conocía su existencia xD) y esto es lo que hay:

Enemigos y trampas

Después estuve pensando y pintando algunos enemigos y trampas. La idea es que el escenario sea tipo laboratorio y los enemigos mecánicos. Estoy intentando que todos los enemigos le den valor a la mecánica de movimiento.

Una torreta que dispara misiles guiados.

Un dron kamikaze que se cabrea y se lanza hacia ti.

Y un láser que no podía faltar.

Otro que tengo en mente es un "totem" que dé escudo a el resto de enemigos cercanos y que te obligue a romperlo antes.
Y de momento ya, otras cosas que tengo en mente probar son cintas transportadoras y charcos de ácido.

Escenario

Y poco más, para empezar a programar los enemigos no quería hacerlo sobre sprites planos de Unity así que llevo un par de tardes haciendo el tileset. Las tonalidades de todo pueden cambiar según lo vea en movimiento, pero estoy usando una paleta fija de 64 colores y no me salgo de ahí, porque el tema de combinar bien los colores me parece complicado todavía xD

Así están de momento, quiero hacer también algunos detalles como tubos de ensayo, cajas, bidones...

Plataformas:

Fondo:

PD: Me he inspirado fuertemente en este xD

Ideas para el futuro

Todavía no sé como va a ser el resto de la jugabilidad, mi idea es programar lo que tengo e ir probando como es más divertido. Creo qué iré alternando tramos verticales y horizontales, pero no sé si en niveles largos con checkpoints o más cortos y rápidos.

A la mecánica de disparar quiero añadirle alguna penalización, ya sea límite de balas, que se caliente si disparas muy seguido o ambas.

Las próximas tareas son animar al player y los enemigos y programar los enemigos en Unity. Voy alternando programar y pintar según me va apeteciendo. Claramente va ganando pintar xD
Perdón por el tocho, según vaya haciendo cosas os las enseño, aunque ahora en verano tengo un poco de vida social y no le estoy dando mucha caña todavía. Por supuesto escucho cualquier feedback que me queráis dar :)

5
carra

Ya has creado el Devlog! :smiley:

Me gusta bastante tu estilo en pixel art. Creo que puede quedar un juego resultón. El personaje me recuerda a Jazz Jackrabbit jejeje. Aunque sus juegos eran más bien inspirados en los Sonic.

1
B

Yo directamente le pondría un jetpac con teclas WASD y el arma solo para disparar. Con enemigos creo que sería incómodo moverse y matarlos a la vez. Muy chulos los gráficos. Elimina el cursor del ratón y pon un sprite de punto de mira que gire alrededor del personaje con un radio fijo.

2 respuestas
Yerboth

#3 ya, lo que comentas lo tengo como segunda opción si no consigo que sea divertido como lo tengo, pero quiero intentarlo por lo menos xD

Ya hay un sprite para la mirilla pero lo hice muy enano de prueba xD lo de que gire a un radio fijo no lo había pensado pero me gusta la idea

everedx

Me gusta mucho el arte en general, y como se siente el juego en si... Creo que la rafaga de disparos esta bien lograda.

Igual como dice #3 , seria algo incomodo el matar enemigos al estar continuamente propulsado por los disparos, pero no lo se, tendria que probar para darte mejor feedback.

Buen curro!

1
Yerboth

Poco a poco pero voy avanzando. Ya tengo la animación del kamikaze:

Y ya está programado: patrulla y detecta al jugador a cierta distancia, si lo detecta hace la animación de enfadarse y se lanza a por el hasta explotar contra lo primero que encuentre.

Ya va pareciendo un juego y todo xD

Todavía tengo que cambiar el script de la cámara que tengo por el Cinemachine y le meteré una pequeña sacudida cuando explote. La explosión me ha quedado bastante grande y puede que la reduzca un poco. También tengo que hacerle el sistema de vida que compartirá con el resto de enemigos, aunque este va a ser más fácil esquivarlo que matarlo :)

4
Yerboth

Visualmente no cambia mucho pero lleva cosillas nuevas. Ya tengo Cinemachine funcionando y las explosiones hacen temblar la pantalla. Los enemigos ya se pueden matar y el player también. He hecho que deje un cadaver rebotando como en Spelunky que me hacía mucha gracia.

Ya que tengo la muerte voy a hacer una pantalla de muerte que te deje reiniciar el nivel. No es que me apetezca en absoluto pero así voy quitándome tareas tediosas.
Lo siguiente será animar y programar el siguiente enemigo, aunque todavía tengo pendiente animar al player pero creo que lo haré por capas y tengo que investigar eso xD

1
B

Te está quedando genial, se sienten muy bien.
Yo añadiría esto para que se sienta mejor:

  • Dibujar impactos de las balas tanto en enemigos como paredes, eso con una animación de 3-4 sprites pequeños y sencillos lo tienes.
  • Meterle más feedback a los impactos que recibe el enemigo, que le empujen levemente en la dirección de las balas, que lo agite.
  • Esto otro pruébalo porque no siempre queda bien, métele hitstop cuando el enemigo recibe un balazo. Es congelar el juego milésimas de segundo. Bien hecho da muy buenas sensaciones de impactos.

Para grabar gameplay directamente desde Unity, únicamente de la ventana "Game", yo utilizo este paquete de Unity, lo puedes instalar desde el gestor de paquetes http://docs.unity3d.com/Packages/com.unity.recorder@3.0/manual/index.html

1 1 respuesta
Yerboth

#8 Gracias!

El efecto de las balas al impactar está puesto, es un sistema de partículas como subemitter del de las balas que suelta como unas chispas. Es verdad que en los vídeos no se aprecia pero creo que es por la calidad, aunque probaré a hacerlo un poco más grande.

Buscaré la forma de agitarlos un poco con los impactos sin que me joda la animación ni la velocidad con la que se lanza, no tengo muy claro como hacerlo.

Lo del hitstop lo pensé pero al ser tantos impactos tan rápido no sé si quedará bien, igual lo puedo poner para que lo haga uno de cada X.

Gracias por la extensión, luego la pruebo.

Sabéis algún sitio donde pueda subir clips cortos con algo más de calidad? Estoy usando https://streamable.com/ pero se ven regular

8 días después
Yerboth

He estado haciendo cosas para darle variedad al plataformeo: plataformas normales, temporales, cinta transportadora y tubos de viento.
He modificado los drones para que también puedan patrullar en vertical. Y también un menú para reiniciar cuando te mueres con varias frases chorra random xD

De paso he aprovechado para retocar el tileset de los ladrillos que quedaba con demasiado ruido, así está más limpio y me gusta bastante más.

2 1 respuesta
B

#10 Te está quedando genial, veo detalles muy pro.
La cámara la tienes que tocar, en general siempre debería verse más nivel en el lado hacia el que mira el player.

2 1 respuesta
Yerboth

#11 gracias! La cámara es la que tenía para avanzar hacia arriba, según el tramo la iré cambiando, aún así es complicado porque para moverte siempre tienes que ver por debajo. Tengo pendiente lo que me dijiste de que la mira se mueva en un radio fijo, creo que puede ayudarme bastante con el tema de la cámara.

7 días después
Yerboth

Mini update porque he estado fuera el finde y no he avanzado mucho pero ya he terminado el último elemento de escenario que tenía pensado: piscinas de ácido.

Todo ha sido super fácil menos la salpicadura de las balas ya que no había manera de que funcionara, al final probando y alternando entre 3D he visto que es por un bug de Unity, cuando el collider es 2D no puedes marcar el Is Trigger porque no lo detecta, mientras que en 3D sí, al final he hecho una ñapa creando una capa de colisiones solo para esto. No sé si está solucionado ya pero paso de cambiar de versión por si se me rompe otra cosa xD

Como veis estoy abusando bastante de las partículas pero me solucionan bastante la vida, además las estoy poniendo todas como sprites en vez de material de partículas para no romper la estética cartoon y de momento me gusta el resultado. Aunque todavía me queda bastante ya vislumbro el final xD

Siguiente paso animar y programar la torreta y el laser.

3 1 respuesta
carra

Veo que estás en la parte de programar objetos tipo mecanismos y demás. Suele ser de las que más mola hacer :grin:

1 1 respuesta
Yerboth

#14 yo me lo estoy pasando teta con todo la verdad, supongo que por ser el primero, luego habrán cosas que me darán más pereza. Eso sí para cualquier tontería me tengo que chupar la API, mirar videos si no consigo lo que quiero etc. Pero es muy entretenido, me ha pillado en una época que no me engancha ningún juego y me está salvando las tardes xD

AzuRe

#13 Justo el otro día estuve probando el collider 2d y tuve varios problemas pero si que me dejó ponerle el isTrigger. A mi no me iba porque escribí mal el argumento y el método de ontriggerenter(sin el 2D)

1 respuesta
Yerboth

#16 es que no me explique bien, el fallo del trigger es para las colisiones de las partículas, no las colisiones entre colliders normalmes

pirri1721

Hostias, menuda preciosidad!
Los gráficos son una pasada aunque también te diría que demasiado buenos para lo que luego se ven, acerca esa cámara si quieres dar tanto detalle, aunque no se si el juego pretende ser muy fast peaced
Para ser tu primer proyecto es super potable ya, mucho ánimo que entiendo que te estás metiendo un curro de la hostia
Si tienes alguna duda coméntalo y a ver si se te puede echar un cable

1 1 respuesta
Yerboth

#18 Gracias! tengo serias dudas con la cámara la verdad, si la acerco mucho se ve más bonito pero la idea es que sea más bien rápido y quiero que enfoque a donde va el player pero a la vez necesito siempre hueco debajo para que sea cómodo disparar durante el vuelo...

Por otro lado la cámara pixel perfect no me termina de funcionar, si te fijas cuando el arma no está recta se ensucia bastante, mientras que en el modo edición se ve perfecta. Iré jugando con la resolución y la cámara hasta que consiga algo decente pero me está dando bastantes quebraderos de cabeza xD
Tampoco sé si el pixel per units influye, le tengo puesto 50 porque los tiles son de 50x50 que es lo que he visto en todos sitios.

Me queda programar 2 enemigos y preparo una demo para que me deis un poco de feedback.

1 respuesta
pirri1721

#19 Pues no te voy a saber decir de pixel porque nunca he trabajado con ello, pero voy a ver si te trae a un experto en ello

Con lo de la cámara, tampoco te se decir en profundidad porque cinemachine es un mar, pero visto que ya lo tienes puesto, es muy potente, seguramente puedas hacerla suficientemente dinámica para poder acercarla cuando sea posible

Mucho ánimo!

Yerboth

Un pasito más, ya tengo el laser animado:

Y funcionando. Lanza un Rayast y pinta un LineRenderer que he animado con un script que va cambiando la textura. Tiene un sistema de partículas en el inicio y otro donde impacta. Tiene 3 contadores para el tiempo que tarda en encenderse la primera vez, el que está encendido y el que está apagado. Si lo tocas te mata y además empuja el cadaver porque... es más gracioso xD

Además lo he probado en las 4 direcciones y va perfecto, lo cual no me esperaba y significa que ya me voy entendiendo mejor con los vectores :)

1
Yerboth

Ya he programado que el arma se caliente cuando la disparas durante X segundos seguidos y hay que esperar que se enfríe. Lo he implementado junto con la animación del arma y creo que ha quedado bien. Aunque también llevará sonidos creo que ha quedado un buen feedback visual para entender qué pasa y cuando puedes volver a disparar, ¿le pondríais algo más?

1 1 respuesta
AzuRe

#22 ¿Y si el color de calentamiento fuese un poco rojo?
Por cierto, ¿los casquillos que saltan y se quedan en el suelo son las partículas de unity? quedan bien resultonas xD

3 respuestas
Yerboth

#23 ponerlo rojo fue lo primero que probé con una máscara de Sprite controlada por código pero no sé por qué no terminaba de quedar bien, creo que con el delineado negro se quedaba demasiado oscuro, luego probaré a hacerlo desde el animator con una textura más pequeña que no pille las líneas a ver qué tal.

Si, los casquillos son partículas con gravedad y rotation over lifetime, tardé 2 minutos en montarlo y se queda bastante majo 😅

carra

#23 Yo también creo que debería ser algo que se viera en el propio arma o personaje, y no donde apuntas. Puede ser un cambio de color, o un segundo sprite que haga de contorno, por ejemplo.

Y sí, lo de los casquillos queda muy bien :thumbsup:

1 respuesta
Yerboth

#23 #25 Os he hecho caso y le he puesto una transición a rojo en el cañón. Esta vez he creado directamente el sprite con transparencia y lo voy haciendo visible según se va calentando, ha quedado mejor que en la otra prueba que hice.
Cuando anime el personaje también haré que ponga alguna cara en plan "ooops" aunque eso será más sutil.

2 2 respuestas
carra

#26 Está bien, yo creo que entre el rojo y el humo se aprecia bien. Además se pone el prohibido en el cursor :thumbsup:

1
B

#26 Te está quedando un feel de personaje de PM, si lo acompañas con un buen sonido y vibración del mando y tal ya la leche.
Una cosita, el retroceso se siente muy continuo, muy lineal, prueba a meterle "empujones" de retroceso más evidentes por cada bala, incluso con un un sprite distinto de sacudida, tendrías que hacer solo 2, uno izda y otro dcha. Esto creo que haría que el arma se sienta más poderosa y más arma, con el retroceso continuo de ahora creo que se siente un poco como si llevase una manguera echando agua, no sé si me explico :slight_smile:

1 respuesta
Yerboth

#28 entiendo lo que quieres decir y me parece buena idea, pero así de primeras no tendría ni idea de cómo implementarlo. Las balas son un sistema de partículas y no sé identificar cuando sale cada una. Supongo que podría leer la emisión por segundo y hacer algo con eso, lo investigaré xD

Lo de los sprites no lo he entendido.

Sobre cómo va ayer terminé la primera torreta y me falta la segunda, cuando lo tenga haré las transiciones entre escenas para preparar una demo básica.

1 respuesta
B

#29 No tienes que saber cuando sale cada casquillo, solo cuando sale cada bala, sale bala ---> provocas retroceso. Lo de los sprites es que pongas un frame en el que el sprite sea el conejo con una postura de sacudida.

1 respuesta

Usuarios habituales