Allegro
Libreria para desarrollo de juegos multiplataforma.
- Es opensource y funciona con GCC (además de otros compiladores)
- Nos provee una capa que logra abstraer el hardware logrando que las aplicaciones sean portables.
- El por que del nombre: Allegro Low LEvel Game ROutines.
Instalando Allegro
(en Ubuntu trusty 16.04LTS)
version 4
apt-get install liballegro4.4 liballegro4-dev allegro4-doc
version 5 (recomiendo esta)
apt-get install liballegro*5-dev liballegro5-dev allegro5-doc
No recomendado, pero posible:
Instalando desde el código fuente (en inglés)
Instalando Allegro
(otros Ubuntu y Debian)
Versiones de Allegro disponibles:
apt-cache search allegro | grep library
Paquetes ya instalados:
dpkg --get-selections | grep allegro
Instalando Allegro
Paquetes y Distribuciones:
- Debian:
- Paquete liballegro4-dev en wheezy y jessie
- Paquete liballegro5-dev solo en jessie
- Ubuntu:
- Paquete liballegro5.0 en trusty (14.04LTS)
- Paquete liballegro4.2-dev en precise (12.04LTS)
Documentación y ejemplos
(que vienen con la instalación)
Programando en Allegro
Conceptos básicos: Display
- Por defecto, se cuenta con 2 buffers para dibujar sobre la pantalla:
- Se escribe en el buffer de pantalla el contenido a mostrar
- al_flip_display() cambia entre ellas
- Ejemplos de manejo de display:
- Como crear un display: al01_display.c
- Trabajando en fullscreen: al02_screenres.c
- En mi máquina Thinkpad SL410 con Ubuntu 16.04 tiene problemas.
- Debo repetir: al_clear_to_color()+al_flip_display() 3 veces y se "arregla".
Programando en Allegro
Conceptos básicos: Eventos1
- En Allegro trabajamos con eventos:
- Se almacenaran en una cola (FIFO) de Eventos
- Los eventos pueden ser de teclado, mouse, ventanas, temporizadores o incluso eventos creados por el usuario
- Como hay distintas fuentes que producen eventos, debemos poder detectar el tipo.
Programando en Allegro
Conceptos básicos: Eventos2
- Allegro provee constantes para la detección de eventos:
- ALLEGRO_EVENT_DISPLAY_CLOSE
- ALLEGRO_EVENT_TIMER
- ALLEGRO_KEY_ENTER
- ALLEGRO_EVENT_KEY_DOWN
- Muchos mas...
- Ejemplo (MUY SENCILLO) de manejo de eventos, solo para ver la estructura: al03_events.c
Programando en Allegro
Conceptos básicos: Timers1
- Marcan el tiempo de la aplicación:
- Pueden regular el refresco de la pantalla
- La demora entre una recorrida por la pantalla
- La demora en explotar una bomba
- Para realizar acciones en un determinado tiempo
- Etc...
- Son programables y pueden existir varias corriendo al mismo tiempo
- Permiten manejar el concepto de FPS (Frames Per Second)
Programando en Allegro
Conceptos básicos: Timers2
- Ejemplo (MUY SENCILLO) de uso de timers: al04_timers.c
- Ejemplo de timers cambiando el color de la pantalla (inspirado en el anterior): al04_timers2.c
Programando en Allegro
Conceptos básicos: Formas
- Es posible dibujar formas geométricas:
- al_draw_triangle
- al_draw_rounded_rectangle
- al_draw_rectangle
- al_draw_circle
- al_draw_ellipse
- al_draw_arc
- al_draw_line
Programando en Allegro
Conceptos básicos: Bitmaps
- Se puede dibujar un bitmap directamente en pantalla: al05_bitmaps.c
- Es posible cargar una imagen desde archivo: al06_bitmapload.c
- Los bitmaps pueden ser dibujados en una posición especifica de la pantalla
- También se le pueden aplicar efectos y filtros (como transparencias).
Programando en Allegro
Conceptos básicos: Mouse y teclado
- El teclado y el mouse son fuentes de eventos.
- Es posible detectar los botones del mouse y las coordenadas X e Y para saber donde se produjo el click.
- Es posible detectar cuando se presiona una tecla y también cuando se suelta.
- Por supuesto también podremos distinguir que tecla fue presionada
Programando en Allegro
Conceptos básicos: Sprites
Bajar un archivo con todos los ejemplos
- Para sprites vamos a necesitar transparencias: 1_Transparency1.c y 1_Transparency2.c
- Animación básica sin sprites: 2_BasicAnimation.c
- Creando un "Sprite Sheet" desde BMPs: 3_CreateSpriteSheet.c
- Animación usando la "Sprite Sheet": 4_SpriteSheetAnimation.c
Programando en Allegro
¿Necesitamos hacer los sprites?
¿Y sonidos?
Bibliotecas:
Programando en Allegro
Conceptos básicos: Gameloop
- El while(1) que uno nunca usaria...
- Es una máquina de estados!!
- Fundamental el manejo de eventos y timers
Programando en Allegro
Conceptos básicos: Gameloop
Ejemplo de juego "sencillo" (38+363 lineas): Bajar el zip
Adaptado de fixbyproximity.com
Resumen y material adicional de fixbyproximity.com
Algunas aclaraciones importantes sobre el material original:
- Esta en inglés
- Fue realizado para Visual C++. Los ejemplos que acá vemos/resumí los he modificado para que compilen en Linux con GCC. Los originales usan algunas cosas de C99 y Cpp/OjectiveC.
- Varios de los capitulos originales son acompañados con un video explicativo (en inglés).
Programando en Allegro
Conceptos básicos: Addons
Permiten extender Allegro. Los mas comunes:
Programando juegos
Algunos de los conceptos generales de juegos son:
Estos conceptos son mucho mas sencillos de aplicar en 2D, pero también se pueden extender al desarrollo 3D.
Librerias para manejo de log
Otras librerias
Installing guichan (for Allegro)
sudo apt-get install libguichan-allegro-0.8.1-1