Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: TheGreenTie en Abril 29, 2016, 01:50:06 AM

Título: Manejo de Grandes Cantidades de Sprites Usando 3D
Publicado por: TheGreenTie en Abril 29, 2016, 01:50:06 AM
Hola a todos, esta es mi primera vez posteando en este sitio así que no se desesperen, haha.  :-[

Mi problema es técnicamente sólo un dilema, pero tal vez pueda tener otra solución que no haya contemplado. Ahorita estoy teniendo unos problemas pequeños, pero que considero que puedan causar problemas críticos al desarrollo del juego en un futuro. Básicamente estoy trabajando en un juego que utiliza proyecciones básicas usando el engine de 3D de GM:S (cubos, floors, walls, etc.) con personajes planos (imagínate Paper Mario).

Como estoy trabajando los sprites del juego en Flash se me hizo muy práctico exportar los sprites en SWF ya que ocupan muy MUY poco espacio y GM:S ahora los soporta. El problema es que el arte de vector (los SWF) no se puede texturizar usando el engine de 3D. ???

Así que decidí usar esta función, que técnicamente proyecta el SWF en una surface para poder guardar el surface como un sprite dentro de una variable temporal:

surf = surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(surf)
    draw_clear_alpha(c_blue, 0);
    draw_sprite(argument0,argument1,0,0)
surface_reset_target();
spr = sprite_create_from_surface(surf,0,0,sprite_get_width(argument0),sprite_get_height(argument0),true,true,sprite_get_width(argument0)/2,sprite_get_height(argument0))
surface_free(surf)
sprite_index = spr


El código funciona, pero los sprites creados quedan demasiado pixeleados, y si lo uso activando el anti-aliasing, el contorno queda horrible con "manchas" del draw_clear_alpha. ¿Hay alguna mejor forma de hacer esto?  ??? Necesito que los sprites se vean muy bien y considerando que este juego va a tener una grande cantidad de sprites (al menos unos 200) siento que los SWF son necesarios ya que pesan como 10 KB cada uno (con animaciones y todo) y un sprite en PNG de 1200x1200 ocupa al menos 150 KB POR FRAME, haciendo que el juego pueda llegar a pesar al menos 30 MBs de sólo sprites. :-X

¿A alguien se le ocurre alguna solución?  :-\
Título: Re:Manejo de Grandes Cantidades de Sprites Usando 3D
Publicado por: Clamud en Mayo 02, 2016, 09:10:44 PM
Creo que aparecen manchas porque el argumento removeback es true.
También puedes usar las surfaces directamente como texturas, sin crear sprites.
Título: Re:Manejo de Grandes Cantidades de Sprites Usando 3D
Publicado por: TheGreenTie en Mayo 02, 2016, 11:47:06 PM
Cita de: Clamud en Mayo 02, 2016, 09:10:44 PM
Creo que aparecen manchas porque el argumento removeback es true.
También puedes usar las surfaces directamente como texturas, sin crear sprites.

Si hago que el removeback sea false quedaría peor. El sprite/textura quedaría con un contorno azul y la imagen con un poco de transparencia. Y si quito el draw_clear_alpha(c_blue, 0); de plano no se proyectaría ninguna imagen. También intenté quitarle el smooth a ver si queda mejor, pero queda exactamente igual.

Y si, creo que podría tener más eficiencia convirtiendo la surface en textura directamente en vez de un sprite.

Gracias por responder.   ;)