|
Licence 2ème année - Projet OcamlPilot |
|
Last update: 25-11-2023 |
7. Ressources
Pour vous aider dans votre mission, je vous propose quelques fichiers non
dénués d'un certain intérêt :
7.1. Ressources pour le TP 1
- Le fichier jeu.mli contenant les
définitions de type des objets gérés par le serveur.
- Le fichier jeu.cmi contenant la même
chose que le .mli, mais compilé en bytecode.
- La documentation ocamldoc de
l'interface jeu.mli
- Un nouveau toplevel supportant les threads, le module
graphics ainsi que les primitives unix et les fichiers d'aide pour la programmation
du client. Placez ce toplevel dans le répertoire dans lequel vous
développez OcamlPilot et donnez vous les droits en exécution :
chmod u+x mytop
Lorsque vous évaluez votre code sous emacs, demandez à ce qu'emacs
lance mytop plutôt que ocaml. Vous n'avez alors plus besoin de
placer des #load "graphics.cma";; et autres chargements de modules dans
votre code. Cela dit, vous avez toujours besoin des open Graphics.
- un Makefile pour pouvoir compiler vos
oeuvres sous Linux/Windaube. Pour regénérer les dépendances entre les fichiers
ocaml (make depend), vous aurez besoin du fichier
depend.awk.
7.2. Ressources pour vous aider à programmer le client
7.3. Ressources pour vous aider à programmer le serveur
7.4. Ressources pour vous aider à programmer le client 3D
- Le protocole suivi par le serveur 3D (ps
pdf php). C'est en fait le même qu'en
2D, à ceci près que toutes les tailles, les angles et les positions
sont transmis comme des réels et non des entiers.
- La texture des murs et celle du
sol.
- Une texture contenant une police de
caractères que vous pourrez utiliser dans le jeu (j'en parlerai un
peu plus loin).
- Quelques exemples de programmes en Ocaml/LablGL que vous pourrez
exécuter en lançant lablglut nom_prog.ml :
- window.ml : ce
petit programme vous montre comment ouvrir une fenêtre en
lablGL. Cette fenêtre n'affiche rien du tout.
- timer.ml :
ce programme vous montre comment utiliser un timer pour afficher
dans une console une nouvelle ligne de texte toutes les 2 secondes.
- clavier.ml :
ce programme vous montre comment gérer le clavier. Les touches
appuyées sont affichées sur la console.
- affichage.ml :
ce programme vous montre comment afficher un objet à l'écran en utilisant
les begin/end.
- lumiere.ml :
ce programme vous montre comment utiliser la lumière et les
caractéristiques des matériaux pour changer l'aspect des objets.
- deplacement.ml :
ce programme vous montre comment déplacer la caméra.
- stack.ml :
ce programme vous montre comment afficher plusieurs objets en
utilisant la pile des matrices du ModelView.
- basic_jeu.ml :
ce programme vous montre comment combiner tous les exemples
ci-dessus de maniere a obtenir le squelette du client ocamlpilot.
L'étude des exemples ci-dessus devrait vous permettre de comprendre
comment modifier votre client 2D pour obtenir un client 3D rudimentaire.
Toutefois, sur certaines machines dont les cartes graphiques sont loin
d'être excellentes, et en particulier sur celles de l'UFR, votre client va
être un peu lent. De plus, son côté esthétique laissera à désirer puisque
les murs et le sol seront de couleurs unies. Aussi, les exemples ci-dessous
devraient vous permettre d'améliorer tout cela :
- liste.ml :
ce programme vous montre comment utiliser les listes pour accélérer les
affichages.
- texture.ml :
ce programme vous montre comment texturer des objets. Pour que le
programme fonctionne, il faut récupérer
la texture en question
ainsi que le programme ocaml qui lit ce fichier
pixmap.ml,
pixmap.cmi,
pixmap.cmo.
Vous pouvez alors exécuter l'exemple grâce à la commande
lablglut pixmap.cmo texture.ml
- texte.ml :
ce programme vous montre comment afficher un texte à l'écran. Celui-ci
est basé sur le texfont de Mark
Kilgard.Je vous ai créé une archive
texte.tgz contenant tous
les fichiers dont vous avez besoin pour exécuter texte.ml.
Cette archive comprend bien évidemment les sources de texfont, le fichier
gentexfont qui permet de générer de nouvelles polices de
caractères et showtxf qui permet de les afficher, une interface
ocaml que j'ai réalisée et dont il suffit, pour l'utiliser, de faire un
open Mltexfont et un mytop. L'exécution de
texte.ml se fait en lançant mytop texte.ml.
Notons que les différents exécutables ont été produits via les commandes
suivantes :
- gcc -c texfont.c
- gcc -o gentexfont texfont.o gentexfont.c -lglut
- gcc -o showtxf texfont.o showtxf.c -lglut
- gcc -c -I/usr/lib/ocaml ml_texfont.c
- ocamlc -c -I +lablGL mltexfont.ml
- ocamlmktop -I +lablGL -custom -o mytop.bin texfont.o ml_texfont.o lablgl.cma lablglut.cma mltexfont.cmo
- viewport.ml :
ce programme vous montre comment utiliser plusieurs viewports pour
séparer l'affichage de l'espace de jeu et celui des instruments.
7.5. Ressources diverses
- Le protocole suivi par le serveur et ses clients pour converser ensemble
(ps) (pdf).
- Un poly précisant le style de programmation à utiliser pour
développer OcamlPilot
(ps) (pdf).
- Un .emacs à mettre dans votre home
directory. Il date un peu, mais ça fonctionne encore. En outre, j'en
suis persuadé, le fond d'écran «mousse de papaye»
de ce .emacs vous procurera des moments d'intense bonheur. Ce fichier est
à placer dans votre home directory. C'est un fichier de configuration
lu chaque fois que vous lancez un nouvel emacs.
- Le mode tuareg pour emacs. Pour
que ce mode fonctionne correctement, il faut l'installer dans un des
répertoires LISP d'emacs en tapant la commande :
tar xvz -C /usr/share/emacs/site-lisp -f tuareg-mode.tar.gz
et aussi installer le .emacs ci-dessus.
- Une image ISO à graver d'un CD linux live
(adapatation d'une distribution knoppix). C'est
un CD contenant tout un système Linux et ne nécessitant aucune
installation sur disque dur : il suffit de booter sur le CD et ce dernier lance
tout le système pour vous. Par rapport à une distrib knoppix classique,
j'ai rajouté ocaml, ocamlpilot et le mode tuareg sur le CD, j'ai
installé un .emacs qui supporte le tuareg et j'ai fait en sorte que
la langue par défaut soit le français.
Licence 2ème année - Projet OcamlPilot