2010-08-01 12 views
9

Quiero aprender Ocaml o Haskell y quiero hacerlo escribiendo un juego simple. Aparentemente, hay un pequeño problema: a nadie le importa Windows y quiero hacerlo en Windows, de forma nativa.Haskell u Ocaml con distribución precompilada de OpenGL y SDL para Windows

Haskell tiene Cabal, que tiene SDL, pero no se crea debido a un problema trivial sin soluciones (orden de los parámetros pasados ​​a gcc). Ocaml ni siquiera tiene eso, todo está en paquetes fuente, ya sea GLCaml u OcamlSDL o lo que sea.

¿Hay algún lugar donde pueda obtener un SDL en funcionamiento para Haskell u Ocaml en Windows sin pelear con una docena de versiones de compiladores?

+1

Godi y OASIS son dos sistemas tipo Cabal para OCaml, pero no los propongo como respuestas porque no sé qué tan bien funcionan en Windows. –

+2

Eso es realmente un gran problema, me enfrenté al mismo problema hace un año, pero renuncié y diseñé mi juego en Ubuntu con OCamlSDL, aquí hay un enlace al juego si está interesado http://web.martani.net/worms – 0xFF

+0

Comience con la Plataforma Haskell para Windows: http://haskell.org/platform –

Respuesta

5

La plataforma Haskell viene con un enlace a OpenGL que debería funcionar de inmediato en Windows.

Con respecto al paquete SDL en hackage, puede usar cabal unpack SDL para obtener el código fuente y arreglarlo usted mismo. Para instalar el paquete con sus cambios, ejecute cabal install en el directorio descomprimido. En cualquier caso, deje caer una línea al mantenedor, estoy seguro de que lo ayudará.

+0

el problema AFAIK ni siquiera está en el paquete; [Aquí hay una explicación más detallada] (http://jpmoresmau.blogspot.com/2010/05/haskell-sdl-on-windows-check-hacking.html). – Baczek

+1

Ah, ¡puaj! El problema de que la biblioteca SDL redefine su función 'main' con una macro CPP. ¡La función 'main' real está en la DLL!Esta es probablemente la razón por la cual los argumentos del enlazador deben intercambiarse. En resumen, la culpa recae en libSDL, cuyo diseño no funciona bien con ningún tipo de interfaz extranjera. –

+0

Supongo que su único recurso es instalar temporalmente una versión personalizada de hsc2hs con la solución de JP Moresau. O puede ser realmente astuto y reemplazar GCC con un programa envoltorio que intercambia los argumentos antes de pasarlos al GCC real. –

1

No está relacionado con SDL, pero usted ha mencionado OpenGL. Hay LablGL vinculante para OpenGL en OCaml que funciona de la caja. El ejemplo Wiki (http://en.wikipedia.org/wiki/Objective_Caml#Triangle_.28graphics.29) compila y funciona perfectamente.

+0

Parece que solo es compatible con la antigua variante de OpenGL - No veo programas de vértices/fragmentos, etc. – Baczek

+0

@Baczek: Como dije en mi respuesta, los enlaces GLCaml admiten vértices y fragmentos sombreadores y los he usado . Sin embargo, si tiene la intención de distribuir lo que escribe, desaconsejaría usar OCaml o Haskell para esto. –

1

Las mejores instrucciones que he encontrado para hacer que SDL funcione en Windows con la plataforma Haskell más reciente se pueden encontrar en this blog. Seguí todo paso a paso y funcionó perfectamente, a pesar de algunos mensajes de error de configuración.

1

No es SDL pero GLFW funciona en Windows con Haskell a través de Cabal.

0

Mi artículo High-fidelity graphics with OpenGL 2 (25 de febrero de 2008) explicaron cómo las fijaciones GLCaml se pueden utilizar para escribir aplicaciones basadas en OpenGL en OCaml que utilizan vértices y sombreadores de fragmentos (un sombreado Phong se da como un ejemplo). Hay en el OCaml Journal en OpenGL, aunque la mayoría usa la biblioteca LablGL anterior para OpenGL 1.1.

Intenté y no conseguí OpenGL trabajando desde Haskell bajo Linux en 2007. El Haskell Platform puede haber cambiado eso pero ni siquiera he tenido tiempo de probarlo ni escuché de nadie usándolo para esto.

Sin embargo, tanto OCaml y Haskell deben confiar en encuadernaciones de bajo nivel frágiles a OpenGL porque son lenguas independientes y nadie ha conseguido ningún software comercial significativo utilizarlos para trabajar. Como está en Windows, F # + XNA es una opción mucho más lógica porque XNA está probado y probado y F # tiene una interfaz segura de alto nivel. Una pelea de Google le da una buena idea de lo pionero que será: +haskell +opengl da 437 visitas en Google y +ocaml +opengl da solo 347 visitas.

+1

Desafortunado que la respuesta más pragmática, especialmente el último párrafo, se downvoted. –