[Devlog] Match3 de velocidad (Nombre pendiente)

Mandarino

Juego

Un juego de puzzles Match3 en el que el objetivo es emparejar gemas lo más rápido posible y hacer el combo más alto posible. No es un juego en el que tienes X movimientos como máximo si no que irá por tiempo.

Desarrollo

Decidí a programar mi primer videojuego a la vez que aprendo Unity y C#. Tengo 13 años de experiencia profesional básicamente programando en Python y nada más.

El objetivo actual es desarrollar un tablero y mecánicas que funcionen a la perfección y que de sensación de satisfacción al jugador. Una vez este hecho, pensaré más ideas que vayan alrededor de éste. La idea principal es poner algo estilo rogue-like de ir subiendo niveles y desbloquear nuevas habilidades (poder mover en diagonal, tiempo extra para combo, etc...).

Tanto la programación como los gráficos esta hecho todo por mi. Tengo tarea pendiente ver que hacer con el sonido, seguramente pille algunos asset free temporalmente y luego ya veré que hacer.

Mi objetivo final es hacer un juego suficientemente bueno como para ponerlo en Steam.

Características

  • 2D
  • Match3
  • Juego para PC
  • Unity
  • Rogue-like (runs con upgrades random)

Estado actual

Desarrollo enfocado a las mecanicas del tablero (fisicas/animaciones/controles).

Jastro

No soy super fan de los matchs 3, pero me llama la atencion de roguelike?

Tocara ver como lo implementaras y como se ve ;P

Gracias por presentar tu juego :D

1 1 respuesta
Kike_Knoxvil

Pregunta: Para un juego tipo Match3 que prima la velocidad, ¿no es un buen nombre Match3? Al fin y al cabo es tres veces la velocidad del sonido

1 1 respuesta
Mandarino

#2 Gracias! Lo del rogelike aun le estoy dando vueltas, pero si que tengo claro que sean runs y upgrades aleatorios. A ver que sale :)

#3 ostras pues es buena esa. Match3 tal cual dudo que este libre pero algo similar si que puede ser buena idea. Gracias!

Mandarino

Update:
Ya estoy bastante satisfecho con las mecánicas del tablero. Aunque sigue sin convencerme la animación de emparejar (match), la parte de código importante la puedo considerar lista.

Hoy he intentado pulir un poco la interfaz que creo me gusta más. También intente una animación de emparejar nueva, pero no me convence.

Mandarino

Sigo trabajando en el aspecto visual. Aprendiendo shaders con Shadergraph. Por ahora no necesito picar shaders a pelo así que es suficiente.

  • Nuevo fondo (cuadrados haciendo scroll)
  • Nuevo color de fondo/tablero
  • Nueva animación de destrucción de gemas.

Un gif del estado actual. El juego va a mas fps de lo que sale el gif por eso

Mandarino

Estos días he trabajado en varias cosas, tanto de diseño como de implementación.

Diseño del juego
Exploradas ideas para hacer el juego más "rogelike" alrededor de la base de Match3. Llegué a la idea de poner nuestro personaje a la izquierda y al enemigo (o enemigos) a la derecha del tablero.
Como mis habilidades de dibujar nuevos personajes no són muy buenas y seria un esfuezro demasiado grande para mi. Probé a poner brazos/piernas/ojos/boca a las Gemas que ya tenia hechas. Para tener variedad, decidi dibujar varios ojos/bocas/cuerpos y combinarlas y asi poder tener muchisimos personajes con poco esfuerzo.
El resultado de la prueba me ha gustado. Los ojos/boca/brazos no tienen porque acabar asi, pero sí que sirven como idea:


Decidí agregarle un borde blanco a todo el personaje para hacerlo más visible, y también porque creo que queda bien.

Programación
Para implementar los personajes "por piezas" he creado un archivo .psb con un personaje de ejemplo entero, donde cada parte es un Layer diferente (ojo izq, ojo derecho, boca, cuerpo, brazo izq, ...). Con el PSD Importer de Unity, es bastante moverlo todo luego a Unity. Le añadi los "Bones" (huesos) a cada parte para poder animarlos.

Por otro lado, pasé bastante tiempo investigando como añadir un contorno blanco (outline) a todo el personaje, ya que añadiendo un Material con un Shader de Outline a cada parte no da un resultado satisfactorio. Probé demasiadas cosas sin éxito pero al final llegué a una solución. Como vi que varia gente tenian el mismo problema, decidi publicar un proyecto de ejemplo en mi Github donde muestro como se hace: https://github.com/albertferras/unity-2d-rigging-shader

Para animarlo, vi que hay 2D Inverse Kinematics, que basicamente sirve para hacer que los miembros se "muevan solos". Por ejemplo si muevo un pie a la derecha, las partes de la pierna se mueven solas de forma correcta, o si muevo el cuerpo del personaje pues las piernas hacen como que se agachan. Esto hace que pueda animar a los personajes más facil, ya que tampoco tengo esa "skill".

Combinando los 2D Rigged characters, probando a animarlo y agregando el Outline shader, el resultado ha sido:

Para poder customizar los graficos de cada parte del personaje (cambiar el cuerpo/boca, ...) y mantener el mismo esqueleto (reusar animaciones!), he utilizado la feature de "2D Sprite Swap" de Unity. Basicamente tengo una colección de diferentes ojos, bocas y cuerpos que podré usar como Sprites de cada parte del personaje.

Por último, he decidido invertir tiempo a aprender a hacer cosas customizadas en el editor, ya que cambiar los sprites de los personajes es bastante tedioso, y asi poder definir todos los tipos de personajes que quiera de forma fácil. He usado el UI Toolkit Builder para crear un Inspector a mi gusto para poder configurar cada personaje, cosa que haré con ScriptableObjects.

Con estos ScriptableObjects, podré definir cada tipo de personaje:

  • Que sprites usar para cada parte
  • Su nombre
  • (Futuro) Su nivel, vida, experiencia que da, etc...
1
23 días después
Mandarino

Update sin fotos:

  • He tenido que rehacer el codigo de mover gemas porque habian edgecases que dejaban bugeado el tablero
  • tema personajes ya esta todo resuelto, solo hace falta dibujar zapatos/ojos/bocas/etc.. para añadir variedad
  • añadi barras de salud. Lo que pasa es que cuando juegas, no tienes tiempo de mirarlo, por lo que o acano quitandolas o hago como zookeeper que juegas 1min y luego ves como le baja la vida

Tema de graficos/musica me esta desmotivando ya que no tengo las skills necesarias y me lleva mucho tiempo :')

Entre que no tengo recursos graficos/audio, mi hijo recien nacido y a la vez tener que buscar nuevo curro (cierran donde trabajaba ;(( ) tengo que pausarlo un poco, y/o sobretodo reducir lo que tenia planeado hacer para poder dejar algo terminado.

Si veo que no acabo por tiempo pues que le voy a hacer, lo saco en modo demo y ya.

1 respuesta
carra
#8Mandarino:

Tema de graficos/musica me esta desmotivando ya que no tengo las skills necesarias y me lleva mucho tiempo :')

Has probado a intentar buscar a alguien que te lo haga en sitios tipo Fiverr?

1 respuesta
Mandarino

#9 No conocia Fiverr, gracias.
Lo único que miré por encima es en los foros de itch.io pero vi que habia que rascar bastante para encontrar alguien.
Echare un vistazo a Fiverr !

1