Vous avez une idée de jeu. Vous souhaitez la réaliser mais vous n’arrivez pas à choisir le langage de programmation à utiliser ? Cet article offre des éléments de réponse à ce problème en pesant les pour et les contre de chacune des solutions ci-dessous.
Sommaire :
- C/ C++
- Java
- C#
- Python
- Ruby
- ActionScript 3 (AS3)
- Autres mentions
- Conclusion
C/C++.
Deux références de l’industrie vidéoludique. Le langage C est un langage impératif créé par Dennis Ritchie et Ken Thompson pour être efficace à l’exécution. Conçu par Bjarne Stroustrup, le C++ est la version orientée objet du langage C.
IDE :
Visual Studio (licence gratuite et payante) :
Visual Studio est un logiciel complet et puissant développé par Microsoft. La licence « Community » gratuite vous permet de développer des applications personnelles. Pour les projets professionnels, il faut se tourner vers la licence payante « Professional ».
Code::Blocks (gratuit) :
En plus d’être gratuit, open source et multiplate-forme, Code::Blocks est un éditeur simple d’utilisation. Les messages d’erreur retournés par le compilateur GCC portent parfois à confusion, mais il est possible de le remplacer.
KDevelop (gratuit) :
KDevelop est un environnement de développement gratuit multiplate-forme permettant de développer en C, C++, Python, JavaScript et PHP. Il a la particularité d’avoir un debugger GNU plus précis par défaut.
Autres :
Eclipse (gratuit), NetBeans (gratuit), CLion (payant), Xcode (gratuit) (pour les environnements Apple)…
(Attention, il existe une multitude de compilateurs C/C++. Par exemple, les compilateurs par défaut de Visual Studio et de Code::Blocks (GCC) sont différents. De ce fait, un même code peut réagir différemment en fonction du logiciel utilisé.)
Les moteurs de jeu :
SFML (Simple and Fast Multimedia Library) (gratuit) :
Développé à l’origine par Laurent Gomila, SFML offre une interface simple d’utilisation pour développer des jeux ou interfaces graphiques multiplate-forme en C++. Basé sur l’API OpenGL, la bibliothèque française permet de réaliser des jeux 2D ou 3D.
(Voir aussi SDL, Oxygine et Allegro, 3 bibliothèques 2D gratuites).
Unreal Engine (royalties 5%) :
Unreal Engine est un moteur de Jeu 3D reconnu pour ses prouesses graphiques. En effet, le moteur est capable de générer des millions de particules dans un environnement composé de lumières dynamiques. Entre autre, le jeu vidéo BioShock Infinite a été développé avec Unreal Engine 3.
CryEngine (gratuit) :
À la base utilisée pour développer la série Far Cry (et plus généralement les jeux de tir à la première personne), CryEngine tend à devenir un moteur de jeu généraliste de plus en plus accessible. CryEngine aspire à devenir la plateforme de création de jeu la plus puissante.
Exemples de jeux codés en C++ :
World Of Warcraft, Warcraft III, Starcraf II, Counter Strike, Skyrim (et pratiquement l’ensemble des jeux AAA qui nécessitent de bonnes performances).
image du jeu fortnite développé par epic games
skyrim jeu developpé par Bethesda Game Studios
Avantages :
– Compilé en ASM (qui en fait l’un des langages les plus performants du marché).
– Capacités limités par votre niveau technique.
– Conseillé pour de grosses productions bien organisées.
Inconvénients :
– Complexe à aborder à cause de sa gestion bas niveau de certaines fonctions.
– On se retrouve parfois confronter à des problématiques dont on aimerait se passer.
– Le multiplate-forme est parfois long à mettre en place.
– Nécessite beaucoup d’investissement pour maîtriser le langage.
Java.
Java est un langage généraliste, orienté objet, développé par Sun Microsystems (Aujourd’hui détenu par Oracle). Sa machine virtuelle lui permet de s’exécuter sur plusieurs plateformes en conservant des performances honnêtes. Le système Android est notamment développé en Java. La dernière version, Java 1.8, introduit de nouvelles fonctionnalités augmentant la productivité.
IDE :
Eclipse (gratuit) :
Eclipse est un environnement de développement Open Source pour développer en Java, C/C++, JavaScript et PHP. Il permet de créer des applications de bureau et des applications Web. La particularité de cet éditeur est sa modularité. En effet, il est possible de développer des add-ons pour le logiciel. L’Eclipse Marketplace constitue une collection importante de plugins Eclipse.
NetBeans (gratuit) :
NetBeans est similaire à Eclipse. Il se différencie par un constructeur d’interface graphique complet. Sa collection de plugins est plus restreinte que celle d’Eclipse mais les principaux add-ons sont présents.
IntelliJ IDEA (payant) :
Environnement de développement payant, IntelliJ IDEA offre un système de configuration des raccourcis exhaustif. Cependant, le logiciel dispose d’un concept d’espace de travail (project/modules) différent des autres environnements qui peut être perturbant pour les néophytes.
Ces trois logiciels se valent. Ils sont suffisamment complets et configurables pour que votre choix ait un impact mineur sur vos futurs projets.
Les moteurs de jeu :
Libgdx (gratuit) :
Libgdx est un framework open source multiplate-forme desktop, Android, iOS et HTML5. Basé sur LWJGL qui est lui-même basé sur OpenGL, Il offre des classes graphiques permettant de réaliser des jeux 2D ou 3D.
LWJGL (gratuit) :
Acronyme de Lightweight Java Game Library, LWJGL est une bibliothèque open source multiplate-forme gérant l’image (avec OpenGL), l’audio (avec OpenAL) et le calcul parallèle (avec OpenCL). Elle est conçue pour réaliser des frameworks de jeu comme Libgdx.
Exemples de jeux codés en Java :
minecraft jeu developpé par Mojang Studios
Angry-Birds jeu developpé par Rovio Entertainment
Avantages :
– Bonne courbe d’apprentissage.
– Gestion de la mémoire dédiée au garbage collector.
– Librairie de base exhaustive.
Inconvénients :
– Nécessite de bonnes connaissances pour exploiter pleinement le langage.
– Hors java8, on se retrouve exposé à des problèmes de conception nécessitant l’utilisation de design patterns encombrant les sources.
– N’applique pas le paradigme objet pure.
C#.
Développé par Microsoft, C# corrige des problèmes de productivité liés à ces derniers et offre des performances très honnêtes. La syntaxe du langage s’inspire fortement de ses congénères : Java et C++.
IDE :
Visual Studio (licence gratuite et licence payante) :
Logiciel complet et productif développé par Microsoft. La licence « Community » gratuite vous permet de développer des applications hors cadre entreprise. Pour les petites structures, il faut se tourner vers la licence payante « Professional ».
MonoDevelop (gratuit) :
MonoDevelop est conçu pour développer efficacement sur plusieurs plateformes.
Les moteurs de jeu :
MonoGame (gratuit) :
MonoGame est une bibliothèque gratuite et open source qui reprend les classes de la bibliothèque abandonnée : Microsoft XNA. Elle est basée sur le logiciel Mono la rendant ainsi multiplate-forme.
Unity (gratuit) :
Unity est un logiciel gratuit de création de jeux vidéo 2D et 3D. Il offre un éditeur de monde et une bibliothèque. Vous devez acheter la version pro à partir de 100 000€ de revenu par an perçu par vos jeux Unity.
Exemples de jeux codés en C# :
Avec MonoGame : Bastion, Terraria, Fez, TowerFall Ascension, Apotheon.
Avec Unity : Rust, Super Mario Run.
super mario run développé par Nintendo Entertainment Planning & Development
rust jeu développé par Facepunch Studios
Avantages :
– Très productif et efficace.
– Agréable à utiliser.
Inconvénients :
– Nécessite de bonnes connaissances pour devenir productif.
– N’applique pas le paradigme objet pure.
Python.
Langage interprété généraliste créé par Guido Van Rossum, Python a été conçu pour être lisible et facilement maintenable. Il nécessite généralement moins de lignes de code pour réaliser une même fonctionnalité en C++ ou en Java. Il dispose d’une bibliothèque standard très compréhensive.
Les moteurs de jeu :
PyGame (gratuit) :
PyGame est une bibliothèque libre multiplate-forme conçue à partir de la bibliothèque C : SDL.
Blender game Engine (gratuit) :
Moteur de jeu basé sur le logiciel d’animation 3D : Blender.
Exemples de jeux codés en Python :
Image du jeu Yo Frankie! développé par Blender Institute avec Blender Game Engine.
Image du jeu Super Mario Python (imitation du jeu Super Mario Bros) développé par HJ avec PyGame.
Avantages :
– Réputé facile à prendre en main.
– Enseigne la rigueur.
– Conseillé pour faire des petits jeux.
Inconvénients :
– Nécessite une forte rigueur.
– Déconseillé pour les grands projets et les jeux qui nécessitent beaucoup de ressources.
Ruby.
Langage de script développé par Yukihiro Matsumoto. Pensé pour être facile à utiliser et plus objet que ses analogues interprétés : Python et Perl.
Ruby est multi-paradigme (objet/fonctionnel/impératif).
IDE :
NetBeans (gratuit) ou Eclipse (gratuit) (avec le plugin Ruby).
Les moteurs de jeu :
RPG Maker (période d’essai gratuite) :
Logiciel de développement de jeux de rôles 2D. RPG Maker offre un éditeur de niveau et une interface de Script.
Gosu (gratuit) :
Gosu est un framework multimédia. Principalement utilisé pour faire des jeux.
Exemples de jeux codés en Ruby :
Image du jeu To The Moon développé par
Freebird Games avec RPG Maker.
Image du jeu Lisa développé par
Dingaling Productions avec RPG Maker.
Avantages :
– Intuitif.
– Bonnes pratiques objets.
Inconvénients :
– Petite communauté.
– inadapté pour de gros projets.
ActionScript 3 (AS3).
Action Script 3 est un langage orienté objet très similaire à Java. Développé par Macromedia (aujourd’hui Adobe Systems), le langage est conçu pour réaliser des animations vectorielles 2D et des jeux flash. Le lecteur multimédia officiel pour exécuter de l’Action Script 3 s’appelle Adobe Flash Player.
IDE :
FlashDevelop (gratuit) :
FlashDevelop est un éditeur open source permettant de développer en AS2, AS3 et Haxe. Le logiciel est léger, rapide et propose les principales fonctionnalités d’un environnement de développement (autocomplétion, customisation, raccourcis, template…).
Flash Builder (période d’essai gratuite puis payant) :
Environnement de développement basé sur Eclipse et développé par Adobe Systems. Le logiciel est conçu pour développer des jeux crossplate-forme sur Android, iOS, Windows et Mac OS.
FDT (gratuit) :
Acronyme de Flexible Development Toolkit. FDT est un éditeur Eclipse pour développer en AS3 ou en HTML5/JavaScript. Le logiciel propose une version gratuite et payante.
Les moteurs de jeu :
FlashPunk (gratuit), Flixel (gratuit) et Citrus (gratuit) :
Ces trois moteurs de jeu sont open source et permettent de réaliser des jeux vidéo 2D. Ils sont conçus pour être faciles d’utilisation. Citrus est basée sur Starling qui la rend multiplate-forme. Testez-les pour faire votre choix.
Starling (gratuit) :
Starling est un moteur de jeu open source et permettent de réaliser des jeux vidéo 2D. Il est plus bas niveau que ses analogues FlashPunk, Flixel mais aussi multiplate-forme.
Exemples de jeux codés en AS3 :
Image du jeu Dofus développé par Ankama.
Image du jeu Angry Birds développé par
Rovio Entertainment avec Starling.
Avantages :
– Bibliothèque standard agréable, orientée animation 2D.
– Conseillé pour des petits jeux sur navigateur, smartphone ou desktop.
Inconvénients :
– De plus en plus obsolète (peu d’avenir).
– Déconseillé pour des gros projets (Dofus est l’exception qui confirme la règle).
Même si le langage est capable de réaliser de très bons jeux sur navigateur, il se fait lentement remplacer par HTML5.
HTML5 n’a pas encore toutes les capacités d’AS3, mais cela ne saurait tarder
En attendant, un néophyte peut se tourner vers Java ou C#.
Autres mentions.
Il existe évidemment bien d’autres langages (HTML5/JavaScript, Objective-C, Perl, Fortan, Lisp). Certaines solutions manquent encore d’implémentations, d’autres sont trop spécifiques à une situation ou sont tout simplement inadaptées à l’industrie vidéoludique.
Toutefois, réaliser un jeu avec ces langages peut être envisageable et amusant.
Conclusion.
Comprenez que la technologie idéale n’existe pas. Les langages listés sont généralistes. Leur utilisation ne se limite pas au développement de jeux vidéo.
Votre préférence fait également partie des critères à prendre en compte. Pour réaliser un premier jeu, l’essentiel est d’apprendre de la manière la plus ludique possible. Si votre langage favori est suffisamment complet pour votre projet, alors choisissez-le.
Toutes les solutions ci-dessus sont de bons choix. Vous devez faire des compromis en fonction de ce que vous avez besoin à court/moyen terme.
Contenu extrait de: https://splashlogics.com/quel-langage-de-programmation-choisir-pour-un-jeu/.