En Project Football hemos llegado al que se puede considerar el primer bache en el camino de su desarrollo.
Para el sistema de sonido de Project Football habíamos estado barajando varias alternativas, saliendo ganadora OpenAL principalmente por ser multiplataforma y permitir un entorno 3D donde reproducir audio. Esto último no era un requisito de Project Football, pero dado que la biblioteca lo permitía nos dijimos ¿por qué no?, así en un futuro se le podría buscar un uso a esa característica. Sin embargo la elección no ha sido tan acertada como esperábamos.
El primer problema que hemos encontrado se produce al reproducir un sonido estéreo (por ejemplo, una canción), esta se escucha en mono. Indagando en el código fuente de OpenAL hemos descubierto que esto es así porque al pasarle los datos, estos los convierte a una forma canónica interna que contempla un único canal de sonido. Sin embargo, probando a pasar los datos con otra función (para el que quiera indagar más : alBufferWriteData_LOKI) que permite especificar el formato interno en el que se almacena, el sonido no se reproduce correctamente, apareciendo ruidos y distorsiones.
El segundo problema se debe a que OpenAL parece que no es tan portable como esperábamos. Mientras que en unos sistemas funciona mas o menos correctamente (con la limitación comentada en el párrafo anterior), en otros lo hace de forma errática, produciendo ruidos y/o distorsiones o no reproduce ningún sonido en absoluto. Esto si lo consideramos un fallo grave por parte de la biblioteca, ya que presenta un comportamiento distinto en función del sistema en el que se encuentra.
A esto se une el hecho de que parece que el desarrollo de OpenAL anda algo muerto como se cuestionan recientemente en este hilo de
GameDev.net (en inglés) o como se puede comprobar en la propia página oficial de
OpenAL (en inglés), donde la última noticia es de hace más de un año. Y aunque ha surgido no hace mucho
OpenAL Soft como una implementación alternativa mediante software, de las especificaciones de OpenAL y se le presuponen muchos menos fallos que la implementación actual, consideramos que su estado actual de desarrollo es demasiado temprano y su futuro todavía incierto.
Es por ello, que nos hemos visto obligados a cambiar nuestras intenciones iniciales y buscar otra alternativa para el sistema de sonido de Project Football. Dado que un entorno 3D para el audio no es un requisito indispensable para Project Football, y como bien me ha recordado mi compañero Dividio que nos decía nuestro profesor de SSOO de la facultad:
"No hagas hoy lo que puedas dejar para mañana, porque quizás pasado ya no te haga falta"
hemos pensado en varias alternativas puramente 2D, como pueden ser
SDL_mixer o
PortAudio, ambas con licencias libres y multiplataforma.
Esperamos vuestras opiniones mientras que nos decidimos por uno u otro sistema.
Que openAL no vaya bien en otras plataformas si que es un escollo gordo :S
De todas formas, seguiré pendiente de la evolución de OpenAL Soft.