Dans la filière jeux vidéo comme dans de nombreux autres domaines où les solutions prennent principalement la forme de programmes informatiques, le choix du langage de programmation est l’un des aspects auquel les intervenants n’échappent pas. En fonction de l’objectif à atteindre, à chacun sa liste de critères.
Un programmeur peut requérir d’un langage de programmation qu’il soit fiable c’est-à-dire qu’il permette de garder la main sur le contrôle des bogues. La nécessité de s’affranchir de la dépendance à un système d’exploitation en particulier peut aussi rentrer en ligne de compte. En sus, il y a des facteurs comme la simplicité ou le choix de paradigmes de programmation qui sont susceptibles d’intervenir. Jonathan Whiting – un travailleur de la filière programmation de jeux vidéo – cite ces critères (parmi d’autres) pour désigner le langage C comme son meilleur choix pour la programmation de jeux vidéo.
« Il y a des choses qui ne sont pas négociables. Tout d'abord, le langage de programmation doit être fiable. Je ne peux pas me permettre de passer mon temps à m'occuper de bogues que je n'ai pas causés moi-même. De plus, je veux éviter de me lier à un système d’exploitation particulier et dans l'idéal j'aimerais avoir la possibilité de développer pour les consoles. Il est donc important que mon langage de programmation dispose d'une bonne prise en charge de bibliothèques portables. L’aspect le plus important sur ma liste est la simplicité : le langage idéal est celui que je peux mémoriser avec aisance, ce qui permettrait de ne pas avoir à consulter de la documentation tout le temps. Gérer les bugs est un énorme gouffre créatif. Je veux pouvoir générer moins de bogues, donc je veux un typage fort, des messages d'avertissement stricts et une analyse statique du code. Je veux que les bogues soient plus faciles à trouver ce qui nécessite de disposer de bons outils de débogage. Je me soucie encore plus de la vitesse du compilateur. Je ne suis pas un maître zen de la concentration et attendre plus de 10 secondes est une perte de temps, oui, mais plus important encore, cela me brise le rythme. Dans des cas d’attente de ce type, je passe sous Twitter et la conséquence est que c’est plus de 5 minutes de gaspillées. Enfin, je ne suis pas fan de programmation orientée objet. J'ai passé la majeure partie de ma vie professionnelle à travailler avec des classes et des objets, mais plus je passe de temps, moins je comprends pourquoi on doit combiner le code et les données de manière aussi rigide. Je veux traiter les données comme des données et écrire le code qui convient le mieux à une situation particulière », précise-t-il.
En matière de programmation de jeux vidéo, l’un des débats de fond porte sur la gestion de la mémoire. La plupart des langages de programmation dont on fait usage dans la filière s’appuient sur des ramasse-miettes. Seulement, les retours à propos de leur utilisation font état de ce que le programmeur perd le contrôle sur les périodes d’allocation et de libération des zones de mémoires par le Garbage Collector. Cet état de choses pose le problème de la gestion de certains aspects temps réel. Pour résoudre le problème, certaines équipes de développement proposent de revenir à une gestion manuelle des allocations et libérations des zones de mémoire. Des cas de figure de ce type positionnent le langage C dans la liste de ceux susceptibles de faire l’affaire.
C’est pour autant de raisons que Whiting code ses jeux dans un C « vanilla », c’est-à-dire épuré dont les programmeurs disposent dans d’autres langages (frameworks, …). Il y a seulement que son développement laisse filtrer qu’il s’appuie sur le langage C dans le cadre de projets personnels. Toutefois, il reconnaît qu’il fait plutôt usage du langage C++ pour la plupart de ses projets commerciaux.
« Le langage C++ couvre mes besoins, mais est loin de respecter mes critères en matière de choix de langage de programmation pour le développement de jeux vidéo. C'est un langage très compliqué. Malgré la disponibilité de bons outils, il est facile de créer des bogues en s'appuyant sur ce dernier. Il est également lent à compiler comparé à C. Il est cependant très performant et offre des fonctionnalités dont le langage C ne dispose pas », écrit-il.
Aux langages C# et Java, Withing oppose la simplicité du langage C qui se traduit par la non-nécessité d’embrasser des paradigmes de programmation « complexes » comme la programmation orientée objet. « Comme la plupart des langages évolués, ils ont tendance à cacher la complexité d'une manière qui ne l'empêche pas de vous mordre », lance-t-il.
La programmation de jeux vidéo est aussi une histoire de plateforme cible. Si l’on veut écrire des programmes pour de vieilles machines (Game Boy, Amiga, Atari) alors les possibilités de faire autrement qu’avec l’assembleur deviennent très minces. Avec l’aura actuelle de la plateforme Android, des langages comme Java ou Kotlin arrivent à se tailler des parts de marché même si l'on attribue au C++ le fauteuil de langage par excellence des jeux vidéo.
Source : billet de blog
Et vous ?
Quel est votre meilleur choix de langage pour programmer des jeux vidéo ? Quelles sont vos raisons ?
Quels sont les aspects du langage C susceptibles de vous amener à le citer comme votre meilleur choix en matière de programmation de jeux vidéo ?
Voir aussi :
Quel avenir pour le langage C ? Un développeur expérimenté fait ses adieux au langage et livre ses inquiétudes quant à son avenir
C2 : un langage qui se présente comme une évolution de C, plus rapide, sans fichiers d'en-tête, avec système de build intégré et d'autres changements
Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D
Pourquoi les langages C et C++ auraient-ils encore de nombreuses années devant eux ? Donnez votre avis
« Pourquoi le C est mon meilleur choix pour programmer des jeux vidéo », d'après un travailleur de la filière
Qui s'appuie aussi sur le C++ pour ses projets commerciaux
« Pourquoi le C est mon meilleur choix pour programmer des jeux vidéo », d'après un travailleur de la filière
Qui s'appuie aussi sur le C++ pour ses projets commerciaux
Le , par Patrick Ruiz
Une erreur dans cette actualité ? Signalez-nous-la !