Développement de JV multi-platforme et Logiciels Libres

Écrit le 24/04/2004 par DukeNukem
Dernière mise à jour : 27/05/2006

Introduction

Cet article est une introduction au développement de jeux vidéo multi-platforme (GNU/Linux, MacOS, Windows, etc.), libre (Open Source) ou non, à l'aide de logiciels et de bibliothèques libres et disponibles gratuitement.

Dans chaque domaine seront présentés les logiciels libres disponibles, les bibliothèques et les formats de fichier à préférer. Ce petit guide présente également les diverses licences libres que vous pourrez utiliser pour protéger les données de votre futur jeu.

Programmation

Les logiciels

En ce qui concerne la programmation, il vous faut un simple éditeur de texte ASCII et un compilateur.

Pour le compilateur, GCC (GNU Compiler Collection) est certainement le plus populaire et supporte une grande variété d'architectures et systèmes d'exploitations. Développée pour le projet GNU, c'est une suite de compilateurs en ligne de commande (avec des Makefile), mais il existe aussi des IDE comme KDevelop (GNU/Linux) ou Dev C++ (Windows). Les langages supportés sont le C, C++, Objective C, Fortran, Java, et l'Ada. Pour du code natif Windows le portage de GCC est MinGW.

Site web de GCC : http://gcc.gnu.org/.

L'éditeur de texte peut-être n'importe quel éditeur de texte pouvant enregistrer du texte brut (ASCII), avec coloration syntaxique de préférence : Emacs, VIM, etc.

Les bibliothèques à utiliser

Développer un jeu multi-platforme signifie qu'il doit utiliser des bibliothèques multi-platformes, donc pas de DirectX. Voici les grosses bibliothèques utilisées pour développer des jeux vidéo :

* SDL : Cette bibliothèque spécialement créée pour le développement de jeux vidéo se charge de gérer les tâches spécifiques aux systèmes d'exploitation, c'est à dire la gestion des fenêtres, des entrées clavier, souris et joystick, des lecteurs CD-Rom, des threads, etc. Elle apporte également des routines pour la gestion de l'audio et du dessin 2D. Elle est amplement suffisante pour un jeu en 2D. la SDL peut se combiner avec les bibliothèques OpenGL et OpenAL (http://www.libsdl.org/).

* Les bibliothèques complémentaires à SDL, telles SDL_net pour la communication réseau, SDL_image pour lire divers formats d'images, SDL_sound pour décoder des fichiers audio, SDL_ttf pour utiliser des polices TTF, et bien d'autres... (http://www.libsdl.org/libraries.php).

* OpenGL : C'est une bibliothèque graphique utilisant l'accélération matérielle pour faire des rendus en 2D et 3D (http://www.opengl.org/).

* OpenAL : Similaire à OpenGL, cette bibliothèque, également conçue pour faciliter le développement de jeux multi-platforme, gère l'audio et le son 3D (http://www.openal.org/).

La licence GPL

La meilleur licence libre pour protéger le code de votre jeu et de ses outils est la GPL (General Public Licence). C'est une licence copyleftée qui assure à l'utilisateur quatre libertés fondamentales :

1. La liberté d'exécuter le programme.
2. La liberté d'étudier le fonctionnement du programme.
3. La liberté de redistribuer des copies du programme.
4. La liberté de modifier le programme et de le redistribuer.

Concrètement, cette licence vous oblige à laisser le code source du programme disponible, permet à quiconque de le modifier et de le redistribuer (modifié ou pas) à condition que le programme reste sous licence GPL (principe du copyleft). Le code possède un copyright à votre nom et personne d'autre que vous ne pourra en changer la licence.

Attention à quelques amalgames qu'il ne faut pas faire. Libre ne signifie pas gratuit ! Un logiciel libre peut être vendu. Un logiciel libre n'est pas un freeware (un freeware ne peut pas être modifié). Un logiciel libre n'est pas dans le domaine public.

Il existe d'autres licences libres plus ou moins similaires que certains logiciels présentés ici sont susceptibles d'être sous l'une d'entre elle, je vous invite à les regarder vous-même.

Graphismes et modélisation 3D

Les logiciels

Pour la création de textures et autres images 2D de votre jeu, le logiciel libres et multi-platformes de dessin et de retouche d'images numériques qui vous sera nécessaire est The Gimp. Vous le trouverez sur http://www.gimp.org/.

En ce qui concèrne la modélisation 3D, c'est avec Blender que vous devrez faire ! Même si son interface est un peu austère aux premiers abords, il n'en reste pas moins un puissant logiciel de création 3D. Voir http://www.blender.org/.

Autre logiciel de modélisation 3D libre : Wings3D. Il est plus « simpliste » que Blender et ne gère pas les animations, mais est facile à prendre en mains. Pour des petits travaux par exemples. http://www.wings3d.com/.

Les formats de fichier

Pour vos images et textures, privilégiez les formats PNG et JPG. Le premier, qui était avant tout une alternative au format GIF, possède une des meilleurs compression non destructive, gère aussi bien des images indexées avec palette (8 bits) que des images RGB 24 bits avec un canal alpha pour la transparence. Le format JPEG lui peut obtenir une meilleur compression, mais au détriment de la qualité de l'image (utilisez une faible compression). À vous de voir quelles images ne doivent pas perdre en qualité.

Ces deux formats d'images peuvent être facilement manipulé grâce aux bibliothèques libres libpng et libjpeg qui vous épargneront quelques tâches laborieuses. Également, la bibliothèque SDL_image permet de lire ces formats, ainsi que d'autres, très facilement.

Pour la 3D, il n'existe pas vraiment de format universel. Vous pouvez en adopter des déjà existant suivant vos besoins ou vous recréer un format propre à votre jeu. Il vous faudra alors programmer des plugins ou des outils de conversions/compilation.

La licence

Il existe aussi plusieurs licence libre spécifique pour les oeuvres numériques (mais aussi non numériques), comme la Licence Art Libre et les licences Creative Commons. Ce sont des licences qui reconnaissent et protège les droits d'auteur. Basé sur le droit de disribuer, modifier et du copyleft, ce sont en quelque sorte « les GPL des oeuvres d'art ». Vous trouverez plus détails à son sujet sur http://artlibre.org/licence.php/lal.html pour la LAL et sur http://creativecommons.org/ pour les différentes licences Creative Commons.

Level Design

Les logiciels

Pour la création de niveau, il n'existe pas vraiment de logiciel « généraliste ». Pour certains jeux vous pouvez utiliser GtkRadiant (http://www.qeradiant.com/?data=editors/gtk), ou bien en les modélisant dans Blender puis en les convertissant vers un format propre à votre jeu. Sinon, il vous faudra développer vos propres outils d'édition de niveau.

Les formats de fichier

Là il vous faudra sûrement inventer un format spécifique à votre jeu. Vous pouvez partir d'un format classique (par exemple .map) puis le convertir (ou le compiler) dans votre propre format à partir d'outils que vous aurez développé.

Ambiance sonore

Les logiciels

Il existe plusieurs logiciels d'édition audio libres :

* Audacity : GNU/Linux, Mac OS X, Windows - http://audacity.sourceforge.net.
* Ardour : GNU/Linux, Mac OS X - http://www.ardour.org.
* Ecasound : tous les UNIX-like, Windows (via Cygwin) - http://www.wakkanet.fi/~kaiv/ecasound.

Les formats de fichier

Pour les sons de bruitages, vous pouvez simplement utiliser des fichiers au format WAV. Pour les musiques, utilisez plutôt le format Ogg Vorbis que le format MP3. Celui-ci possède un meilleur compression et ne posera pas d'ennuis au niveaux brevets... La bibliothèque SDL_sound permet de décoder tout un tas de formats audios de manière simple.

La licence

Les mêmes licences que pour le domaine du graphisme, la LAL ou une des licences Creative Commons, peut être appliquée à vos productions, ou bien vous pouvez créer une licence libre spécifique à vos sons et musiques suivant les libertés que vous voulez accorder.

Documentation

La documentation a aussi une part importante, notamment pour un logiciel libre. Il est préférable donc de documenter les outils que vous avez développé pour faire des conversions/compilations entre différents formats de fichiers. Vous pouvez également documenter le code propre du jeu si une autre équipe veut le reprendre et le modifier, ou même tout simplement pour les autres programmeurs de votre équipe.

La Free Software Fondation a également créé une licence libre pour tout ce qui concerne la documentation : la FDL (Free Documentation License). C'est aussi une licence sous copyleft, donc tout produit dérivé doit garder cette même licence. Une adaptation française non officielle est disponible sur http://fr.wikipedia.org/wiki/FDL.

Moteurs de jeux libres

Il existe déjà une multitude de moteurs de jeux et de moteurs graphiques libres que vous pouvez (ré)utiliser. Parmi eux :

* Ogre 3D, qui est écrit en C++ et sous licence LGPL, un dérivé de la GPL (http://www.ogre3d.org).
* Crystal Space 3D, également en C++ et sous LGPL (http://crystal.sourceforge.net).
* Quake II, dont le code source du jeu (en C) est passé entièrement GPL comme Quake I précédemment (mais moins intéressent) (http://www.idsoftware.com).
* Irrlicht, de licence Open Source spécifique au projet et écrit en C++. Pas encore de version MacOS (http://irrlicht.sourceforge.net/).

Vous pouvez trouver une liste plus complète sur 3dengines.de.

Conclusion

Voilà, ce petit guide de démarrage pour la création de jeux vidéo libre et à l'aide de logiciels libres s'achève ici. Vous pourrez également trouver d'autres logiciels libres portés sous Windows sur http://gnuwin.epfl.ch/. Pour les licences, je vous recommande d'aller voir sur le site gnu.org. Et n'oubliez pas, google est votre ami !

Creative Commons Logo Contrat Creative Commons

Cet article est mis à disposition sous un contrat Creative Commons (licence CC-BY-ND).

http://tfc.duke.free.fr/articles/devjv_libre.html -->