2009-07-08 25 views
15

Me gustaría experimentar un poco con Haskell, y espero escribir un pequeño juego de arcade 2D (Tetris o Breakout). ¿Me puede recomendar una biblioteca de gráficos simple que me ayude a comenzar rápidamente?Biblioteca de gráficos Haskell simple?

Por cierto, he estado experimentando con SDL y wxWidgets, pero que aún no han tenido éxito en la gestión de las muestras debido a problemas de dependencia, trabajando en ello ...

+1

Es extremadamente importante que una de las primeras cosas que hagas es descargar Cabal Install. Sin eso, la gestión de la dependencia es horrible. – Rayne

+0

Cabal es genial, definitivamente deberías descargarlo.Pero no resuelve el problema de la falta de bibliotecas nativas subyacentes. Muchas bibliotecas (p. Ej., WxWidgets, OpenGL, probablemente GTK) simplemente no están incluidas en el paquete Cabal. – rtperson

+0

Acabo de echar un vistazo al GTK2HS de Haskell, e incluye la pila completa de GTK (lo cual es bueno). Desafortunadamente, no tiene un paquete Cabal (no es tan bueno), y su instalador requiere GHC 6.10.3. No es "6.10.3 o superior", solo "6.10.3". Bastante fácil de evitar, pero aún ...: P – rtperson

Respuesta

11

No es exactamente una biblioteca "simple", pero hay mucha información en línea sobre OpenGL y GLUT, así como algunos tutoriales muy buenos y un montón de código de ejemplo.

El mayor problema al que se enfrenta es que los enlaces OpenGL y GLUT en Haskell no incluyen las bibliotecas a las que se enlazan. (Esto también se aplica a wxWidgets). Muchas distribuciones de Linux vienen con binarios OpenGL incluidos, pero no Windows. Se suponía que el Haskell Platform solucionaba esto, pero no me pareció a mí.

Así, suponiendo que va a instalar en Windows, esto es lo que yo recomiendo que pruebe:

  1. Siga las instrucciones in this blog a la carta. Son complicados, involucran instalaciones de MinGW, MSys y compilación manual de un proyecto GLUT de SourceForge, pero es la única forma en que he hecho funcionar OpenGL. Ahora instalé con éxito en tres máquinas separadas, incluyendo XP y Vista, así que puedo decir con seguridad que estas son muy buenas direcciones.
  2. Una vez que funciona, consulte estos twoawesome tutoriales. Realmente me abrieron los ojos sobre lo poderoso que Haskell puede ser cuando se trata de gráficos. Encontrará que el código involucrado es mucho más simple de lo que pueda haber anticipado.
  3. Echa un vistazo a los juegos de ejemplo en el Haskell OpenGL page. Son muy experimentales, lo cual es bueno, ya que significa menos código para navegar que el que encontrarás en un sistema de producción, pero también son sorprendentemente sofisticados. (Y sí, ya hay más de una implementación escueta de Tetris, pero no dejes que eso te detenga).
  4. Otra buena fuente de código de muestra es el enlace GLUT de Haskell. Busque el directorio de ejemplos y encontrará muchos puertos de código de muestra del OpenGL Red Book.

OpenGL es muy asertivo, por lo que es posible que el código de Haskell sea un poco desalentador si aún no has asimilado completamente las Monad. Estoy usando mis experimentos de OpenGL como motivación para finalmente concentrarme en el concepto.

¡Buena suerte!

+0

El estado de OpenGL está todo en la mónada de IO, por lo que la práctica puede ayudar con los conceptos básicos de las mónadas, pero no ayuda al generalizar a otras mónadas que hacen cosas mucho más útiles que simplemente hacer un seguimiento del estado del mundo . – ephemient

+0

No quiero quejarme demasiado; OpenGL/GLUT parece un buen comienzo para OP, aunque no es muy Haskell-ish. Personalmente utilizo Gtk2Hs con sus enlaces GtkGlArea, ya que es más bonito que GLUT sin procesar, pero no importa qué maneje Windows una vez que llegue a OpenGL. – ephemient

+0

No he jugado con GTK. Obtuve wxWidgets trabajando primero, así que hice mis experimentos de interfaz de usuario con él. Pero voy a probarlo ahora en su recomendación. Estoy de acuerdo contigo en lo de la mónada: la mónada IO es una bestia bastante aburrida, pero es un buen lugar para comenzar. Mi objetivo final es llegar a las flechas para probar la programación reactiva con Yampa. En este momento, todos los conceptos están volando sobre mi cabeza, pero estoy empezando a juntar las piezas. – rtperson

1

Cairo está escrito en C, pero tiene enlaces de Haskell , Tal vez intentar eso podría ser una buena idea. Solo he usado sus enlaces de pitón, pero esos parecían funcionar bien.

4

¿Ha leído detenidamente las siguientes listas:

Haskell Graphics Libraries: Parece que hay un buen número de interfaces para OpenGL, SDL, y otras librerías gráficas aquí.

Haskell GUI: Aquí también hay algunas librerías wxWidget.