Aller au contenu | Aller au menu | Aller à la recherche

projets

Flux rss Flux rss des commentaires

Carnage engine sur sourceforge

J'ai extrait le moteur de extreme carnage pour réaliser Nuclear Age, j'en ai donc profité pour le développer en tant que bibliothèque à part.
Le projet est sur sourceforge: http://sourceforge.net/projects/carnage-engine/ !

Novendiales 6 : Nuclear Age

  • langage: C++
  • libs: SDL, SDL_mixer, boost

À l'occasion des novendiales 6 du GCN, en "concurrence" (amicale) avec 6 autres participants, j'ai décider d'utiliser le moteur d'ExtremeCarnage pour réaliser un jeu 2D très rapidement. Cela a été juste, mais avec tout mon temps libre j'ai réussi a finaliser : Nuclear Age. Ce jeu a un concept un peu particulier, dû au thème du concours: contamination. Il s'agit de protéger des villages dans une région où la centrale a explosé. Pour ce faire, achetez des ventilateurs dont vous choisissez la direction, et repoussez les nuages avec ! C'est assez stratégique car un ventilateur posé n'importe où coûtera cher, posé dans une zone de contrat avec un village, il rapportera... Un village mort de contamination ne donnera plus d'argent ! Vos ventilateurs se mettrons donc à coûter si vous l'avez mal protégé.

Une petit screenshot:
nuclearage

téléchargement du jeu pour windows:
nuclear-age-win32.rar
linux:
nuclear-age.tar.gz

ouverture d'une page sourceforge

Voici pour la première fois, je voulais savoir comment ce site fonctionne, une page sourceforge pour le projet "extreme carnage":
https://sourceforge.net/projects/extremecarnage/
C'est propre, il y a beaucoup de services comme subversion, git ou mercurial ce qui peut être un gros plus. Un wiki, des forums. Très bonne plateforme pour celui qui veut toutes ces fonctionnalités sans avoir de serveur ou bien savoir les implanter.

Extreme Carnage est terminé !

Deux ans après la troisème édition du concours des Novendiales de games-creators.org. Le jeu est enfin totalement terminé.

(rappel du premier billet le concernant : dev xtreme carnage )

  • 11000 lignes dont 2500 d'outils générique C++
  • multiplateforme car totalement standard, avec SDL en seule dépendance

archive windows : xtremecarnage.zip
archive linux : xtremecarnage.tar.bz2

Il existe deux modes de jeu, un mode sur un terrain avec une seed fixe pour faire référence sur les highscores. et un mode libre où on peut régler tous les paramètres du terrain, et le flux des ennemis.

3d studio max

I-Tee Team


A l'occasion de LANs party (par exemple la QUAD près de Lyon) avec une équipe d'amis, j'ai réalisé des fonds d'écran pour personnaliser notre équipe, les I-Tee. Une fois de plus, le logiciel de Discreet, 3D Studio Max est venu à la rescousse.

wall1 wall2

Mod tuning PC


Pour faire mon jacky, j'utilise aussi 3d max pour dessiner les plans de potentiels mods. Ou ce projet d'échangeur à base de plaque à effet Peletier.

mod tuning peltier1 peltier2

Autres


proto array

map : egouts

Escape égouts


Egouts est une des rare maps escape que l'on peut trouver sur counter strike. Le concept a été abandonné dans les nouvelles versions officielles. Dans ce mode de jeu, les terroristes doivent rejoindre un point d'échappement, un peu à la manière du V.I.P. pour les contre terroristes. Dans cette carte, tout le monde commence sur un point d'entrée élevé dans les égouts et doit courir jusqu'à la sortie. L'équilibre s'est révélé très correct, et les points de croisement entre T/CT correctement jaugés. Elle manque cruellement de détails, malheureusement une version plus évoluée de cette carte a été perdue dans un formatage. Elle s'inspire de la carte cs_backalley pour le point de sortie des terroristes.

vues in-game :
eg0 eg1 eg2

plan au brouillon :
eg_draft

map : hlreview

Bomb/Defuse Half-Life review


HLReview est une carte pour la modification "counter strike". Deux semaines de travail, un résultat que je considère très bon par rapport à ma vision originale, et au dessin original (papier) que j'avais fait. Malheureusement, cela ne suffit pas pour être une bonne carte, elle est très déséquilibrée pour les terroristes qui n'ont qu'une seule possibilité pour atteindre le bombsite, c'est de passer par le goudronnage central. Et vue la taille de la carte, l'AWP est de mise très rapidement pour les contre terroristes qui ont tout leur temps pour s'installer.

artwork de départ et captures in-game :
draft hlr0 hlr1
hlr1 hlr4 hlr5
hlr6 hlr7 hlrhamm

stge 2007 : MPI

Recherche expérimentale avec MPI

  • langage : C++
  • framework : ~5000 lignes


Mon stage de troisième année qui dura 6 mois s'est déroulé au Japon dans la très sympathique ville de Fukuoka, ou je suis retourné pour 4 mois supplémentaires par la suite pour y totaliser 10 mois. J'y étais engagé en tant qu'assistant chercheur (niveau master, les chercheurs devant être en Ph.D). Mon travail était de trouver des solutions (et de les implémenter pour test) pour accélérer MPI. MPI est une bibliothèque portable utilisée pour communiquer entre processus dans un super calculateur. L'architecture parallèle de ces machines demandant parfois que les processus s'échangent des informations, il est préférable que cela se passe le plus vite possible si cela doit être répété au cours de la vie du programme. En collaboration avec l'équipe, j'ai donc entamé le développement d'un framework qui se glisse entre le programme et MPI permettant de brancher les communications collectives sur nos algorithmes, de faire dynamiquement une petite base de données de leur performances et de choisir le meilleur parmi eux pour la suite de l'exécution du programme. Ainsi, s'adaptant facilement à tout type de machine parallèle et programme utilisant MPI. Ce travail s'inscrit dans la suite d'une recherche entamée par le professeur Ahmed Fahraj anciennement à l'université de Floride, travaillant désormais pour IBM. Ce travail m'a valu mon master (II) de recherche à l'Université Bordeaux 1.

dev 2007-2008 : carnage

Extreme Carnage

  • langage : C++
  • plateforme : standard (linux, windows)
  • jeu : 11477 lignes (projet terminé)


Après un an de développement, mais seulement 1 ou 2 mois en bout à bout, ce jeu touche à sa fin. Il a été motivé par le concours des Novendiales sur le Games Crators Network mais n'a pas pu être fini à temps pour cause d'une entreprise de bien trop grande envergure pour être terminée en 9 jours. Bien qu'après 15 jours le moteur fût assez mature, le jeu était loin d'être terminé. Inspiré à l'origine par Solar Striker, le jeu devait être une extension du genre, mêlé au fameux mod "tower defense" de Warcraft 3. Il ressemble plus à GTA maintenant. Le concept est : vous pilotez une voiture verte et vous devez faire des points en éliminant un grand nombre d'ennemis progressant dans la direction opposée. Votre liberté est grande, les niveaux sont assez large. Tout est généré procéduralement dans ce jeu, gameplay infini ! De la même manière que pour les arbres procéduraux, le générateur de cartes peut se paramétrer, densité d'abres, d'eau... Je suis techniquement très fier de cette réalisation, spécialement pour une structure propre du design, à base de managers, et de structures de données très puissantes. J'ai su garder les complexités algorithmiques très basses, à l'aide d'astuce de partitionnement binaire ou même par grille de traversée. Chaque action (tir, check collision, IA déplacement...) ne consulte que son voisinage, le moteur peut donc gérer de très nombreuses entités sans ralentir. De nombreuses astuces ont été nécessaires, algorithme de Bresenham, freelists et arbres sont de la partie, le tout en restant propre point de vue design. Le jeu utilise la SDL pour l'affichage, et SDL_mixer pour le son. Utilisation de The gimp pour les graphismes.

deux petites captures in-game et un artwork qui fera menu d'accueil :
xt1 xt2 splash

stge 2006 : météoFX

Outils shader et effets météorologiques

  • langage : C++
  • plateforme : windows
  • ajout : environ 6000 lignes


Pour mon stage de deuxième année au sein de l'entreprise Lyonnaise Étranges Libellules, j'ai fait l'intégration d'outils regroupant la gestion des effets météorologiques, de transition jour/nuit et de matériaux shaders au sein de l'architecture existante. Le stage a duré 4 mois. Je ne dispose pas du code source de ce travail, bien que tous mes autres projets soient sous licence libre. Les shaders sont programmés en HLSL dans des fichiers .fx définissant leur paramètres. Merci à ATI et nVidia pour leur outils rendermonkey et FX composer. Les nuages sont rendus grâce à un shader normal map + brouillard + animation des coordonnées de textures. Les textures de bases sont générées avec the gimp, effet bruit de perlin et plugins normal map. Toute une interface fait la communication des variables uniformes entre le programme et la carte graphique, il y a un séquenceur d'événement météo avec blending des états, génération aléatoire d'une liste d'états, le tout est sauvegardable.

Les captures que j'ai pu garder sont limitées, mais en voici deux jolies montrant la même scène à des heures différentes :
jour soir

dem 2006 : arbres

Arbres procéduraux

  • langage : C++
  • plateforme : linux
  • programme : 1316 lignes


Encore une petite démonstration, en une semaine de développement. Ce fut ma partie d'une démo qui a été présentée au gala de l'ENSEIRB 2005 au nom du club GProg. Les arbres sont entièrement aléatoires, une liste de paramètres permet toutefois d'en diriger les effets (plages de longueur de branches, nombres de fils min/max par nœuds, nombre de récursions...). Vous pourrez trouver l'article wiki complet en rapport avec ce programme sur le site du GCN. La démo anime en temps réel (avec OpenGL) la pousse des arbres (paramètre de pousse entre 0 et 1 à donner à la fonction de rendu).

Quelques images :
plantes arbrefeuilles arbre14

dem 2006 : raytrcr

Raytracer simple

  • langage : C++
  • plateforme : standard (linux, windows)
  • programme : 1147 lignes


Un petit programme expédié en trois jours sur un coup de tête, en 2006 je visualisais bien comment réaliser ce programme alors, pourquoi pas ? De jolis designs pattern (factory), un paradigme objet bien respecté, un lecteur de fichier scène simple, collisions rayon-sphères, réflexion à un niveau, ombrage de Lambert et spéculaire, supersampling. Il faut entre 5 et 15 secondes au programme pour calculer une image. Un article complet sur le wiki du GCN est disponible.

Quelques scènes pour le show :
ray1 ray2 ray3

dev 2002-2006 : serhum

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

dev 2001-2002 : envesp

Envahisseurs de l'espace

  • langage : C
  • plateforme : calculatrice TI-89
  • cœur jeu : 4100 lignes


Mon premier programme en C, il ne comporte pas d'allocation dynamique de mémoire, tout se passe sur la pile. Il est très stable et performant, sur ce processeur Motorola 68000 de 12Mhz, le langage interpreté TI-basic devenait fortement limité pour ce genre d'applications. Merci à tous les amateurs qui nous permettent d'utiliser la bibliothèque C et une API spéciale TI pour cette plateforme.
Niveau fonctionnalités, le jeu gère l'enregistrement de la progression jusqu'à 5 profils de joueurs, plusieurs types d'ennemis, menu d'achats d'armes et munitions, pause, retour menu, niveaux de gris dans le splash-screen, impressions des sprites en XOR, ressources intégrées au binaire.

Voici une compilation de captures :
env

dev 2000-2001 : worms

X-Worms système 1

  • langage : Microsoft Visual Basic (v6)
  • plateforme : Microsoft Windows
  • cœur jeu : 650 lignes


Un jeu au développement court (un mois seulement), qui m'a permis durant cette période d'apprendre à programmer ce langage qu'est le VB. Plusieurs autres projets existent durant cette période, projets tels que Talkative finale (page sur vbfrance) mais ne sont pas des jeux, ou du moins pas terminés.

Voici une capture in-game :
((/public/xworms/xworms-systeme1.PNG

dev 1999-2000 : mario

Super Mario Country

  • langage : Microsoft Quick Basic
  • plateforme : Microsoft DOS
  • cœur jeu : 1248 lignes
  • éditeur sprites : 483 lignes
  • éditeur niveaux : 1262 lignes
  • sélecteur niveau simple : 224 lignes
  • sélecteur niveau complet : 881 lignes

total 4098

Jeu de plateforme en QBasic programmé pendant la période 3ème/2nde
il regroupe quatre programmes, un éditeur de sprites, un éditeur de niveau, un sélecteur de niveau (interface d'édition du .ini) et le jeu lui même.

L'éditeur de sprites

Un petit programme qui ne gérait même pas les actions à la souris dans ces versions antérieures à été écrit pour éditer les fichiers de sprites du jeu mario.
mario editeur sprite

L'éditeur de niveaux

L'éditeur de niveaux est un des programmes dont j'ai été le plus fier pendant longtemps, il permet d'éditer et enregistrer les niveaux pour le jeu mario.
L'accueil en mode texte se présente comme ceci :
mario editeur

Une fois en mode d'édition, il passe en graphique, on peut alors poser les blocs :
mario editeur

Le sélecteur de niveaux

Le programme retenu est une version simplifiée (à base de commande "dir") d'une interface plus complexe basée sur "l'interruption 21h fonctions findfirst/findnext" :
ouvre niveau

L'interface complète étant celle-ci :
open fich

Super Mario Country

Le jeu en lui même utilise un système classique basé sur une boucle principale, avec un système rafistolé pour fixer le taux de rafraîchissement à la "bogomips", un simulateur numérique de Newton (bien qu'à l'époque je n'en connaissais pas le nom) pour les sauts et l'inertie, un système de collisions glissantes simple, une petite IA pour les ennemis, et pleins d'autres détails.
voici quelques captures in-game :
jeu1 jeu2 jeu3