manuales:graficos_y_sonido:graficos_y_sonido [Superglús]
 Superglús   Sistema de autoría de aventuras conversacionales Inicio



Entendiendo Glulx

Glulx es una máquina virtual, lo cual quiere decir que es como una maquina real (un PC o un Mac) pero inventada. Como tal máquina tiene unas especificaciones, en cuanto a que memoria tiene, de cuantos bits es (32 bits en el caso de Glulx), como accede a los disco, etc.

El caso es que como esta máquina no existe lo que hay es una especie de ‘emuladores’ de esta máquina para distintas plataformas reales (Windows, Linux, etc.). Dichos emuladores son los llamados intérpretes.

Las ventajas de esto son notables, pero la principal es que si uno programa para Glulx, el programa (aventuras en nuestro caso) que se genera podrá ser ejecutado en cualquier plataforma en la que haya un intérprete.

Esta ventaja que es importante tiene sin embargo alguna contrapartida: como la máquina Glulx puede ser interpretada en distintas plataformas la definición de Glulx es vaga, y esto quiere decir que no todo lo que da Glulx funcionará en todos los intérpretes. Fundamentalmente esto se manifiesta en los gráficos y el sonido.

Imaginemos un juego para Glulx ejecutándose en un PC: podríamos tener unos gráficos a una alta resolución con una cierta facilidad en un PC moderno pero… ¿Qué pasaría con esa aventura ejecutada en un PocketPC o en un teléfono móvil, con resoluciones de pantalla muy inferiores? Incluso es posible que nos encontremos con que nuestra aventura se ejecuta en una consola de terminal de unix, sin capacidad gráfica.

Glulx solventa esto de una peculiar manera, y es dejar en manos de cada intérprete qué hacer en caso de que le pidan pintar un gráfico o tocar un sonido. Y los intérpretes, todos responde a esas llamadas, algunos pintando el grafico (por ejemplo) y otros ignorándolas.

Esto permite que nuestra aventura se pueda ejecutar en cualquier plataforma, pero que no podamos asegurar que se verá u oirá igual en todas. No obstante las plataformas más extendidas: Windows, Linux y Macintosh, tienen intérpretes muy similares, por lo que se verá de manera muy similar.

Gráficos en Superglús

Superglús mantiene una lista de gráficos de localidad que, en caso de existir, producen el siguiente efecto al describirse la localidad:

  1. La pantalla se divide en dos (en principio por la mitad por defecto), dejando la parte de arriba para el gráfico
  2. El gráfico es pintado en la zona de gráfico, al mayor tamaño que se pueda y que no le haga ser deformado. Esto implica que pueden quedar bandas negras a los lados o arriba y abajo, dependiendo del tamaño del gráfico y de la resolución de pantalla o tamaño de la ventana donde se este ejecutando el juego.

Para asignar un gráfico a una localidad en Superglús debemos hacer lo siguiente en la zona de declaraciones:

##define pic fichero.jpg localidad

por ejemplo:

##define pic casa.jpg 1

Así cuando se entre en la localidad 1 aparecerá el gráfico casa.jpg

Existe un caso especial, que es la localidad 0, que no tiene grafico asociado, y si se hace una definición de gráfico para la localidad 0 dicho gráfico será usado para las localidades oscuras en lugar de en la localidad cero.

Además, Superglús permite tener gráficos no ligados a una localidad en concreto, que podemos mostrar cuando queramos gracias al condacto PICTURE, y estos se definen así:

##define grf fichero.jpg numero

Es similar al anterior solo que debe acompañarse de un número que no tiene nada que ver con la localidad, evidentemente, sino que es un número positivo cualquiera que debe ser distinto para los diferentes ‘grf’.

Finalmente usaremos

PICTURE &&fichero.jpg

cuando queramos pintarlo.

Gráficos móviles y sprites en Superglús

Superglús, desde la versión 1.1, permite gráficos superpuestos, tipo sprites, que permite realizar gráficos móviles, y modificaciones de gráficos sin tener que tener graficos completos. Los detalles se entienden mejor en la documentación del condacto asociado: PICTUREAT.

Sonidos en Superglús

El sistema es muy similar al de los gráficos, pudiendo asignarse a localidades o ‘ir por libre’.

En este caso el formato es:

##define mus sonido.mod localidad

y

##define snd sonido.mod numero

para sonidos asociados y no asociados a localidad respectivamente.

Para tocar un sonido no asociado a localidad deberá usarse el condacto BEEP, cuya sintaxis es

BEEP &&sonido.mod canal repeticiones

Donde se indica que sonido tocar, el canal por el que suena (de 1 a 16), y el numero de veces que se repetirá (el valor 0 indica que se repite para siempre).

Nota:

En versiones anteriores a la 1.1 sólo había un canal de sonido, por lo que la sintaxis de BEEP era esta:

BEEP &&sonido.mod numero

Donde el segundo parámetro (numero) se mantenía por compatibilidad con PAW, pero no tenía utilidad alguna (podéis poner cualquier valor, por ejemplo 0)

Es posible en Superglús, si el interprete lo soporta, que suenen varios sonidos al tiempo, uno porque va asociado a localidad, y otros porque los hemos lanzado nosotros con BEEP. Esto es así porque Superglús utiliza dos canales distintos, el llamado ‘canal de sistema’ para las músicas ligadas a localidad que sonaran sin necesidad de que demos la orden explícitamente y los llamados ‘canales de usuario’, que necesitarán una orden BEEP para lanzar el sonido.

Cuidado, la nomenclatura puede ser confusa y hacer pensar que como sonido asociado a localidad sólo se pueden poner ‘músicas’ y que con BEEP sólo se pueden lanzar ‘efectos’. Nada mas lejos de la realidad, tanto como sonido asociado a localidad como siendo sonido independiente Superglús acepta sonidos MOD (generalmente músicas), sonidos AIFF (generalmente efectos), y sonidos OGG-Vorbis (cualquier cosa)

Sin embargo, desde la versión 1.1 el sonido asociado a localidad es cíclico (es decir, se repite indefinidamente), por lo que hay que pensarse si se pone un efecto de sonido ahí, porque podría resultar molesto.

Por último un detalle: es posible lanzar con BEEP un sonido asociado a localidad en otro sitio, lo cual nos puede evitar tener que incluir el sonido dos veces, una como ‘mus’ y otra como ‘snd’.

Por ejemplo:

##define mus samba.mod 7

y luego

BEEP &&samba.mod 1 1

Así el sonido samba.mod suena tanto al entrar en la localidad 7, como cuando pongamos el BEEP, pero en un caso suena por el canal del sistema y en el otro por uno de los de usuario.

Formatos soportados

Los formatos soportados por Glulx son:

  • PNG y JPG para gráficos.
  • AIFF, MOD y OGG para sonidos.

¿Por qué Superglús no soporta MP3, MID, BMP, etc.?

Como se dijo en el primer punto Superglús genera ejecutables para la máquina virtual Glulx, para la cual hay intérpretes para múltiples plataformas. Dichos interpretes no están programados por los autores de Superglús, por lo que para empezar no esta en nuestras manos.

Por otro lado los autores de estos intérpretes se basan en las especificaciones Glk, las rutinas graficas y de sonido entre otras cosas en las que se basa Glulx, y dichas especificaciones indican que formatos son compatibles Glulx o no.

Es posible que los autores de Superglús no estén de acuerdo con los formatos soportados pero no podemos hacer nada por cambiarlos, mas que dar la lata a Andrew Plotkin, el ‘cerebro’ detrás de Glk, pero eso lo podéis hacer también los autores de aventuras ¿no?

 

manuales/graficos_y_sonido/graficos_y_sonido.txt · Última modificación: 2010/01/27 11:12 por csanchez71