Développement de jeux vidéo multiplateformes et logiciels libres

| David Henry | Alexandre Laurent |

Cet article présente différents outils/bibliothèques/formats utiles au développement de jeux vidéo. L'accent est mis sur les solutions gratuites, libres et open source, ainsi que sur les solutions multiplateformes.

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.

Commentez

- Titre : Développement de jeux vidéo multiplateformes et logiciels libres

- Auteurs : David Henry, Alexandre Laurent

- Parution : 1 septembre 2015

- Mise à jour : 2 septembre 2015

- Licence : Le contenu de cet article est rédigé par David Henry et Alexandre Laurent et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas de Modification 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 Developpez.com.

Sommaire

- I. Introduction

- II. Programmation

- II-A. Logiciels

- II-A-1. Compilateur

- II-A-2. Éditeur de code

- II-A-3. Outils de débogage

- II-B. Bibliothèques

- II-C. Moteurs de jeux

- III. Graphismes

- III-A. Logiciels pour la 2D

- III-B. Logiciels pour la 3D

- IV. Conception

- V. Ambiance sonore

- VI. Formats de fichier

- VI-A. Images

- VI-B. 2D

- VI-C. 3D

- VI-D. Sons

- VI-E. Musiques

- VI-F. Vidéo

- VII. Licences

- VII-A. Copyleft

- VII-B. Pour la programmation

- VII-C. Pour les ressources

- VII-D. Documentation

- VIII. Conclusion

I - Introduction

Jusqu'à très récemment, les jeux n'étaient développés que pour Windows. Une faible portion était aussi disponible sur Mac OS (les jeux de Blizzard notamment), mais presque aucun sous Linux.
Avec l'arrivée de Steam sur ce système d'exploitation, les éditeurs ont commencé à reconsidérer leur vision du marché et de plus en plus de jeux sont compatibles avec Linux. Cet article cherche à présenter les différentes solutions que l'on peut avoir pour réaliser un développement multiplateforme.

En plus de ce premier objectif, une certaine volonté est prise pour proposer des solutions parmi les outils du monde du libre. Il existe un avantage certain à utiliser des logiciels dont le code source est ouvert :

- possibilité d'étendre le logiciel à ses besoins ;

- support de la communauté (corrections de bogues, évolution de l'outil) ;

- maîtrise de l'avenir de l'outil (les logiciels propriétaires ne sont que le fruit d'un studio de développement spécifique qui peut changer totalement d'objectif en cours de route).

Un logiciel libre ne veut pas nécessairement dire gratuit. Un logiciel dont le code source est disponible n'est pas nécessairement libre d'utilisation (exemple : Unreal Engine).

Un logiciel libre n'est pas dans le domaine public.

II - Programmation

II-A - Logiciels

Les programmeurs ont besoin de plusieurs logiciels pour réaliser le jeu :

- un compilateur (transformant le code source en code machine) ;

- un éditeur (pour aisément produire le code source) ;

- un ou plusieurs outils de débogage.

Chaque langage possède ses propres outils et il sera difficile de tous les énumérer.

II-A-1 - Compilateur

Le compilateur le plus connu est certainement GNU Compiler Collection (GCC) (sous Linux et MAC OS), MinGW (sous Windows), sous licence GNU GPL 3+. Il est capable de compiler du code C, C++, Java, Go, D….

Le second compilateur pouvant intéresser le développeur est LLVM (clang pour compiler du C et C++) sous licence University of Illinois/NCSA Open Source License.

Ces deux compilateurs peuvent s'utiliser sur n'importe quel système.

II-A-2 - Éditeur de code

Dans les éditeurs de code, deux sous-catégories existent : les éditeurs de code et les Environnements de Développement Intégré (EDI). Le premier type ne consiste qu'en un simple éditeur de texte proposant des fonctionnalités pour aider à l'écriture du code (complétion automatique, coloration syntaxique), alors que les EDI embarquent en plus un compilateur, un débogueur et d'autres outils complétant ainsi le processus de création d'une application.

Pour les éditeurs de code, on pourra se référer à vim et GNU Emacs, certes des outils issus du monde libre, mais qui ont tout de même été porté sur Windows.

Du côté des EDI, on pourra citer : Qt Creator (qui n'est pas uniquement lié au développement de projets avec la bibliothèque Qt), Code::Blocks, Geany, Eclipse, NetBeans. Il en existe d'autres encore, mais ce sont les plus connus/utilisés.

II-A-3 - Outils de débogage

Finalement, écrire le code ne suffit pas, car celui-ci peut contenir des bogues. Ainsi, il est nécessaire, pour le programmeur, d'avoir des outils de débogage comme le GNU Debugger (pour Windows, il est inclus dans MinGW), connu sous l'acronyme « gdb », ou encore Valgrind/Dr. Memory pour les fuites de mémoire.

II-B - Bibliothèques

De nombreuses bibliothèques existent pour faire du développement de jeux vidéo, multiplateformes :

- SDL 2 : bibliothèque C, sous licence zlib, permettant de faire des jeux pour Windows, Linux, Mac OS X, Android et iOS. La bibliothèque est utilisée dans plus de 700 jeux ;

- Allegro : bibliothèque C, sous licence spécifique, permettant de faire des jeux pour Windows, Linux, Mac OS X ;

- SFML : bibliothèque C++, sous licence zlib/png, permettant de faire des jeux pour Windows, Linux, Mac OS et de manière expérimentale pour Android et iOS ;

- LibGDX : bibliothèque JAVA sous licence Apache, permettant de faire des jeux pour Windows, Linux, MAC OS X, Android, BlackBerry, iOS, Navigateurs Internet ;

- pygame : bibliothèque Python (reposant en grande partie sur la SDL), sous licence LPGL, permettant de faire des jeux pour Windows, Linux, MAC OS X ;

- flixel : bibliothèque Action Script sous licence MIT, permettant de faire des jeux dans le navigateur Internet. Cette bibliothèque est à l'origine de Canabalt ;

- MonoGame : réimplémentation libre de XNA de Microsoft. Bibliothèque C# sous licence Microsoft Public Licence, permettant de faire des jeux pour Linux, Windows, Windows Phone, Android, iOS, PlayStation 4, PlayStation Mobile, Xbox 360 et MAC OS X. MonoGame a été utilisée dans la réalisation de Bastion, FEZ, TowerFall… ;

- Ogre 3D : moteur de rendu 3D en C++, sous licence MIT, permettant de faire des jeux pour Windows, Linux, MAC OS X, Android, iOS, Windows Phone, Navigateurs Internet. Le moteur a été utilisé dans la réalisation de Torchlight ;

- Irrlicht : moteur de jeux en C++, sous licence zlib, permettant de faire des jeux pour Windows, Linux, MAC OS X, Symbian OS, iPhone, Playstation Portable et Xbox ;

- OpenSceneGraph : boîte à outils open source pour les graphismes 3D en C++, sous licence OSGPL, permettant de faire des applications 3D pour Windows, Linux, MAC OS X, iOS et Android ;

- PlayCanvas 3D : moteur de jeux 3D sous licence MIT pour la réalisation de jeux en HTML 5.

Il est nécessaire de vérifier les termes des licences des bibliothèques que vous utilisez, car, pour certaines licences (GPLv2), elles peuvent vous obliger à réutiliser la même licence (copyleft).

II-C - Moteurs de jeux

Les moteurs de jeux permettent de créer des jeux en proposant un ensemble d'outils pouvant notamment intégrer un éditeur dans lequel on construit le jeu. L'approche du code est souvent très simplifiée. Notamment, la programmation n'est utile que pour implémenter le comportement des éléments du jeu.

- Godot : moteur de jeux 2D et 3D open source sous licence MIT permettant de créer des jeux pour Windows, MAC OS X, Linux, Android, BlackBerry 10, HTML 5, Playstation 3 et Playstation Vita. La programmation de script se fait avec un dérivé proche de Python. L'éditeur est disponible pour Linux, Windows et MAC OS X.

- Torque 3D : moteur de jeux 2D et 3D open source sous licence MIT permettant de créer des jeux pour Windows, MAC OS X, Linux.

- id Tech 2/3/4 : moteurs des jeux Quake II/III et Doom 3 sous licence GPL. Le moteur id Tech 4 est compatible avec Windows, MAC OS X, Linux, Xbox, Xbox 360 et PlayStation 3.

- Unity : moteur de jeux 2D et 3D propriétaire permettant de créer des jeux pour Windows, MAC OS X, Linux, Android, BlackBerry 10, iOS, Playstation 3 et 4, Playstation Vita, Navigateurs Internet, Xbox 360 et Xbox One. La programmation de scripts se fait en C# et UnityScript (un dérivé de JavaScript). Le moteur est gratuit pour tout projet réalisant moins de 100 000 $ de revenu par an. L'éditeur est disponible sous Windows et Mac OS X.

- Unreal Engine : moteur de jeux 2D et 3D propriétaire permettant de créer des jeux pour Windows, MAC OS X, Linux, Xbox One, Playstation 4, HTML 5, iOS, Android… La programmation de scripts se fait à l'aide d'un éditeur graphique « blueprint » ou en C++. Le moteur est gratuit pour tout projet réalisant moins de 3 000 $ par trimestre. Après cela, vous êtes soumis à 5 % de redevances. L'éditeur est disponible sous Windows, Mac OS X et Linux.

- GameMaker: Studio : moteur de jeux 2D propriétaire permettant de créer des jeux pour Windows, MAC OS X, Linux, HTML 5, Android, iOS, Windows Phone 8, Xbox One et Playstation. L'éditeur n'est disponible que sous Windows. Il a permis la création de Hotline Miami.

- Construct 2 : moteur de jeux 2D propriétaire permettant de créer des jeux pour Windows, MAC OS X, Linux, HTML 5 et Nintendo Wii U. L'éditeur n'est disponible que sous Windows. Il a permis la création de The Next Penelope.

III - Graphismes

Tout comme les programmeurs, les artistes ont aussi besoin de logiciels.

III-A - Logiciels pour la 2D

- GIMP : logiciel d'édition d'images (permettant aussi de dessiner) sous licence GPLv3 disponible pour Windows, Linux, MAC OS X, Amiga OS…

- Krita : logiciel d'édition d'images orienté vers la peinture numérique, sous licence GPLv2 disponible pour Windows, Linux et MAC OS X.

- MyPaint : logiciel d'édition d'images orienté vers la peinture numérique, sous licence GPLv2 disponible pour Windows, Linux et MAC OS X.

- Inkscape : éditeur d'images vectorielles sous licence GPLv2 disponible pour Windows, Linux et MAC OS X.

III-B - Logiciels pour la 3D

- Blender : logiciel de création 3D sous licence GPLv2 disponible pour Windows, Linux et MAC OS X.

- Wings3D : logiciel de modélisation 3D sous licence BSD disponible pour Windows, Linux et MAC OS X.

- MakeHuman : logiciel de création de modèles 3D de personnages sous licence AGPL disponible pour Windows, Linux et MAC OS X.

IV - Conception

Tiled : éditeur de tuiles pour créer des niveaux dans les jeux 2D et 2.5D sous licence GPLv2, pour Windows, Linux et MAC OS X. Tiled a notamment été utilisé au cours de la création de Shovel Knight.

V - Ambiance sonore

- Audacity : logiciel de retouche audio sous licence GPLv2 pour Windows, MAC OS X, Linux.

- Ardour : logiciel de création audio sous licence GPLv2, pour Windows et Linux.

- Ecasound : logiciel de création audio sous licence GPLv2, pour Windows et Linux.

- LMMS : station de création audio sous licence GPLv2, pour Windows et Linux.

- Rosegardern : station de création audio sous licence GPLv2, pour Windows et Linux.

- Hydrogen : logiciel de batteries sous licence GPLv2 pour Linux et MAC OS X.

- MilkyTracker : tracker sous licence GPLv2, pour Windows, Linux, MAC OS X, AmigaOS 4…

- TuxGuitar : éditeur de tablatures sous licence GPLv2 pour Windows, Linux et MAC OS X.

VI - Formats de fichier

De manière générale, tout au long de votre travail, privilégiez les formats de fichiers spécifiques à vos logiciels. Par exemple, le xcf pour GIMP. En effet, ces formats ont l'avantage d'être très bien traités par le logiciel en question, mais aussi, permettent de sauvegarder le plus d'informations utiles.
Ce n'est qu'une fois que vous avez besoin d'intégrer le résultat dans le jeu que vous pouvez passer à un format plus conventionnel et compatible avec votre jeu.

Que ce soit pour les images ou les sons, les données sont souvent compressées. Nous distinguons deux types de compression :

- la compression destructive avec laquelle quelques détails (souvent négligeables) seront perdus au cours de l'opération ;

- la compression non destructive, réduisant la taille du fichier tout en gardant sa totale qualité.

VI-A - Images

Plusieurs formats d'image sont intéressants. On pensera tout de suite au BMP, mais, malgré sa facilité à lire, celui-ci est lourd. Ainsi, les formats PNG et JPG seront plus pratiques. Le premier utilise une compression non destructive alors que le second diminue la qualité de l'image.
Pour les performances, vous pouvez vous intéresser aux formats proches de la carte graphique tels que le format DXT ou encore le PVRTC. Ces formats ont l'avantage d'être décompressés par la carte graphique et donc de prendre moins de place en mémoire vidéo.

VI-B - 2D

Pour les niveaux 2D et 2.5D, le format TMX est très répandu.

VI-C - 3D

Le format OBJ est un format simple pour les modèles 3D et généralement accepté par tous les logiciels. Toutefois, très souvent le format FBX (propriétaire) est préféré. Il est tout à fait possible d'exporter un fichier FBX avec Blender.

VI-D - Sons

Les sons (fichier audio court) sont généralement en WAV. Il est déconseillé de les utiliser pour des longs sons, car il est généralement non compressé et donc, utilise beaucoup d'espace disque.

VI-E - Musiques

Pour les musiques, utilisez plutôt le format Ogg Vorbis que le format MP3. Celui-ci possède une meilleure compression et est ouvert (contrairement au format MP3).

VI-F - Vidéo

De même que pour les musiques, orientez-vous vers le format vidéo ouvert Ogg Theora (extension OGV) et non pas vers le MP4 H.264.

VII - Licences

Le choix de la licence est important et ne doit pas être pris à la légère. En effet, c'est grâce à la licence que vous protégez votre travail et celui de vos collaborateurs.

VII-A - Copyleft

Les licences « copyleft » sont des licences laissant libres l'étude, la modification et l'utilisation d'un travail (code source…) tant que la licence est conservée.
En effet, si vous rendez public votre code source et qu'une personne en fait un nouveau projet à partir de votre code, avec une licence « copyleft » il sera obligé de garder la licence que vous avez utilisée.

VII-B - Pour la programmation

Les développeurs peuvent rendre leur code librement disponible tout en gardant ou non la paternité. Des licences ont été instituées afin de protéger le travail de chacun :

- GNU General Public License v2 (GPLv2) : licence ayant la notion de « copyleft » laissant la liberté d'utiliser, étudier, adapter, redistribuer librement le logiciel. Toute version modifiée doit être accessible par la communauté ;

- GNU General Public License v3 (GPLv3) : nouvelle version pour la licence GPLv2, rajoutant quelques modalités. Il est notamment plus facile d'utiliser des morceaux de code (bibliothèques…) ayant d'autres licences, dans un programme sous licence GPLv3 ;

- GNU Lesser General Public License (LGPL) : version moins restrictive de la GPL. Cette licence enlève la clause « copyleft » de la licence GPL en indiquant qu'il est possible d'utiliser un produit sous licence LGPL dans des programmes propriétaires. Par contre, les modifications faites à un logiciel sous licence LGPL doivent toujours être publiées ;

- MIT : licence open source permettant à un logiciel propriétaire de l'utiliser tout en conservant son caractère propriétaire. L'unique condition est de rajouter une mention stipulant la présence du logiciel sous licence MIT dans le produit final ;

- Apache : la licence permet d'utiliser, d'étudier, de modifier et de redistribuer le logiciel librement (et cela même dans les logiciels propriétaires), mais le copyright doit être maintenu lors de toute modification (ainsi que le texte de la licence) ;

- zlib/png : la licence d'utiliser, d'étudier, de modifier et de redistribuer le logiciel librement. Il est par contre impossible d'enlever le texte de la licence, de cacher l'origine du logiciel et un remerciement dans la documentation est apprécié (mais pas obligatoire). Si vous modifiez les sources, vous devez le renseigner ;

- BSD : la licence permet d'utiliser, d'étudier et de modifier le logiciel tout en gardant la mention de son origine (que ce soit pour les sources ou les binaires). Si un logiciel utilisant cette licence est utilisé (et cela même dans une campagne de promotion), la mention de son origine doit aussi être présente. Par contre, un produit dérivant ce logiciel ne peut utiliser la mention de l'origine pour promouvoir le produit sans l'accord de l'auteur original.

VII-C - Pour les ressources

Les ressources du jeu peuvent avoir leur propre licence :

- Creative Commons : les licences Creative Commons sont constituées de quatre modules formant ainsi six licences résultantes. Les modules sont : la présence de la signature de l'auteur, l'interdiction d'une réutilisation commerciale, l'interdiction de dériver le travail et la permission d'une redistribution en utilisant une licence identique ou similaire ;

- Licence Art Libre : la licence autorise de copier, de diffuser et de transformer librement les œuvres dans le respect des droits de l'auteur.

VII-D - Documentation

La documentation du logiciel peut avoir sa propre licence. La Free Software Fondation a également créé une licence libre pour tout ce qui concerne la documentation : la GNU Free Documentation License (GFDL). Elle autorise la redistribution et la modification de la documentation. C'est aussi une licence sous copyleft, donc tout produit dérivé doit garder cette même licence.

Malgré leur origine commune, la GFDL est incompatible avec la GPL. Cela signifie qu'il n'est pas possible de mettre sous licence GPL des ressources sous licence GFDL, ni inversement.

Il est possible d'utiliser une licence Creative Commons pour la documentation.

VIII - Conclusion

Voilà, ce petit guide de démarrage pour la création de jeux vidéo libres et à l'aide de logiciels libres s'achève ici. Nous avons essayé de vous donner un aperçu du merveilleux monde du libre, dans lequel vous pouvez par exemple prendre et modifier un logiciel pour l'adapter parfaitement à vos besoins.
Grâce à cette sélection d'outils, il devrait vous être plus simple d'aborder la problématique de programmation multiplateforme de jeux vidéo et aussi vous permettre de diminuer vos dépenses lors du processus de création.