[ Dudas sobre el curso de programación de juegos ]

¿Cómo instalar librería Allegro 4.4.0.1?

13-Jan-2010 02:05
Marc Krs.
8 Respuestas

Hola, instalé el pack del devcpp + allegro que colgaste en la web y hasta el momento me ha ido bien. Ahora quiero instalar una versión más moderna de Allegro, concretamente la 4.4.0.1 y no sé cómo hacerlo. La razón és que las versiones más modernas incluyen por ejemplo el cargar formatos de imágen tipo "PNG" y así podría cargar sprites con transparencias y sin fondo.

Para empezar con el pack manager buscando no encontré colgada ninguna versión mas reciente que la 4.2 y no me sirve, así que baje la 4.4.0.1 desde google que es la última versión estable de ésta librería.

Ahora viene cuando lo matan, intenté instalarla mediante el pack manager y lo único que hace es descomprimir el .rar descargado en la carpeta raíz del devcpp. En contenido de dicha carpeta que extrae no existe ningún devpack ni nada por el estilo, adjunto una imágen de lo que hay:

http://img193.yfrog.com/i/aleg.jpg/

Dicho esto, me gustaría saber que hay que hacer para instalar ésta libreria para devcpp en Windows xp, porque aparte de copiar las cabeceras y librerias hay que compilarlo, linkarlo y no sé cuantas más cosas que nunca había hecho.

Y éste és el link a la librería:

http://sourceforge.net/projects/alleg/

Gracias de antemano y un saludo!




16-Jan-2010 22:56
Nacho Cabanes (+32)

Pues me temo que lo tienes (todavía) un poco difícil:

Era habitual que hubiera "binarios para Windows" de Allegro, adaptados a cada compilador frecuente. Si fuera el caso, deberías dejar los ficheros .DLL, los .h y la librería en sí (típicamente .lib o .a) en las carpetas correspondientes a tu compilador.

Pero parece que ni con la última estable (4.4.0.1) ni con las de desarrollo (4.9.x) hay elaborados binarios para Windows ni DevPaks. Por tanto, la única forma de hacer funcionar la librería sería recompilando los fuentes, que es la descarga "normal" para la versión 4.4.0.1, y eso no suele ser fácil, porque normalmente exige que tengas el SDK (kit de desarrollo de software) de DirectX, y en la página de Allegro hay alguna versión recortada pero antigua.

Pero si es sólo por dibujar imágenes transparentes, no necesitas cargar PNG, porque la función "draw_sprite" soporta transparencia, o bien con el color 0 (si la imagen es de 256 colores) o bien el "rosa mágico" (255,0,255) si es "true color".

Tienes más detalles en el propio manual de allegro:

http://www.allegro.cc/manual/api/blitting-and-sprites/draw_sprite


17-Jan-2010 01:01
Marc Krs.

Gracias por la respuesta, ya había escuchado sobre ese color rosa que se interpretaba como transparencia.

El sprite lo estoy cargando de la siguiente manera:


mario_spr = load_bmp("imagenes/sprites/mario_spr.bmp", NULL);
mario4 = create_bitmap(56,48);  
blit(mario_spr, mario4, 0, 48, 0, 0, 56, 48);
draw_sprite(screen, mario4, xMario, yMario);


El fondo del .bmp donde puse los sprites era blanco, así que lo cambié por ese rosa pero no lo interpreta como transparencia, sinó que lo muestra. ¿Cómo se debe hacer entonces?

Para que no haya dudas estoy trabajando con colores reales.
Gracias y un saludo.


17-Feb-2010 01:04
Nacho Cabanes (+32)

Perdona, Marc, se me había pasado responderte. Los pasos que das son correctos, así que debería funcionar. Falta parte del fuente, pero tienes que inicializar en un modo gráfico True Color (24 bits o más). Tampoco has adjuntado la imagen, que debe ser de 24 bits y tener el contorno (o las zonas transparentes interiores) con el color "rosa mágico" (255,0,255).

Yo lo acabo de probar y me ha funcionado. He hecho lo siguiente:

- Crear un proyecto vacío de Allegro a partir de una de las plantillas de Dev-Cpp.

- Incluir tu fragmento de fuente (junto con las declaraciones de variables).

- Coger una imagen JPG que tenía fondo blanco, convertirla a BMP de 24 bits, y pintar parte del fondo con el rosa (255,0,255) usando simplemnte el Paint de Windows.

- Compilar y lanzar el programa, y las zonas rosas se ven negras, como el fondo, luego la transparencia ha funcionado correctamente.


Adjunto el fuente completo por si quieres ver la inicialización, pero insisto: es la plantilla de ejemplo Dev-C++

---

#include <allegro.h>

void init();
void deinit();

int main() {
init();

   BITMAP *mario_spr;
   mario_spr = load_bmp("imagen.bmp", NULL);
   BITMAP *mario4;
   mario4 = create_bitmap(56,48);  
   int xMario = 100, yMario = 100;

while (!key[KEY_ESC]) {
         blit(mario_spr, mario4, 0, 48, 0, 0, 56, 48);
         draw_sprite(screen, mario4, xMario, yMario);
}

deinit();
return 0;
}
END_OF_MAIN()

void init() {
int depth, res;
allegro_init();
depth = desktop_color_depth();
if (depth == 0) depth = 32;
set_color_depth(depth);
res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
if (res != 0) {
allegro_message(allegro_error);
exit(-1);
}

install_timer();
install_keyboard();
install_mouse();
}

void deinit() {
clear_keybuf();
}


11-May-2010 02:55
Marc Krs.

Hola, la solución del color rosa como fondo de las imágenes me funcionó de maravilla para las transparencias pero éste método se me está quedando "corto". Estoy manejando un montón de sprites y la imagen contenedora al ser formato ".bmp" pesa bastante, así que las convertí a ".pcx" para ocupar menos espacio. Definitivamente me gustaría estar cargando "pngs" ya no sólo por las transparencias sino por lo poco que ocupan éstas imágenes.

Estuve buscando y encontré el modo de hacerlo, necesitaba descargar estas 3 librerías:

loadpng -> http://devpaks.org/details.php?devpak=57
libpng -> http://devpaks.org/details.php?devpak=28
zlib -> http://devpaks.org/details.php?devpak=74

Instalé los devpacks mediante el package manager del Dev-Cpp pero con eso no basta. Hay que hacer lo siguiente según las instrucciones:

"Para compilar, tan sólo ejecute "make" (o tal vez "mingw32-make"). Para utilizar loadpng, necesita vínculo con libpng, zlib, además de loadpng.

Por ejemplo:

gcc-mijuego.c lldpng-lpng-lz-lalleg"

Perdona mi ignorancia pero nunca he usado el make y no sé cómo lo debo hacer, los linkers sé que están en opciones de proyecto en el Dev-Cpp pero no estaría de más saber cómo se debe hacer correctamente.

Un saludo!


16-May-2010 20:09
Nacho Cabanes (+32)

Tienes razón. Usar herramientas como el "make" es algo natural en Linux (en todos los Unix), pero suele ser problemático en Windows.

Voy a ver si puedo preparar un paquete completo listo para descargar, pero con la última versión de Allegro, y te cuento algo de aquí a un par de días (quizá no pueda verlo hoy mismo).

Si no lo conseguimos, quizá te toque pasarte a SDL, que sí incluye sub-librerías para mostrar imágenes PNG y JPG.


06-Jun-2010 13:24
Nacho Cabanes (+32)

He descargado la última versión estable la 4.4.1.1 (las versiones UnStable de van acercando a la 5, en este momento van por la 4.9.20).

Pero hay un problema... me temo que sus creadores se han pasado al lado oscuro ;-)  y realmente no usan MAKE, sino CMAKE, que no se incluye con Dev-C++, sino con herramientas como Visual Studio, de modo que no se puede instalar (al menos no con facilidad) sobre la versión de Dev-C++ que dejé preparada para descarga:

http://www.nachocabanes.com/videojuegos/ipj/ipj01_devc.php

sino que es necesario usar Visual Studio o al menos el SDK de DirectX y alguna otra herramienta adicional, como cuentan en este hilo del foro de la página oficial de Allegro:

http://www.allegro.cc/forums/thread/603690

He probado a descrgar la versión binaria de CMake (http://www.cmake.org/cmake/resources/software.html),  y tampoco lo he conseguido, ni desde línea de comandos ni desde el entorno gráfico (que se cierra con errores cada dos por tres...)

Como Dev-C++ es un entorno que no se actualiza, intentaré probar con alguna de las alternativas recientes basadas en WxWidgets, como CodeLite, pero todavía falta un par de semanas hasta que empiece a tener el tiempo necesario para sentarme con calma y probarlo "razonablemente a fondo". Si quieres ir jugando con este entorno, lo puedes descargar aquí:

http://codelite.org/


06-Jun-2010 13:55
Nacho Cabanes (+32)

Al final sí he podido instalar la versión 4.4.0.1, pero no encuentro ninguna referencia a ficheros PNG ni en los ficheros de cabecera (".h", carpeta "include") ni en la librería en sí (".a", carpeta "lib").

Por si quieres repetir los pasos y probar, lo que he hecho ha sido:

- Descargar la versión 4.4.0.1 para Dev-C++ desde el sitio oficial de recopilación de DevPaks:

http://devpaks.org/details.php?devpak=284

- Instalarla usando PackMan (que tendrás en la carpeta principal de Dev-C++)

- Crear un proyecto de prueba, a partir del proyecto vacío de ejempo, y ampliándolo para que mostraba una imagen en formato PCX, para comprobar que todo estaba bien instalado.

- Ojear los ficheros .h y .a en busca de alguna referencia al formato PNG... sin suerte. (Por supuesto, el cambiar load_pcx por load_png no compila, y el cambiarlo por load_bmp y cruzar los dedos tampoco ha funcionado ;-) )


06-Jun-2010 14:29
Marc Krs.

Muchas gracias por tus ganas de ayudar! Si de veras és tan complicado no hace falta que te molestes en intentar solucionar el problema, porque aún así me las puedo apañar con el paquete que preparaste de la versión 4.2

Quizá lo más razonable sería que cambiase de herramienta/s como tú dices. De hecho como alternativa instalé ésta misma librería (4.2) para codeblocks en un ubuntu, a ver si soy capaz de actualizarla o instalarle alguna librería adicional.

De nuevo muchas gracias Nacho, un saludo =)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)