Article     Discussion     Modifier     Historique     Forums     Salon IRC

DevLib

Un article de Games Creators Network.


[modifier] Vue d'ensemble

DevLib est une framework orienté-objet écrit en pur C++. Elle est destinée à rendre les productions multimedia (jeux, économiseurs d'écran, démos...) plus faciles et intuitives à écrire. La conséquence est une abstraction complète du gestionnaire de ressources (polices, images, objets 3D, fichiers, archives zip, sons...) et des opérations de rendu pour la carte 3D.

Le but de la librairie est de fournir un jeu de routines utilisées dans la plupart des projets. Elle n'essaye pas de réinventer la roue, elle n'implémente pas tout ce qui est possible dans le grand monde de la programmation, mais utilise les librairies bien connues suivantes : DevIL, FreeType, LUA, ODE, libjpeg, libmpeg2, libpng, TinyXML, unzip, ZLib, SDL, OpenGL, DirectX 9, FMOD, GLEW et finalement STL.

DevLib est compatible (et testé) avec Bloodshed's DevCpp et Visual C++ 2003. Le test sous Linux reste à faire.

Description rapide des dispositifs fournis par la bibliothèque :

  • Gestionaire de ressources depuis un système de fichier qui peut être local (accès direct aux fichiers) ou virtuel (utilisant des archives zip).
  • Gestionnaire d'image pour charger et sauver des images. Le format d'image interne est toujours 32 bits BGRA. Actuellement, les extensions de fichier supportées sont PNG, JPG, BMP et TGA.
  • Gestionnaire de système de rendu basé sur OpenGL et DirectX 9, permettant un rendu par la carte graphique. Au lieu d'employer un scene-graph de haut niveau et de prendre le risque d'une implémentation incomplète (mais également, à dédier le jeu à un seul type de moteur 3D, tel que les moteurs de terrain ou Quake3), la solution technique retenue est l'utilisation d'une state-based machine sytem, laissant au développeur la possibilité de choisir la propriété courante des textures, vertices/indicies et rasterisation. Vous pouvez spécifier si vos vertex et index buffers sont statiques ou dynamiques (si utilisés comme statique, ils béneficieront de l'accéleration matérielle si disponible). Ajoutons que les textures peuvent être mises à jour durant le rendu !
  • Gestionnaire de formes basé sur les fichiers internes à DevLib .MSH. Un outil en ligne de commande (x2msh) est fourni avec la librairie pour convertir les fichiers DirectX 9 .X vers des fichiers DevLib .MSH. Louons Microsoft, des plugins d'export pour les applications 3D les plus utilisés comme LightWave, 3DStudioMAX, Maya... sont disponibles. Les formes peuvent aussi être fabriquées par programmation. Deux niveaux de textures peuvent être placés, avec les propriétés d'opacité additive/modulate/full. Quelques fonctions helpers sont présentes, telles que le tracé de la forme à travers le système de rendu courant.
  • Gestionnaire XML à travers le parser standard DOM (attention: DTD non géré!). L'arbre peut être mis à jour et alors resauvé dans une ressource, ou créé à zero.
  • Gestionaire du langage de script LUA pour exécuter les scripts LUA. Il est possible d'enregistrer des fonctions C++ utilisateur natives, qui peuvent être appelées depuis LUA. Les variables globales de LUA peuvent être lues depuis C++.
  • Moteur physique ODE pour appliquer la physique sur des instances de forme. Il est possible d'appliquer seulement la collision sans usage physique. Actuellement, ne supporte que forme contre forme.
  • Gestionnaire videos pour jouer des videos basées sur un encodage MPEG-1 et MPEG-2 (flux audio non supporté). Actuellement, les extensions de fichier supportées sont M1V et M2V.
  • Gestionnaire de polices basé sur des images bitmap et des polices True Type. Les polices sont affichées en utilisant le système de rendu courant.
  • Gestionnaire de sons basé sur les ressources audio. Un son est joué à travers un système de son. Actuellement les extensions de fichiers supportées sont MP3, OGG, WAV, XM et MOD. Quand un son est joué, les valeurs spectrales (si activées à l'initialisation du système de son - prend plus de temps CPU) sont accessibles.
  • Gestionnaire de console pour mettre à jour la valeur spécifiée par l'utilisateur au démarrage. Il est possible de sauver et charger tout le contenu.

 

Rechercher
Installer l'extension de recherche Plus d'informations

 

Comprendre
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin

 

Partager
La connaissance est la seule chose qui s'accroit lorsqu'on la partage. - Sacha Boudjema

 

Créer
L'imagination est plus importante que la connaissance. - Albert Einstein

 

 

Le wiki en images Le wiki en images Image du mois: «Snowball: un prototype de jeu développé avec NeL.