Jump to content
UnitySpain
Jocyf

8-Bit Demo (2D Platform)

Recommended Posts

Aqui os dejo una pequeña demo que he hecho en cuatro fines de semana (porque sí, porque me apetecía hacerlo). Es una pequeña demo de un juego de plataformas 2d de 2 niveles usando graficos pixel art y Unity.

Podés probarlo aquí: http://www.jocyf.com/Preview/8BitPlatform/index.html

Edito: Por cierto, hay unas cuantas cosas más que he ido publicando en mi página web y que podéis ver desde aquí: http://www.jocyf.com/previews.html

 

8BitDemo.png

Edited by Jocyf

Share this post


Link to post
Share on other sites

Faa muy bueno te quedó, me encanta este estilo ---> tres preguntas:

1 - ¿Es pixelperfect no? es que ya me acostumbre tanto al "no pixelperfect" que ya ni noto la diferencia (salvo en casos algo extremos)

2 - ¿Qué utilizaste para el control de personaje? me refiero al "character controller" porque el control es realmente bueno vs a otras demos 2D que he probado

3 - Relacionada con la anterior... La interacción con el puente del final del nivel 2 (cuando lo cruzás, este se mueve un poco), es de personaje kinemático vs rigidbody(puente), rigidbody vs rigidbody o el puente también es kinemático? ... lo mismo te podría preguntar acerca de la cadena esa.

Saludos

Share this post


Link to post
Share on other sites

1 - Sip, es pixel perfect. Referencias a como hacerlo aquí: https://blogs.unity3d.com/es/2015/06/19/pixel-perfect-2d/

2 - En este ejemplo he usado Corgi. Otras veces, en otros juegos, he usado otros como el Acrocatic y alguna vez, lo he hecho 'a mano' desde cero para cosas sencillas. 

3 - Es Kinemático, es decir, no usa el Rigidbody de Unity para moverse, sino que lo hace todo 'a mano'. Los obstaculos (paredes, suelo, etc...) se detectan usando raycast y los movimientos se hacer cambiando su posición. El puente si usa fisicas -rigidbodies y joints- y las cadenas (o cuerdas) tambien.

La manera de hacer funcionar las fisicas con un andador kinematico es añadir fuerzas a los objetos del entorno "a mano" cuando los detectas. Eso ya no lo tiene Corgi, se lo he tenido que añadir aparte junto con bastantes cosas que le faltan y que quería meter en la demo (luciernagas y murcielagos tienen código propio, subir por las cadenas, un soundmanager mas completo, hacer que la camara se mueva por pixeles enteros y no como lo hace normalmente, etc...)

También se puede hacer un andador desde cero; no es dificil de hacer pero sí que tiene bastante trabajo. Yo personalmente, para hacer el andador en 3D del FPC Pro, tuve que invertir varios meses. Con el andador en 2D pasa lo mismo, es relativamenbte sencillo programarlo y hacerlo funcionar, pero lleva tiempo programarlo todo.

Edited by Jocyf

Share this post


Link to post
Share on other sites

Qué cab**** XDDD ¡Me encanta, está súper chulo! :8_laughing:

¿Qué has usado para el postFX de scanlines de la pantalla? le queda de maravilla. No sé si además saturas el color de los gráficos para que sean más vivos, pero el efecto es increíble...

Share this post


Link to post
Share on other sites

Gracias.

Es sólo una demo con 2 niveles que he hecho en ratos libres.

El efecto de CRT lo he hecho usando Old TV Filter que es un FX de pago. Hace las scanlines y la saturacion de color. Lo compre hace años para un trabajo pagado y va muy bien: https://www.assetstore.unity3d.com/en/#!/content/24046

Si quieres hacerlo a mano, lo mejor que encontré en su día con diferencia para saber como  va el tema, fue un articulo de Gamasutra: https://www.gamasutra.com/blogs/SvyatoslavCherkasov/20140531/218753/Shader_tutorial_CRT_emulation.php

La saturacion del color lo puedes hacer con el ColorCorrection y Color Aberration de los PostFX gratuitos de Unity: https://www.assetstore.unity3d.com/en/#!/content/83912

 

Edited by Jocyf

Share this post


Link to post
Share on other sites

muy chula la estetica

el agua (en la foto) son particulas?

se nota como que no esta pixelPerfecteado... el resto si

(no he podido probar el juego)

pero muy chula la imagen:)

Share this post


Link to post
Share on other sites

Si, si. El agua son particulas shuriken. Tanto la cascada, como la fuente de agua que sale hacia arriba y el fuego con las chispitas. Eso se ha hecho desde cero (es fácil hacer ese tipo de efectos con particulas).

La parte 'mala' es que el pixel perfect hace lo que puede para dibujar cada particula pues no se mueven de pixel a pixel sino en coordenadas reales.

Share this post


Link to post
Share on other sites
18 hours ago, Jocyf said:

2 - En este ejemplo he usado Corgi. Otras veces, en otros juegos, he usado otros como el Acrocatic y alguna vez, lo he hecho 'a mano' desde cero para cosas sencillas. 

18 hours ago, Jocyf said:

También se puede hacer un andador desde cero; no es dificil de hacer pero sí que tiene bastante trabajo...

Gracias por responder! Entiendo lo que decís, yo hace un año (o más) que estoy con uno 2d y 3d(version box y capsule), y andan muy bien, pero siempre quiero testear el personaje contra todo tipo angulos y figuras geométricas, que para un juego real no tiene casi uso (ya que los juegos típicos de plataformas nunca son tan arriesgados), pero por lo obsesivo que soy no me animo a darle el visto bueno hasta que no ande todo perfecto.

Ah mira, el corgi engine es, siempre me interesó como realizaba la detección de colision hasta que hace poco di con un video que uno de los creadores lo explica (algo), y si, era más o menos lo que esperaba, aunque podés derivar en dos métodos para hacerlo: proyectar y acomodar o depenetración. Yo siempre usé el segundo método, pero me ha sorprendido que la mayoría de los controllers use el primero.

Te ha pasado por ej de poner dos rampas o figuras "super feas" y que el corgi falle a la hora de detectarlas?

 

Edited by lightbug

Share this post


Link to post
Share on other sites

Yo no suelo volverme loco con este tipo de temas, antes sí, pero ahora busco que funcioone bien en un juego y listo. De todos modos, al funcionar mediante raycast., estos tipos de controles se vuelven locos si los pones frente a diferentes paredes con angulos muy locos, porque unos raycast detectan una pared con un angulo y otros raycast detectan la otra pared.

Si quieres ver como funciona el metodo desde cero, puedes mirarte el andadoir de Sebastian Lague, un chaval que hace tutoriales en youtibe; el tío es bastante bueno (mejor de lo que era yo cuando los hacía en mi canal de MrJocyf). Aqui tienes el link: https://www.youtube.com/watch?v=MbWK8bCAU2w&list=PLFt_AvWsXl0f0hqURlhyIoAabKPgRsqjz

Por otro lado, siempre me ha molestado el hecho de que no haya salido un CharacterControler en 2D que sea oficial, es decir, hay un CharacterController para 3D que funciona perfecto, integrado con las physics de Unity, pero en 2D no hay nada y es una pena. Los de Prime31 (que hacen plugin de Android/IOs para unity), sacaron un CharacterController2D que en su día lo probé y no funcionaba muy bien, la verdad:

https://github.com/prime31/CharacterController2D

Un characterController2D que funcione como funciona el de 3D, sin usar un rigidbody pero que permite un control muy preciso (aparte de poder subir escaleras y esas cosas), permitiría tener un control de plataformas Kinetico (siin usar fisicas) y a la vez, no tener que tirar de Raycast como un loco. Algo así ya integrado en las fisicas 2d del Unity, permitiría tener por defecto un andador guay a partir del cual poder hacer maravillas, al estilo de mi andador en 3d que tengo a la venta.

Share this post


Link to post
Share on other sites
8 hours ago, Jocyf said:

Si quieres ver como funciona el metodo desde cero, puedes mirarte el andadoir de Sebastian Lague, un chaval que hace tutoriales en youtibe; el tío es bastante bueno (mejor de lo que era yo cuando los hacía en mi canal de MrJocyf). Aqui tienes el link: https://www.youtube.com/watch?v=MbWK8bCAU2w&list=PLFt_AvWsXl0f0hqURlhyIoAabKPgRsqjz

Si, un grande Sebastian! por goleada el mejor youtuber en lo referido a Tutoriales en Unity (ni hablar de esas Jams de videojuegos que hace), aunque debo decir que detesto que sea tan inteligente :6_smile:, no puede ser que el tipo tire algunas arcotangentes por ahí y diga "a ver.... al parecer esto funciona ... bien!" y vos estás meses tratando de hacer que algo ande jaja.

Mi controller lo arranqué antes de conocerlo a Sebastian, luego me di cuenta que el lo hacía alrevés que yo, aunque uso boxCast para casi todo, es bastante mejor(en resultado) e igual (sino más) rápido que el raycast (lo he testeado para muchisismos personajes en un versus), aunque tengo un método de raycast para un situación especial (Top Secret). No se si sabías pero el Controller de Sebastian está en el asset Store gratis y anda muy bien (Alguien le metió doble salto y lo subió... se mató pobre) : https://www.assetstore.unity3d.com/en/#!/content/69772

 

9 hours ago, Jocyf said:

Un characterController2D que funcione como funciona el de 3D, sin usar un rigidbody pero que permite un control muy preciso (aparte de poder subir escaleras y esas cosas), permitiría tener un control de plataformas Kinetico (siin usar fisicas) y a la vez, no tener que tirar de Raycast como un loco. Algo así ya integrado en las fisicas 2d del Unity, permitiría tener por defecto un andador guay a partir del cual poder hacer maravillas, al estilo de mi andador en 3d que tengo a la venta.

Bueno pero usar los 'X'Cast's supongo que los tenés que usar, igual entra en lo kinemático, siempre y cuando los muevas vos está bien, además para lograr algo jugable no son necesarios tantos rays, he tenido(a modo de prueba) 11 personajes tirando 30 rays por lado, osea 120 rays c/u , 1320 rays en total, y la verdad la performance siguió intacta (en pc, habría que probarlo en un movil), pero la verdad el raycast (o boxcast) no es tan caro como todo el mundo piensa.

Bueno, no te jodo más el hilo, es que el tema de los controllers (sobretodo en 2D) me interesa mucho y puedo estar todo el día con esto, además es raro cruzarse con alguien que haya tenido experiencia usándolos.

Saludos

Share this post


Link to post
Share on other sites

Si, ya conocía el asset de Sebastian en la Asset Store y está muy bien.

En cuanto al tema de los andadores, yo tengo experiancia porque ya he hecho varios jueguecillos de plataformas 2d; por eso hacer esta demo ha sido bastante sencillo, estoy usando cosas más o menos standard que ya he usado mucho y, aunque tenga que programar o adaptar algunas cosas, no suele ser un problema y lo hago bastante rápido.

Además quería probar el Tilemap de Unity a ver qué tal funcionaba y hasta donde se puede llegar con él, por ejemplo, no parece un buen sistema si quieres tener cosas destruibles al estilo de Broforce o silmilares. No lo he mirado mucho, pero la manera de mapear que tiene no se si permitiría destruir suelos, plataformas y demás.

Esta Demo por ejemplo, ha quedado bastante bien. Los graficos pixel art estan muy bien y corgi es lo bastante versátil para permitirme modificar aquello no me gusta o no me vale. El controlador está bastante bien aunque tiene algunas lagunas, algo normal por otro lado y el mapeador de Unity es fácil de usar y muy potente.

Share this post


Link to post
Share on other sites
13 hours ago, Jocyf said:

Además quería probar el Tilemap de Unity a ver qué tal funcionaba y hasta donde se puede llegar con él, por ejemplo, no parece un buen sistema si quieres tener cosas destruibles al estilo de Broforce o silmilares. No lo he mirado mucho, pero la manera de mapear que tiene no se si permitiría destruir suelos, plataformas y demás.

Como permitir lo permite, le podés dar una vueltita, por ej disparás un ray (disparo del arma) determinás la posición de colisión (point), eso lo trasladas a que tiles corresponden en tu tilemap (point + dirección de disparo * delta, para caer justo en el tile) y simplemente lo borrás (y bueno, agregarle el efecto que desees). La ventaja de hacerlo así es que podés seguir usando el composite collider, la otra forma es directamente detectando pequeños boxcolliders individuales y destruir objetos directamente, pero esto ya sería "pasar por arriba" al tilemap. Lo bueno que tiene el tilemap de Unity es la posibilidad de extenderlo, por ej podés crear tus propias funciones de destrucción (con animación y todo si lo quisieras).

Aca encontré a alguien que implementó algo similar (supongo, vi mas o menos el código) pero con un efecto de bomba:

 

 

Share this post


Link to post
Share on other sites

Ah, vale. No tenía ni idea de como funcionaba el Tilemap de Unity internamente, me parecía todo bastante opaco. Pero si se puede acceder a los tiles del tilemap y cambiarlos en runtime, entonces ya la cosa cambia bastante. Es un tema en el que quiero meterme un poco para poder romper un mapa 2d.

Otra cosa sería poder hacer huecos al estilo de los lemmings o que al tirar una bomba se genere un agujero cambiando la forma del collider y demás. Pero vasmos, esto es sufuciente para poder tirar del hilo. Gracias por la info, se agradece.

Share this post


Link to post
Share on other sites
18 hours ago, Jocyf said:

Ah, vale. No tenía ni idea de como funcionaba el Tilemap de Unity internamente, me parecía todo bastante opaco. Pero si se puede acceder a los tiles del tilemap y cambiarlos en runtime, entonces ya la cosa cambia bastante. Es un tema en el que quiero meterme un poco para poder romper un mapa 2d.

Otra cosa sería poder hacer huecos al estilo de los lemmings o que al tirar una bomba se genere un agujero cambiando la forma del collider y demás. Pero vasmos, esto es sufuciente para poder tirar del hilo. Gracias por la info, se agradece.

Ah si, recuerdo el juego ese, la destrucción parece tan "exacta" que no creo que te sirvan los tiles. En ese tipo de juegos los character controllers y todas los objetos físicos responden a nivel de pixel. Fijate este link: http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/ La parte del "Bitmask" (Collision por pixel - Type#3).

Edited by lightbug

Share this post


Link to post
Share on other sites

Ya sabía eso que me has pasado (gracias de todas formas), pero me gustaría intentar conseguirlo usando tiles.

El mapeo usando tiles es maravilloso (siempre lo ha sido) y seguro que hay alguna manera de hacerlo; a fin de cuentas si puedes acceder a cada tile, no debería de haber problemas para cambiar los pixeles de cada uno de ellos en runtime. Broforce por ejemplo, destruye los tiles directamente, no los modifica (junto con su colision) para poder modificar el mapa completamente (eso era lo que quedaba guay en los lemmings).

Otra cosa es que se pueda hacer usando el tilemap de Unity en vez de usar alguno externo, pero eso ya es otra cuestión. Es algo que tengo pensado intentar a medida que avance con  esta demo, para ver las posibilidades técnicas que disponemos para hacer algun juego en 2d. Por ahora estoy con interacciones con las fisicas 2d de Unity (corgi no tiene casi nada en este campo).

Share this post


Link to post
Share on other sites

×
×
  • Create New...