Ver la versión completa : Sdl2 wiz?
Neodreamer
24/08/2019, 01:45
Existe port de sdl2 para la wiz o la caanoo? Estoy mirando cosillas para intentar hacer alguna cosa en sdl y tela lo tonto que me siento al haberme acomodado con entornos como unity... como puedo rotar un objeto en sdl1.2? Como haría para que una bala vaya en diagonal según el ángulo de nuestro player? Casi todos los ejemplos que encuentro no rotan el player sino pintan los sprites ya girados y casi todos son shooter que disparan las balas en el eje x o y pero no en ángulo... en algún foro he visto que con sdl2 eso fue una de las cosas que mejoraba... pero no veo dicho port para wiz o caanoo...
La trigonometria es tu amiga.
Neodreamer
24/08/2019, 14:43
Sip. Justo lo acabo de ver mientras tomaba sol en la piscina...con el sin() y demás tengo el calculo de diagonales...pero que me dices de girar imágenes en ángulos no rectos? Como se hace en sdl1.2? Por ejemplo pintar una nave 24 grados de giro... como decía, ángulos múltiplos de 90 hay apaños...
Gracias
He visto que en la version 2.0 si que hay una función para copiar una textura con una rotacion aplicada. En la 1.2 me parece que vas a tener que hacerlo a mano dibujando pixel a pixel y esto ira un poco lento. ¿Cual es la plataforma destino? Otra opción es que al arrancar calcules todas las rotaciones de todos los sprites así ira igual de rápido que dibujando sprites normales.
Para rotar un sprite tienes dos opciones:
1. Recorres de izquierda a derecha y de arriba a abajo el sprite y lo vas dibujando en un buffer. El problema es que puede dejar huecos.
Algo así en seudocodigo, El punto inicial de dx y dy (las coordenadas destino) hay que calcularlas en función de la rotacion.
vx = vec(cos(angulo), -sin(angulo))
vy = vec(sin(angulo), cos(angulo))
dx = 0
dy = 0
for y = 0 to alto
{
for x = 0 to ancho
{
plot dx,dy,color[x, y]
dx += vx
}
dx -= vx*ancho
dy += vy
}
2 Rasterizar un cuadrado rotado y dibujar lo con la textura, vamos como en un motor 3d. Esto es un poco mas complicado pero queda mejor.
Neodreamer
24/08/2019, 18:49
La plataforma destino será la wiz. Y sobre todo es por aprender y orgullo ya que realmente desarrollo en unity y ya cuando salió la gp32 me quedé con el gusanillo de programar algo y que no fuera en fénix o bennugd. Por falta de tiempo nunca llegue a meterme con sdl y ahora entrando a ello y con idea de portar un posible juego que estoy haciendo en unity para proyecto de fin de curso me puse a investigar que tendría que cambiar o aprender... los disparos ya está conseguido gracias al uso de trigonometría... pero mis enemigos y mi propio personaje giran sobre si mismos y como decía seria súper cutre hacer tantos sprites como ángulos quisiera pintar...
Gracias por el código y la ayuda
La plataforma destino será la wiz. Y sobre todo es por aprender y orgullo ya que realmente desarrollo en unity y ya cuando salió la gp32 me quedé con el gusanillo de programar algo y que no fuera en fénix o bennugd. Por falta de tiempo nunca llegue a meterme con sdl y ahora entrando a ello y con idea de portar un posible juego que estoy haciendo en unity para proyecto de fin de curso me puse a investigar que tendría que cambiar o aprender... los disparos ya está conseguido gracias al uso de trigonometría... pero mis enemigos y mi propio personaje giran sobre si mismos y como decía seria súper cutre hacer tantos sprites como ángulos quisiera pintar...
Gracias por el código y la ayuda
Seria cutre hacerlos con un programa de dibujo y tenerlos en un fichero enorme, pero calcularlos al arrancar es de lo mas normal cuando te encuentras con ciertas limitaciones. Ademas piensa que solo necesitarías un cuarto de circulo, las demás se sacan haciendo espejo horizontal y vertical.
Neodreamer
24/08/2019, 19:42
Guay, pues teniendo en cuenta que es a la antigüa y las limitaciones propias de la wiz y de la versión de sdl, optare por esto que hemos dicho.
De todos modos, nadie lo ha comentado asi que entiendo que es que no, pero lo pregunto de nuevo por si acaso. No hay port de sdl2 para wiz o caanoo no? Nadie llegó a sacar ni una versión modificada no nada?
Gracias
Carlos24
26/08/2019, 22:58
Aunque contesto con retraso He visto que la versión actual de sdl2 sigue teniendo apoyo al menos para la wiz.
El código fuente lo tienes aquí https://hg.libsdl.org/SDL
Necesitaras de sus toolchain arm-openwiz-linux-gnu-gcc mirate el makefile que pone Makefile.wiz https://hg.libsdl.org/SDL/file/f5e7a1b95ffd/Makefile.wiz
Neodreamer
26/08/2019, 23:15
Que me dices! :O pues a ver si consigo compilarlo o echarlo a andar. Ya digo que aunque curro con c#, web y unity, al ser todo hoy en día tan automático me cuesta un poco el tema makefiles...pero vamos que al menos ya se que si que tiene soporte y que es posible. Mil gracias
SplinterGU
29/08/2019, 17:07
He visto que en la version 2.0 si que hay una función para copiar una textura con una rotacion aplicada. En la 1.2 me parece que vas a tener que hacerlo a mano dibujando pixel a pixel y esto ira un poco lento. ¿Cual es la plataforma destino? Otra opción es que al arrancar calcules todas las rotaciones de todos los sprites así ira igual de rápido que dibujando sprites normales.
Para rotar un sprite tienes dos opciones:
1. Recorres de izquierda a derecha y de arriba a abajo el sprite y lo vas dibujando en un buffer. El problema es que puede dejar huecos.
Algo así en seudocodigo, El punto inicial de dx y dy (las coordenadas destino) hay que calcularlas en función de la rotacion.
vx = vec(cos(angulo), -sin(angulo))
vy = vec(sin(angulo), cos(angulo))
dx = 0
dy = 0
for y = 0 to alto
{
for x = 0 to ancho
{
plot dx,dy,color[x, y]
dx += vx
}
dx -= vx*ancho
dy += vy
}
2 Rasterizar un cuadrado rotado y dibujar lo con la textura, vamos como en un motor 3d. Esto es un poco mas complicado pero queda mejor.
pesima idea, muy lento...
-----Actualizado-----
Neodreamer, busca y mira los fuentes de bennugd... o tambien puedes usar bennugd...
Neodreamer
29/08/2019, 17:22
Gracias Splinter pero no quiero usar ni bennugd ni fenix, creo que lo puse arriba. Quiero forzarme a aprender a hacerlo con sdl. Que puedo compilar sdl2, genial, que soy manco y no lo consigo, tiro de sdl1.2 e intento hacer lo que han dicho los otros compañeros.
Pero gracias de todos modos
pesima idea, muy lento...
-----Actualizado-----
@Neodreamer (https://www.gp32spain.com/foros/member.php?u=5420), busca y mira los fuentes de bennugd... o tambien puedes usar bennugd...
Pues solo hay una tercera forma de hacer una rotación (por software) que es desplazar cada linea en horizontal según la rotación y después hacer lo mismo en vertical. Si usas el hardware (OpenGL) es lo mismo que el segundo caso pero ira mas rápido. Pero si usas sdl 1.2 te tienes que aguantar y hacer la rotación dibujando pixel a pixel.
SplinterGU
29/08/2019, 19:56
Gracias Splinter pero no quiero usar ni bennugd ni fenix, creo que lo puse arriba. Quiero forzarme a aprender a hacerlo con sdl. Que puedo compilar sdl2, genial, que soy manco y no lo consigo, tiro de sdl1.2 e intento hacer lo que han dicho los otros compañeros.
Pero gracias de todos modos
de nada, los fuentes lo decia por las rutinas de rotacion y escalado... con sdl1.2, todo lo que hay es lento, en fenix/bennugd lo tienes, y es en extremo rapido...
Pues solo hay una tercera forma de hacer una rotación (por software) que es desplazar cada linea en horizontal según la rotación y después hacer lo mismo en vertical. Si usas el hardware (OpenGL) es lo mismo que el segundo caso pero ira mas rápido. Pero si usas sdl 1.2 te tienes que aguantar y hacer la rotación dibujando pixel a pixel.
para que sea rapido, es un poco mas complejo que eso...
de nada, los fuentes lo decia por las rutinas de rotacion y escalado... con sdl1.2, todo lo que hay es lento, en fenix/bennugd lo tienes, y es en extremo rapido...
para que sea rapido, es un poco mas complejo que eso...
explicate.
Si lo haces por software lo tienes que hacer pixel a pixel, y aunque uses punteros el algoritmo es el mismo aunque te ahorras las llamadas a dibujar pixel.
Neodreamer
29/08/2019, 21:19
Oye que si los que controlais, os marcais el puntazo de compilar las sdl2 que indicaban arriba para meterlas en el sdk de wiz y así mejorar un poquito la wiz, yo soy el primero que os lo agradecería...si hay que hacer donativo o patreon se hace ;)
SplinterGU
29/08/2019, 23:19
explicate.
Si lo haces por software lo tienes que hacer pixel a pixel, y aunque uses punteros el algoritmo es el mismo aunque te ahorras las llamadas a dibujar pixel.
es un poco complejo, pero basicamente se dibuja en base a lineas que recorren la textura, no se calcula la posicion pixel a pixel, por eso es muy rapido, y no vi ningun render por software con rotaciones que sea tan rapido, al menos no sobre SDL1 o muchos otros engines...
Neodreamer
30/08/2019, 00:55
Revisando el makefile hay algo que me mosquea...se supone que es el de wiz y hay varias referencias a su sdk pero también unas cuantas a pandora... se han colado? Comparten versión?
es un poco complejo, pero basicamente se dibuja en base a lineas que recorren la textura, no se calcula la posicion pixel a pixel, por eso es muy rapido, y no vi ningun render por software con rotaciones que sea tan rapido, al menos no sobre SDL1 o muchos otros engines...
Es cualquiera de los dos algoritmos que yo he puesto pero optimizado, he puesto con las llamadas a dibujar pixel para que se entienda mejor. De todas formas aunque lo implementes como yo lo he descrito (con las llamadas) lo harías al principio del juego, mientras muestras algun logo o algo así, por lo que importa poco si va lento.
SplinterGU
30/08/2019, 13:44
Es cualquiera de los dos algoritmos que yo he puesto pero optimizado, he puesto con las llamadas a dibujar pixel para que se entienda mejor. De todas formas aunque lo implementes como yo lo he descrito (con las llamadas) lo harías al principio del juego, mientras muestras algun logo o algo así, por lo que importa poco si va lento.
eso es casi lo mismo que tenerlos predibujados... requiere mas memoria... entiendo que la idea era rotarlos en realtime... como sea...
-----Actualizado-----
Revisando el makefile hay algo que me mosquea...se supone que es el de wiz y hay varias referencias a su sdk pero también unas cuantas a pandora... se han colado? Comparten versión?
si mal no recuerdo, comparte... una pandora y una wiz, segun creo recordar son bastante similares...
eso es casi lo mismo que tenerlos predibujados... requiere mas memoria... entiendo que la idea era rotarlos en realtime... como sea...
Con la ventaja de que no tienes que hacerlos con el programa de dibujo y si mas adelante te sobra memoria (que te sobrara, ¿cuanta memoria tiene la wiz 64MB?), cambias un parámetro (suponiendo que tengas el código en condiciones) y tienes mas imágenes para unas rotaciones mas suaves.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.