dimanche 23 mars 2008

Collisions

Un petit peu de géométrie en ce week-end de Pâques, afin de mettre au point mes routines de détection de collision. Je me suis beaucoup inspiré d'un très bon article de gamedev.net et les premiers résultats sont encourageants. Voici donc une petite vidéo qui montre ma petite planète tombant sur un cube.


video


Un peu après le démarrage de la vidéo, j'applique un vecteur vitesse vers le bas. La planète tombe donc sur ma surface, et bloque lorsqu'elle la rencontre. Pour l'instant, j'ai codé ma zone de collision comme étant un plan infini, il me reste donc encore à gérer le cas du triangle, qui est nettement plus complexe (mais les maths sont finies, ce n'est donc plus que du code).

Le système décrit dans l'article (et implémenté ici) gère le "glissement" le long de la surface de collision lorsque l'approche est oblique, ce qui est particulièrement adapté aux shooters, mais aussi (miracle!), aux MMOs en vue subjective!

jeudi 13 mars 2008

Et pourtant elle tourne

En vidéo, un petit exemple de ce que l'on peut faire avec un peu d'ocaml, et les librairies lablgl et ocamlsdl. Le code est composé d'un petit graphe de scènes purement fonctionnel (vu du dehors, du moins), qui permet de déterminer les transformations géométriques et de style des objets représentés. Un des nœuds se charge de compiler la géométrie pour obtenir de bonnes performances.


video

mardi 4 mars 2008

Blog en folie

Ouééé, je suis classé 19453ème sur Wikio! Pour la peine, je rajoute en bas à droite le classement, et un petit lien si quelqu'un a l'idée saugrenue de m'ajouter à son feed Wikio.

dimanche 2 mars 2008

Description des zones

Tout en faisant un peu de nettoyage dans le code (principalement centré autour de des binders pour les requêtes SQL), je m'attaque à la description des zones, comme indiqué dans le post précédent. L'intention est d'envoyer une liste des objets utilisés dans la zone, avec le nom du fichier de ressources correspondant, suivi d'une liste des positions, orientations et échelles des objets dans la zone.

Pour l'instant, je vais me contenter de renvoyer la description entière de la zone lorsqu'elle est modifiée. Si sa fonctionnalité d'édition dynamique des zones prend, il me faudra probablement aller vers l'envoi des différences.