Index

Accueil - News

Contact - CV

Démo gameplay : Burger

Démo technique multi-thread et shaders

Document de game design : Raise~

A venir ...

Démo technique montrant l'utilisation de Shaders et de Threads

Cette démo est un projet de moteur 3D que je fais pour m'entraîner.

La partie la plus apparente de la démo est l'utilisation de pixel et vertex programs sur les deux textures du décor. Les techniques utilisées sont le parallax mapping, le normal mapping, et une couche de texture modulant la lumière spéculaire (appelons cela le specular mapping, même si je ne l'ai jamais vu écrit). Les programmes sont écrits en Cg. J'ai réalisé les textures en modifiants des photos que j'avais prises.

La partie non apparente est que la gestion de la logique du jeu (Input, collisions) se fait dans un thread, et celle de l'affichage dans un autre. Le thread logique s'exécute un nombre fixe de fois par seconde. Le thread graphique affiche une version interpolée du monde entre la dernière exécution du thread logique et celle d'avant.

C'était la première fois que je faisais du multi thread, et j'ai pu me rendre compte des inconvénients de cette technique de développement (design difficile, debugage long), mais aussi d'un avantage : dans le cas de l'utilisation de la méthode d'interpolation avec retard pour générer des frames, les algorithmes de calage temporels deviennent beaucoup plus simples. Je préfère cette façon de gérer une boucle principale que celle du delta temps à chaque frame affichée, car elle est déterministe et la plupart du temps plus économe en ressources, même si elle introduit un petit décalage temporel, mais il y aura toujours un décalage entre les inputs et l'affichage, un ordinateur n'est pas une machine temps réel.

Téléchargement de la démo

Instructions d'utilisation :

Pour lancer la démo, il faut lancer le fichier exécutable BurgerGame_d.exe qui de trouve dans le répertoire bin/Debug. Si vous n'avez pas une carte 3d relativement récente, la démo sera toute moche et perdra son intérêt !

Pour se déplacez, utilisez ZQSD, et pour la caméra, utilisez les flèches de direction. Il n'y a pas de support de la souris.


Librairies utilisées : Ogre3D (affichage), Newton Game Dynamics (Collisions), Standard Direct media Layer (Threads)

Crédits :

Programmation et textures : Cyrille Lagarigue

Modélisation : Guillaume Brusseau

Réalisé l'été 2005