SFMLML : Une bibliothèque multimédia simple et efficace pour Caml

Présentation

Qu'est-ce que la SFML ?

La SFML (Simple and fast multimedia library) est une bibliothèque multimédia pour la création d'applications multimédias 2D (comme des jeux). C'est à l'origine une bibliothèque pour le langage C++, et ce projet n'a rien d'officiel.

Qu'est-ce que Caml ?

Bon, si vous lisez cette page, vous devez sans doute déjà connaitre la réponse. Sinon, allez sur le site de l'INRIA.

Quel est son avancement ?

Les modules System et Window sont terminés et (visiblement) fonctionnels. Le module Graphics est bientôt terminer (il ne lui manque que les Shapes et PostFX). Le module Audio va bientôt suivre (disons pour janvier). Le module Network n'est pas prévu pour l'instant (mais si quelqu'un en fait la demande, alors si).

Est-elle stable ?

N'étant pas du tout d'une version terminée, il est clair que ce n'est pas une version stable, alors il est possible que vous rencontiez des bogues.

Exemple de code

Voilà un code bien inutile qui affiche une image qui suit le pointeur de la souris

 
open Sfml;;
 
(* Cree une fenetre (renderWindow) *)
let win = new renderWindow(videoModeFrom 800 600 32, "HelloWorld", FixedBarClose);;
 
(* Cree un sprite et ouvre une image *)
let s = new sprite();;
let img = new image(File("terre.png"));;
s#setImage(img);;
s#setY 200.;;
 
(* Cree une chaine de caractere *)
let hello = new sfString();;
w#showMouseCursor false;;
let ft = font_createfromfile "police.ttf" 48;;
hello#setFont(ft);;
hello#setText "Hello World !";;
hello#setSize 48.;;
hello#setX 200.;;
 
(* Variables utiles *)
let ev = ref NullEvent;;
let b = ref true;;
 
while !b do
	let eventEnCours = ref true in
	let ipt = w#getInput in
	w#drawSprite s;
	w#drawString hello;
	w#display;
	s#setX (float_of_int(ipt#getMouseX));
	s#setY (float_of_int(ipt#getMouseY));
 
	(* Tant qu'on peut récuperer des évenements *)
	while !eventEnCours do
		ev := w#getEvent;
		match !ev with
			(* Fenetre fermée *)
			Other(EvtClosed) -> b := false
			(* Event "vide" *)
			| NullEvent -> eventEnCours := false
			(* Cas général *)
			| _ -> ()
	done;
done;;

La bibliothèque

Points importants

Documentation

Elle est accessible ici.

Téléchargement

Installation

Ce programme nécessite d'avoir au préalable installé la SFML : Téléchargement de la SFML

Compilation

Pour ouvrir une console OCaml, lancer, dans le dossier où se trouve la bibliothèque : ocaml sfml.cma.
Pour compiler un projet : ocamlc libsfmlml.a sfml.cma [...] -cclib "-lsfml-graphics -lsfml-window -lsfml-system".
Note : sous Windows, il est nécessaire d'ajouter l'option -cc "g++"