Accueil > Game Design > Par où commencer pour apprendre à coder un jeu ? – Les bases du C++

Par où commencer pour apprendre à coder un jeu ? – Les bases du C++

Catégorie(s) de l'article : Game Art | Game Design
Article écrit par Hugo
Le loisir vidéoludique est souvent vu aujourd’hui comme un art, une création au même titre qu’un roman ou un film. Toutefois, il faut bien se rappeler que derrière cette illusion de fluidité, on retrouve bel et bien un programme à base d’uns et de zéros. 

Le développement est un travail d’équipe, chaque personne s’occupe de différentes tâches en fonction de ses spécialités. Toutefois, que vous soyez programmeur, Game Artist, Game Designer ou dans les métiers du jeu vidéo en général, vous devrez tôt ou tard vous confronter à la machine.

Cela est d’autant plus important si vous comptez vous lancer en tant qu’indépendant. Moins il y a de personnes travaillant sur un projet, plus la frontière entre programmeur et les autres postes devient floue.

Voici donc pour vous aider tout ce que vous avez besoin de savoir pour commencer à créer un jeu vidéo.

Choisir son Game Engine

La première grosse décision que prend un studio lorsqu’il se lance dans la création d’un nouveau jeu (après l’étape de conceptualisation) est de choisir le moteur de jeu qu’il utilisera.

Ce moteur agira comme la base du jeu, le programme qui rassemblera tous les éléments le composant dans un ensemble cohérent. C’est grâce au moteur du jeu que le mouvement et les interactions sont rendus possibles, notamment par l’exécution de très nombreux scripts.

Deux options s’offrent alors aux studios de développement :

Créer son propre moteur

Il s’agit de la méthode de prédilection de la plupart des jeux AAA : créer un moteur propriétaire et spécialement conçu pour les besoins du jeu. Il n’est pas toujours nécessaire de partir de zéro : la plupart des game engine sont des variations d’anciennes bases possédées par le studio.

Toutefois, il s’agit d’une méthode particulièrement coûteuse et complexe à mettre en place. Développer un moteur de jeu demande de grandes compétences techniques, et surtout, énormément de temps.

Louer ou acheter une licence de moteur

Plus accessible, beaucoup moins chère et capable de réaliser des jeux de très haute qualité, c’est vers cette option que la plupart des studios vont se tourner. Ces moteurs sont publics et accessibles par le biais d’un paiement direct ou sous forme de royalties. Ils proposent également de larges banques d’assets, qui peuvent grandement faciliter le processus de développement.

Exemples : Unity, Unreal Engine, Godot, Gamemaker

Comment fonctionne un ordinateur : les bases du code

Un ordinateur n’est rien de plus qu’une gigantesque machine de calcul arithmétique. Pour cela, il utilise un processeur (ou CPU), qui est en réalité composé de millions de petits transistors. Ces appareils ne sont en réalité que des petits leviers, qui laissent ou non passer le courant. Seul deux valeurs sont donc possibles pour un ordinateur : oui ou non, un et zéro.

C’est pour cette raison qu’on dit que ces machines ne comprennent que le langage binaire. Avec des simples données cependant, il est possible de créer des portes logiques : la base de la programmation.

Toutes les informations qui transitent par un ordinateur doivent ainsi être interprétées et converties dans ce langage binaire. Bien entendu, cette série de chiffre n’a aucun sens pour un humain. Pour pallier à ce problème, on a alors créé des langages de programmations.

Les langages de programmation

Les langages de programmation sont des interfaces compréhensibles pour des humains qui vont se charger de convertir des instructions en code binaire. Cela permet donc à un ordinateur de comprendre ces commandes, et ainsi de créer de nouveaux programmes.

Dans l’absolu, il est possible de coder n’importe quoi avec n’importe quel langage de programmation. Toutefois, certains sont plus adaptés ou efficaces que d’autres pour certaines tâches, ou proposent certaines spécificités. La plupart des programmeurs ne connaissent que quelques langages de programmation pour des raisons pratiques.

On dit qu’un langage de programmation est de bas niveau lorsqu’il s’éloigne peu d’un système binaire, ce qui le rend plus difficile à comprendre mais plus flexible. A l’inverse, ceux de haut niveau s’éloignent de la logique binaire. Ils disposent d’une interface plus intuitive pour les humains, mais laissent certains paramètres plus fins inaccessibles.

Les langages de programmation les plus utilisés du jeu vidéo.

C++

Le C++ est de loin le langage de programmation le plus utilisé dans le jeu vidéo, mais aussi d’une grande partie de l’informatique en général. C’est le langage utilisé par la plupart des plus grands moteurs de jeu (Unity, Unreal Engine, Godot, GameMaker…)

Le C++ est un langage de bas niveau : il est donc assez difficile à appréhender au départ. Il est nécessaire de s’entraîner afin de comprendre la manière dont ce langage à la logique rigide fonctionne.

Il en vaut toutefois la peine : le C++ est conçu pour être extrêmement malléable une fois qu’on en a assimilé les subtilités.

Il est particulièrement populaire dans le jeu vidéo car il permet d’exercer un contrôle plus direct sur les processus liés à la mémoire et ressources graphiques. Une caractéristique plutôt importante pour des projets aussi gourmands.

Le fait qu’il soit utilisé par tant de développeurs en fait également un langage très documenté. Vous trouverez de très nombreuses ressources, aides et informations directement en ligne avec une simple recherche.

Il s’agit d’un dérivé de la grande famille de langages des « C », ce qui le rend assez proche de nombreux autres langages de programmation. Le C++ est lui-même à la base d’autres variations, tels que le C# (dit « si sharp »), de plus en plus populaire dans le jeu vidéo pour son meilleur confort d’utilisation.

Jeux créés avec C++ : La quasi-totalité des jeux vidéo modernes

Javascript

Langage très proche du C++, il s’agit généralement de la seconde corde à l’arc des programmeurs. Java propose une caractéristique assez unique : son code n’a pas besoin d’être recompilé. En d’autres termes, une application Java fonctionnera exactement de la même manière sur toutes les machines et systèmes (pour peu qu’ils supportent Java).

Cela lui permet de franchir la plupart des barrières et d’exporter facilement un jeu ou un programme sur de nombreuses plateformes : PC, Mac, Linux, Android, IOS…

Jeux créés sous Java : Minecraft, Runescape, Angry Birds, Mugen, Wakfu

Python

Python est un langage de programmation de haut niveau, qui privilégie la lisibilité aux performances brutes. C’est un langage assez populaire pour développer des applications et des programmes. Python est assez rarement utilisé pour des jeux complexes, mais il peut servir d’une bonne base d’entrainement pour quelques projets plus simples.

Jeux réalisés sous Python : Eve Online, Doki Doki Literature Club, Civilization IV, Pong, Space Invader

Quelques bases du C++

Vous l’aurez compris, une grosse partie du développement d’un jeu vidéo passe par la maîtrise du C++ ou de langages de programmation qui en sont dérivés. Il est difficile de décrire l’étendue gigantesque des possibilités ouvertes par ce langage dans un article concis. Voici toutefois une introduction pour en comprendre les rudiments.

La tâche à réaliser

On ne code jamais au hasard : chaque script doit avoir une fonction simple mais précise. C’est l’enchaînement de ces scripts qui créent des programmes complexes.

Pour cet exemple, nous décortiquerons une petite tradition du monde de la programmation pour s’assurer qu’un programme fonctionne. L’objectif ici sera d’ouvrir une interface capable de pouvoir nous dire « Hello World » par le biais d’un script C++

Où commencer à coder ?

Vous pouvez écrire en langage C++ sur n’importe quel programme. Cependant, il est fortement recommandé d’utiliser un IDE (Integrated Development Environment). Ces programmes permettent de clarifier énormément votre code et proposent des outils pour vous aider à écrire (structuration, élimination des redondances, couleurs automatiques…)

Plus important : ils permettent également de compiler votre code, c’est-à-dire, de le transformer dans un programme à exécuter pour votre ordinateur. Si vous êtes sur Windows, cela va se traduire par une petite fenêtre noire qui affichera votre texte ou votre calcul par exemple.

Exemples d’IDE gratuits : Dev-C++, Blocks, Eclipse, Visual Studios

Si vous désirez faire un rapide test, il existe aussi quelques sites en ligne, comme celui-ci. Vous pouvez y modifier le texte, faire quelques expérimentations, puis appuyer sur « run » pour voir votre résultat.

Tous les moteurs de jeux possèdent également une interface pour coder directement.

La syntaxe

Dans le C++, tout est une question d’ordre logique et de syntaxe. Le C++ fonctionne sous forme de lignes de code, qui seront lues dans l’ordre de haut en bas. Le programme va reconnaître des fonctions, qui effectueront des actions sur des objets, qui comportent eux-mêmes plusieurs paramètres.

Note importante : C++ ne compte que les espaces à l’intérieur des variables, mais ignore les blancs autrement. Vous pouvez donc séparer vos fragments de code afin de le rendre plus lisible sans que le résultat soit affecté. Enfin, toute phrase dans un langage C++ se termine par un « ; ». Autrement, elle se poursuit, ce qui est a l’origine de nombreux bugs.

Header

En haut de chaque code C++ se trouve un header. Il s’agira presque toujours de « #include <iostream> ». Cette ligne est créée automatiquement et est essentielle pour la lecture du script. Vous pouvez complètement l’ignorez, mais ne l’effacez pas.

Bibliothèque utilisée

Les scripts écrits en C++ sont répertoriés dans une bibliothèque qui leur donnent accès à diverses références (fonctions personnalisées, assets…). Nous l’ignorons dans cet exemple, mais elle peut avoir une importance au cours de grands projets, comme un jeu comportant plusieurs bibliothèques séparées.

Fonctions

Lorsque le code arrive à une fonction, il exécute son action sur les éléments dans les parenthèses qui la suivent. La fonction « int main » utilisée dans l’exemple sert à exécuter un code, on la retrouve donc très souvent. Elle est suivie de deux set de parenthèses :

  • les « () » définissent des variations de la fonction
  • les « {} » définissent le code qui sera exécuté par la fonction.

Des fonctions personnalisées peuvent aussi être créées, auxquelles on peut attribuer des suites d’ordres plus spécifiques (pour éviter les répétitions).

Fin de la fonction

Pour signifier que la fonction a terminé sa tâche avec succès, il faut écrire « return 0 ». N’oubliez pas non plus de fermer les parenthèses.

Résultat :

Un programme s’exécute et écrit « Hello world ».

Aller plus loin

Vous l’aurez compris, cet exemple ne suffira pas à faire de vous un programmeur chevronné. Il vous faudra vous familiariser avec les boucles (loop), les conditions (if, else if) ou simplement la réalisation de calculs avant de vous lancer dans la création d’un projet plus sérieux.

Vous trouverez beaucoup de ressources en ligne et de nombreux tutoriels pour vous aider. Si vous désirez obtenir un cadre plus spécifique et pédagogique, il existe aussi des formations spécialisées dans le jeu vidéo. Un professeur pourra facilement vous suivre et vous épauler pour vous éclairer sur les arcanes du coding tout en vous enseignant de nombreux autres fondamentaux de la création d’un jeu vidéo.

Game Engine et scripts : comment construire un jeu ?

Vous maîtrisez les bases du coding ? Félicitations ! Maintenant, en quoi ces lignes de code peuvent-elles vous permettre de réaliser un jeu ?

A quoi servent les scripts ?

Il est plus simple d’imaginer les lignes de scripts comme les différentes règles qui définissent l’univers du jeu. Un jeu n’est pas un programme linéaire : il n’est donc pas composé que d’un seul long code qui s’exécute.

A la place, chaque action effectuée par le joueur dans ce monde fait appel à une multitude de scripts simples, qui s’exécuteront avec une cohérence logique. Ils forment les bases de tous les éléments, modèles, actions et calculs d’un jeu vidéo, ce qui les rend particulièrement modelables.

Ils permettent par exemple de :

  • Définir les caractéristiques et valeurs de chaque actions (contrôles de la manette, vitesse d’un personnage, dégâts infligés par une attaque, hitbox…)
  • Effectuer les nombreux calculs du jeu vidéo
  • Calculer les résultats d’une action aléatoire (coup critique, butin d’un monstre…)
  • Déclencher un évènement en fonction de la position ou des actions d’un personnage (changement de musique, apparition de d’ennemis, chargement d’une nouvelle zone…)
  • Vérifier des conditions remplies ou non par le joueur (option de dialogues, porte qui ne s’ouvre que grâce à une certaine clé…)
  • Demander de charger différents assets (boite de dialogue, musique, modèle 3D…)

A quoi sert le moteur de jeu ?

Le moteur jeu a comme rôle de regrouper, coordonner et exécuter les scripts. Il se charge également de faire la liaison avec les différentes bibliothèques d’assets, parmi lesquels on retrouvera les modèles 3D, musiques, textures, intelligences artificielles… Chacun de ces éléments dispose d’un nom (ID) que les scripts pourront utiliser pour dire au game engine quoi actionner et sous quelles conditions.

Le moteur de jeu permet de rendre l’abstrait concret. Il va rassembler les ensembles de scripts sous la forme d’objets, plus faciles à visualiser et manipuler dans l’espace virtuel.

Par exemple, faire apparaître un ennemi de RPG est le résultat de nombreux paramètres : intelligence artificielle, chargement de son modèle, bruitages et particules, calcul de ses points de vie, dégâts, armure, déplacements…

Une fois ce travail effectué en revanche, l’ennemi dans son ensemble est conservé, stocké et peut être facilement réutilisé à différents endroits du jeu. Il en va de même pour les Player Characters, NPC, éléments du décor, mécaniques de gameplay… Assembler ces différents éléments est ensuite à la base du level design.

Les moteurs de jeu possèdent également de nombreux outils qui permettent de faciliter la vie des développeurs et Game Designers : gestion de l’espace, des déplacements, du moteur physique (vitesse, gravité…), réalisation de modèles 3D…

Exemple avec un plongeon

Voici un exemple simple : Le personnage du joueur saute dans l’eau. Du point de vue du joueur, la transition se fait très naturellement. Voici cependant ce qui se passe au niveau des scripts du moteur du jeu :

  • Un des scripts, chargé des commandes du jeu, détecte que le bouton « saut » est pressé par le joueur et ajuste la position verticale du personnage dans l’environnement virtuel du jeu. Il en va de même pour le déplacement en avant.
  • Le niveau est découpé en plusieurs zones dans le moteur du jeu, définies par différents états. Dans le cas d’un lac, on va par exemple donner un attribut « eau » (ce nom est arbitraire) à l’espace occupé par l’eau.
  • Au moment où le personnage touche la surface, plusieurs autres scripts se déclenchent. L’un d’entre eux va chercher dans la banque de bruitage, composée par les Game Artists, un son « plouf ». Un autre va chercher dans les effets graphiques (sprite ou particules en fonction du jeu) afin créer des éclaboussures.
  • Une fois dans l’eau, les scripts détectent que la variante « eau » est enclenchée, ce qui peut changer divers éléments, comme la physique du jeu ou les contrôles, pour simuler un mouvement proche de la nage.

Par où commencer pour apprendre ?

Vous trouverez de très nombreuses ressources en ligne vous permettant de commencer à maîtriser les bases du coding. Notez cependant qu’il vous faudra quoi qu’il arrive avoir une bonne maîtrise de l’anglais, tous les langages de programmation étant écrits dans cette langue.

  • W3schools.com : Ce site très didactique propose une série de cours qui permettront de réviser toutes les bases de la plupart des langages de programmation. Vous trouverez la section pour le C++ ici.
  • Des jeux pour apprendre à coder : On apprend mieux en s’amusant, il n’est donc pas surprenant de voir des jeux qui apprennent à créer d’autres jeux. On retrouve parmi eux CodeMonkey ou CodeCombat.
  • Une formation Gaming spécialisée : Malgré toutes ces aides, rien ne vaudra une formation entièrement dédiée au gaming. En plus de vous inculquer les bases vous permettant de coder, elle vous enseignera aussi comment maîtriser les différents game engines et autres aspects essentiels au game design ou game art.
A moins que vous travailliez en tant que programmeur, vous ne devriez pas avoir à faire face chaque jour au code de votre jeu. Cependant, il est essentiel que vos compreniez comment ce dernier fonctionne. A défaut de savoir écrire, vous devrez au minimum savoir comment le lire et l’interpréter.

Le secret cependant est de ne pas imaginer le coding comme une gigantesque tache pharaonique, mais comme de nombreuses briques à entreposer unes à unes. C’est en prenant du recul une fois la tâche finie qu’on se rend compte de l’ampleur du projet final. N’oubliez simplement pas tester régulièrement votre code, ou gare aux bugs.

Si vous souhaitez intégrer les métiers liés au monde du gaming et de la création vidéoludique, Campus des Ecoles vous propose des formations spécialement dédiées aux métiers du numérique.

Vous voulez intervenir dans le Game Design et diriger les mondes que vous créez ? Vous trouverez votre bonheur ici.

Le domaine du dessin et de la modélisation vous intéresse plus ? Vous pourrez faire prendre vie à vos créations en suivant une formation de Game artist

Ces articles peuvent également vous intéresser :

Je m'informe gratuitement et sans engagement
Je m'informe gratuitement et sans engagements !

Ou appelez nous dès maintenant au :
02 30 30 20 26