Projet S.E.R.Hu.M.

  • langage : C++
  • plateforme : Microsoft Windows
  • compilateur de map : 2198 lignes
  • fonctions communes : 4367 lignes
  • cœur moteur : 7422
  • GUI compilateur : 910

total : 14 897

Le "Projet Secret en Équipement et Recherche Humanitaire et Médicale" dit Projet SERHuM, est le projet de plus grande envergure que j'ai entrepris à ce jour. Je pensais avoir besoin d'entre 2 et 5 ans pour le terminer, mais je me suis aperçu qu'après 4 ans de développement je n'avais qu'atteint ce que je pensais initialement atteindre en 1 an. Il s'agit d'un FPS (doom-like), dont le scénario a été écrit fin 2001. Étant un grand fan du jeu phare de la compagnie Valve Software, Half-Life, j'ai voulu créer un moteur simple, mais du même niveau. En partant de leur éditeur de cartes, à l'époque baptisé Worldcraft, Hammer de nos jours. J'ai étudié le format de sortie (.map) et grâce aux explications partielles de Stefan Hajnoczi, j'ai pu réaliser un compilateur générant un format rapide à charger par mon moteur.

Deux captures de la configuration SERHuM dans hammer :
hammer hammer2

Le compilateur, incorpore les fonctionnalités suivantes :

  • parsing complet et réinterpretation des fichiers map
  • tesselation à partir des volumes convexes (extrapolation des faces manquantes dans le .map)
  • adaptation des coordonnées de textures
  • suppression des faces inutiles (faces entièrement recouvertes par d'autres)
  • partitionnement d'espace bitree (technique "octree", mais binaire et à orientation intelligente)
  • "sérialisation" des formats intermédiaires

Dans une future version hypothétique, le compilateur devait générer un format de fichier de lightmaps à base de lancé de rayon sans réflexion ni radiosité, mais je n'ai jamais eu le temps de m'y coller.

Voici une capture de la sortie du compilateur, redirigée dans une GUI :
compilo

Le moteur du jeu en quelques mots :

  • directx9
  • console transparente a complétion automatique, barre de défilement, historique des commandes...
  • sprites/halos à occlusion rayon
  • enregistreur/lecteur de demos (camera pathtrack)
  • détection des collisions glissantes ellipsoïdale
  • shaders HLSL pour les surfaces d'eau
  • skybox rendue avec terragen
  • textures dessinées avec wally/paint shop pro


Quelques captures du moteur in-game, la console, et le bitree :
capt0 capt1 capt2
capt3 capt4 capt5