Ver la versión completa : Dudas programacion SDK,SDL?
thamurath
07/10/2005, 16:51
Buenas a todos,
Tengo algunas dudas conceptuales, aqui todos los programadores hablais de varios SDKs y de las SDL, pero en mi inmensa ignorancia no tengo realmente claro que son cada uno.
Conozco lo que es un SDK, pero no se exactamente que son las SDL aunque por lo que he leido parece que son portables y se pueden usar con varios sistemas ( consolas, linux , ...), pero aun no lo tengo claro.
SI alguien me lo puede aclarar se lo agradeceria, ademas me gustaria saber que recomendais para programar para la GP32, aunque sin perder de vista la GP2X
Muchas gracias a todos .
La SDL no es mas que otro SDK, simplemente tiene la ventaja de ser portable y tu juego puede servir para win,linux,macos,dreamcast,gp. Usando el SDK oficial o el mirko tan solo haras cosas para la gp32 (siempre q sea eso lo q buscas).
Hecha una googleada y veras paginas con tutoriales sobre SDL muy majos para ir viendo como funciona.
Saludos,
Conozco lo que es un SDK, pero no se exactamente que son las SDL aunque por lo que he leido parece que son portables y se pueden usar con varios sistemas ( consolas, linux , ...), pero aun no lo tengo claro.
Pues las SDL son simplemente unas librerias para manejar graficos, musica y sonido, que existen en varios sistemas (gp32,dreamcast,pc, la futura gp2x, y mas). Y la gracia es que si las utilizas es mas facil portar tu juego a cualquier de esas plataformas.
el SDK tambien tiene librerias, solo que son para esa sola consola. Aparte en los SDK tambien hay funciones que no son de graficos, con cosas como velocidad de los procesadores, configuracion del sistema y cosas asi, que en SDL en principio no hay.
Aiken
Wonder Boy
07/10/2005, 17:12
...ademas me gustaria saber que recomendais para programar para la GP32, aunque sin perder de vista la GP2X
Muchas gracias a todos .Fenix es también una buena recomendación, pues es un lenguaje potente y relativamente sencillo de aprender con el que ves resultados de forma rápida (además, Chui dijo que tenía intención de llevarlo también a la GP2X).
Un Saludo.
D_Skywalk
07/10/2005, 17:15
A ver si este documento te ayuda a ¿Por que usar SDL?
http://www.losersjuegos.com.ar/documentos/articulos/why_sdl/why_sdl.php (español)
Un Saludo y suerte :)
Wonder Boy
07/10/2005, 18:00
La SDL es buenísima (qué duda cabe), y son tantas las veces que he estado a punto de ponerme a usarla por sus grandes características sobradamente conocidas... pero la verdad que al final siempre termino por seguir programando en Fenix :-)
- ¿Por qué?
Pues porque, por citar una de las razones, por ejemplo SDL no tiene soporte de archivos de módulo de sonidos .XM (que para mí es muy importante). En cambio Fenix sí que tiene, y Fenix es un lenguaje también multiplataforma.
Sí, ya sé que existen las librerías ó rutinas externas de otras personas para solucionar éste problema, pero ya tienes que estar buscando (y acoplando en el programa) tal rutina (si existe, aunque normalmente sí) de reproducción de módulos de sonido .XM
La verdad que hay algo que me incomoda un poco al no usar SDL (la razón obvia de su caracter superstandard), pero es que es lo que digo, que le he encontrado alguna carencia al compararla con Fenix.
Supongo que también tenga que ver el que esté más familiarizado con Fenix.
En cualquier caso, estoy abierto a que en cualquier momento me tire a la piscina SDL... aunque puede que no lo haga nunca, pues ello depende en gran medida de la evolución de Fenix... supongo :-)
Editado:
Me estoy dando cuenta de que SDL goza de algo muy valioso en comparación con Fenix: La flexibilidad, pues si se dá el caso en el que se quiera enrredar con el hardware de la máquina a un nivel más bajo (cosa que Fenix no te deja), SDL te lo permite. De hecho, es una lástima que Fenix no te deje "Pokear" ó manipular el hardware del sistema sobre el que corre el programa, pues con ello se pueden conseguir cosas muy bonitas.
Un Saludo.
Puck2099
07/10/2005, 19:03
Una cosa, con Fenix no se pueden importar librerías de C, ¿verdad?
Wonder Boy
07/10/2005, 19:14
Una cosa, con Fenix no se pueden importar librerías de C, ¿verdad?En forma de DLL sí... de hecho, molaría que para GP2X se hiciera una para gestionar el chatboard o... mejor aún, un teclado normal de ordenador conectado por el EXT ó USB. Lo que pasa que no tengo ni idea ahora mismo de cómo hacer éstas DLL porque me dá a mí que no será nada sencillo.
Pero importar tal y como dices... no.
Puck2099
07/10/2005, 19:16
En forma de DLL sí... de hecho, molaría que para GP2X se hiciera una para gestionar el chatboard o... mejor aún, un teclado normal de ordenador conectado por el EXT ó USB. Lo que pasa que no tengo ni idea ahora mismo de cómo hacer éstas DLL porque me dá a mí que no será nada sencillo.
Pero importar tal y como dices... no.
¿Te refieres a DLLs de Windows o a librerías precompiladas?
Wonder Boy
07/10/2005, 19:18
¿Te refieres a DLLs de Windows o a librerías precompiladas?Precompiladas, supongo. Vamos, que le puedas acoplar rutinas no propias del lenguaje Fenix.
Wonder Boy
07/10/2005, 19:23
Lo interesante sería que GPH (ó algún particular) sacase un teclado estandard para la GP2X preferiblemente de tamaño normal (de ordenador), pués si dispusiese de la información suficiente quizás intentaría hacer la rutina en Fenix (por medio de una DLL como estamos hablando) para darle soporte a éste.
Ésto, añadido a la posibilidad de conectar la GP2 a la TV lo convierte en algo más práctico.
Pues porque, por citar una de las razones, por ejemplo SDL no tiene soporte de archivos de módulo de sonidos .XM (que para mí es muy importante)
Ah no????????????????????????? yo que tu miraria bien el SDL_mixer ;)
Aiken
Wonder Boy
07/10/2005, 23:07
Ah no????????????????????????? yo que tu miraria bien el SDL_mixer ;)
AikenNo me digas, voy a ver.
--------------
Editado:
Nada, lo que yo te diga. :-)
Como bién pone en la documentación (http://www.libsdl.org/cgi/docwiki.cgi/Mix_5fMusic):
"It supports loading the following types: WAV, MOD, MID, OGG, and MP3."
hay no pone .XM (a no ser que internamente lo soporte pero no esté indicado)
--------------
De todas formas sigo demasiao familiarizao con el Fenix de momento como pa mudarme ya de apartamento :-)
Un Saludo.
El SDL sí soporta .xm
Te lo puedo asegurar porque acabo de portar un matamarcianos a la GP32 que usa .xm y se oye de p.m. [wei4]
Adjunto una preview del juego:
Puck2099
08/10/2005, 08:37
El SDL sí soporta .xm
Te lo puedo asegurar porque acabo de portar un matamarcianos a la GP32 que usa .xm y se oye de p.m. [wei4]
Adjunto una preview del juego:
Oye, A600, una curiosidad: los juegos que estás portando a la GP32 (creo que ya llevas varios, ¿no?), ¿tienen la resolución a 320x240 (o menor) o haces uso de alguna función de reescalado?
Gracias :)
Oye, A600, una curiosidad: los juegos que estás portando a la GP32 (creo que ya llevas varios, ¿no?), ¿tienen la resolución a 320x240 (o menor) o haces uso de alguna función de reescalado?
Gracias :)
El Interlogic usa 640x480 y tuve que reescalar los gráficos con el Gimp a 320x240 y modificar el código que no funcionaba con la nueva resolución.
El matamarcianos usa 320x200 y también voy a tener que modificar los gráficos.
El caso es que no sé si hay alguna función para reescalar los gráficos al visualizarlos en pantalla pero de todas formas, sería un gasto inútil de memoria y CPU trabajar con resoluciones superiores a 320x240.
Wonder Boy
08/10/2005, 17:45
El SDL sí soporta .xm
Te lo puedo asegurar porque acabo de portar un matamarcianos a la GP32 que usa .xm y se oye de p.m. [wei4]
Adjunto una preview del juego:Lo que yo no termino de entender, es que algo tan importante como es el dar soporte a un formato tan potentísimo como es el .xm no venga especificado en la documentación oficial de la SDL, por mucho que esté incompleta ésta (que igual no lo está), pues sí que dice, por ejemplo, que soporta .mod... ¿es que hay que ser adivino?
Vamos, que yo lo digo por el bién de la SDL y la gente que le guste, pues el desconocimiento de ciertas informaciones le resta interés al producto.
Un Saludo.
Lo que yo no termino de entender, es que algo tan importante como es el dar soporte a un formato tan potentísimo como es el .xm no venga especificado en la documentación oficial de la SDL, por mucho que esté incompleta ésta (que igual no lo está), pues sí que dice, por ejemplo, que soporta .mod... ¿es que hay que ser adivino?
Vamos, que yo lo digo por el bién de la SDL y la gente que le guste, pues el desconocimiento de ciertas informaciones le resta interés al producto.
Un Saludo.
ehm... creo q tu fantástico soporte .xm es ese MOD q si viene incluido en la documentación q dices...
Wonder Boy
08/10/2005, 19:16
ehm... creo q tu fantástico soporte .xm es ese MOD q si viene incluido en la documentación q dices...A ver... .mod NO es lo mismo que .xm
A ver... .mod NO es lo mismo que .xm
yo creo q son practicamente lo mismo... :S
Wonder Boy
08/10/2005, 22:08
yo creo q son practicamente lo mismo... :SCrees mal :-)
@Puck2099, por si te interesa, he encontrado esta función para reducir a la mitad una imagen con SDL:
/*!
* \brief reduce una imagen a la mitad
*
* \return imagen reducida
*/
SDL_Surface *reescalar_mitad(SDL_Surface *ima)
{
SDL_Surface *ima2;
ima2 = SDL_CreateRGBSurface(SDL_SWSURFACE, ima->w/2, ima->h/2, ima->format->BitsPerPixel, ima->format->Rmask, ima->format->Gmask, ima->format->Bmask, ima->format->Amask);
if (ima2==NULL)
{
printf(_("Can't copy the image\n"));
return NULL;
}
SDL_LockSurface(ima);
SDL_LockSurface(ima2);
for (int i=0; i<ima2->w; i++)
{
for (int j=0; j<ima2->h; j++)
{
Uint8 r, g, b, a;
Uint32 r_aux=0, g_aux=0, b_aux=0, a_aux=0;
obtener_componentes(ima, &r, &g, &b, &a, i*2, j*2);
r_aux += r;
g_aux += g;
b_aux += b;
a_aux += a;
obtener_componentes(ima, &r, &g, &b, &a, i*2+1, j*2);
r_aux += r;
g_aux += g;
b_aux += b;
a_aux += a;
obtener_componentes(ima, &r, &g, &b, &a, i*2, j*2+1);
r_aux += r;
g_aux += g;
b_aux += b;
a_aux += a;
obtener_componentes(ima, &r, &g, &b, &a, i*2+1, j*2+1);
r_aux += r;
g_aux += g;
b_aux += b;
a_aux += a;
r = (Uint8) (r_aux/4);
g = (Uint8) (g_aux/4);
b = (Uint8) (b_aux/4);
a = (Uint8) (a_aux/4);
put_pixel(ima2, i, j, SDL_MapRGBA(ima->format, r, g, b, a));
}
}
SDL_UnlockSurface(ima);
SDL_UnlockSurface(ima2);
SDL_FreeSurface(ima);
return ima2;
}
Puck2099
10/10/2005, 03:16
@Puck2099, por si te interesa, he encontrado esta función para reducir a la mitad una imagen con SDL:
Gracias tío, pensaba currarme una función, pero ya que has encontrado una, eso que me ahorro :brindis:
Por cierto, ¿has probado cuan rápida es?
Gracias tío, pensaba currarme una función, pero ya que has encontrado una, eso que me ahorro :brindis:
Por cierto, ¿has probado cuan rápida es?
Pues no. Habrá que probarlo [wei4]
Pues parece que el código no está muy optimizado. Se podrían haber ahorrado unos cuantos productos (todos los i*2 y los j*2) cambiando esto:
for (int i=0; i<ima2->w; i++)
{
for (int j=0; j<ima2->h; j++)
por esto:
for (int i=0; i<ima2->w; i+=2)
{
for (int j=0; j<ima2->h; j+=2)
Luego, al final, donde se usa i y j sin multiplicar, pues se cambian por (i<<1) y (j<<1) y listos. No sé hasta que punto optimizará este cambio. Los compiladores hoy en día son muy listos...
thamurath
10/10/2005, 19:03
Vale, he estado mirando y he encontrado de donde bajarme las SDL, pero aun tengo algunas preguntas ...
- La primera es mas que una pregunta una confirmacion , he bajado los ficheros fuente de las SDL, eso es correcto verdad?
- La siguiente es una peticion ... Podria alguien pasarme algun jueguecito, a ser posible no muy complejo, que este hecho con las SDL para la GP32 ? Es que he encontrado ejemplos, pero son para PC ( tanto para linux como la windows), pero queria ver cual es el aspecto de algo hecho para la GP32...
- Alguna direccion con documentos ( a ser posible offline) sobre el API de la SDL?
Muchas gracias a todos ...
P.D.: Pongo aqui esta direccion porque me parece que es muy interesante relacionada con el tema, aunque supongo que la inmensa mayoria ya la conocereis ( de hecho no estoy seguro de que no la haya visto en algun otro threath de este foro ...)
http://sol.gfxile.net/gp/ch02.html -> Un tutorial bastante completo de SDL
Puck2099
10/10/2005, 19:07
Mírate esta web: SDL4GP32 (http://sdl-gp32.sourceforge.net/)
Ahí tienes las librerías precompiladas para la GP32 y su código fuente. También encontrarás varios ejemplos con su código fuente listos para ser compilados para GP32/Linux/Windows.
Saludos
thamurath
10/10/2005, 19:46
Muchas gracias por la pagina ... por cierto, hay tres ficheros SDLgp32 SDL_mixer y SDL_image supongo que ambos tres son necesarios ...
Viendo el codigo me surge una duda ... Se supone que las SDL son una capa intermedia standar, por lo que los juegos son portables entre plataformas, pero para hacer cosas que son propias de la GP32 y no de otras plataformas ( averiguar si se ha pulsado tal o cual tecla, poner la velocidad del reloj , ... ) se sigue usango el API de Gamepark?
Puck2099
10/10/2005, 19:53
Muchas gracias por la pagina ... por cierto, hay tres ficheros SDLgp32 SDL_mixer y SDL_image supongo que ambos tres son necesarios ...
Para la GP32 con que bajes las "Precompiled libraries and headers" es suficiente. Luego mete todo lo que encuentres ahí.
Viendo el codigo me surge una duda ... Se supone que las SDL son una capa intermedia standar, por lo que los juegos son portables entre plataformas, pero para hacer cosas que son propias de la GP32 y no de otras plataformas ( averiguar si se ha pulsado tal o cual tecla, poner la velocidad del reloj , ... ) se sigue usango el API de Gamepark?
No exactamente.
Las SDL son una capa intermedia sí, pero para averiguar si se ha pulsado una tecla u otra en la GP32 también tienes que hacer uso de ellas. Están mapeados los botones de la GP32 a ciertas teclas de un teclado (la cruceta a las flechas, el A creo que al Control, etc.), mira en los archivo o ejemplos, que en algún lado están especificados.
Para finalizar, el tema de la velocidad de reloj y ciertas cosas más están implementados en una librería llamada X o algo así (hablo de memoria) que se curró Chui.
Lo mejor es que te abras alguno de los ejemplos que hay en esa web y eches un vistazo, verás como declara la velocidad del procesador y demás :)
Saludos
Wonder Boy
10/10/2005, 20:33
Ha mejorado mucho la web de la SDL para GP32 desde la última vez la ví, ahora hay muchos ejemplos... está muy guapa.
Editado: Hay una cosa que no perdono X-D ... y es que no esté en español (pienso que a veces se tiene una dependencia exagerada hacia el inglés)... la verdad es que me pone muy triste éstas cosas :-( pero bueno, ya sé que ésto es una elección del creador.
Un Saludo.
thamurath
10/10/2005, 20:54
No exactamente.
Las SDL son una capa intermedia sí, pero para averiguar si se ha pulsado una tecla u otra en la GP32 también tienes que hacer uso de ellas. Están mapeados los botones de la GP32 a ciertas teclas de un teclado (la cruceta a las flechas, el A creo que al Control, etc.), mira en los archivo o ejemplos, que en algún lado están especificados.
Para finalizar, el tema de la velocidad de reloj y ciertas cosas más están implementados en una librería llamada X o algo así (hablo de memoria) que se curró Chui.
Lo mejor es que te abras alguno de los ejemplos que hay en esa web y eches un vistazo, verás como declara la velocidad del procesador y demás :)
Saludos
Vale, ya lo he visto ( mas o menos ) la siguiente pregunta es obligada ... ¿De donde saco la libreria x_GP32de Chui?
Puck2099
10/10/2005, 20:54
Vale, ya lo he visto ( mas o menos ) la siguiente pregunta es obligada ... ¿De donde saco la libreria x_GP32de Chui?
Mira en los ejemplos ;)
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.