IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Quelle route prendre pour apprendre le C++ et la programmation de moteurs de jeux ?


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Quelle route prendre pour apprendre le C++ et la programmation de moteurs de jeux ?
    Bonjour, j'ai 21 ans et je me suis mis a la programmation en C++ en suivant un livre nomme "C++ Primer", j'ai installe Vim et j'ai un peu pris en main le terminal sur windows 10 et je m'amuse pas mal a ce jour avec tout ca

    J'avais l'habitude de regarder des videos de gens en train de programmer leur propre jeux sur youtube du style game jams et autres ainsi que leurs propres moteurs de jeu et sachant que je suis la route auto didacte j'aurai aime avoir quelques conseils pour sortir avec des bases solides et surtout quelle route prendre si je souhaite par exemple apprendre a faire un moteur de jeu ? J'etais un grand fan d'un jeu qui s'appelle Cortex Command et pour lequel j'ai cru comprendre que le moteur de jeu derriere est fait de zero.

    Merci et navre si ce genre de question de debutant est un peu idiote mais j'en apprend toujours plus chaque jour !

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    octobre 2004
    Messages
    11 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : octobre 2004
    Messages : 11 564
    Points : 30 278
    Points
    30 278
    Par défaut
    Salut, et bienvenue sur le forum.

    Le problème, c'est que "un jeu", quel qu'il soit, ca demande un tas de compétences dans énormément de domaines particuliers. Car on y trouve entre autres
    • un scénario / une histoire
    • une physique
    • un rendu
    • du son
    • une certaine "intelligence artificielle"
    • une certaine forme d'aléatoire
    • et plein d'autres choses encore

    Alors, tu te doute que, si l'idée est de faire ton moteur de jeu, de créer un programme qui puisse aider "un quidam" à créer "plus facilement" son jeu, il faut d'autant mieux maitriser ces domaines que pour les rendre "facile d'accès" à celui qui voudra l'utiliser pour son jeu.

    Bien sur, on ne retrouve pas tous ces ingrédients dans tous les jeux. Par contre, il y a aussi des jeux dans lesquels on retrouvera d'autres ingrédients auxquels je n'ai pas forcément pensé et dont tu pourrais avoir besoin

    Alors, autant le dire tout de suite: il n'est pas impossible (car rien n'est impossible) de créer son propre moteur de jeux. Et je suis même convaincu que cela peut t'apprendre et t'apporter énormément de le faire. Seulement, ce n'est clairement pas le genre de projet dans lequel il faut se lancer "sans rien", sans "un minimum" de connaissances à la base.

    Si, en plus d'apprendre les finesses du langage -- et Dieu sait que le C++ en contient énormément -- tu dois commencer à apprendre les maths, le calcul matriciel et vectoriel, à utiliser les différentes API graphiques (directX, OpenGL ou Vulcan), le traitement du son et de l'audio, j'en passe et de meilleures, tu n'en verras sans doute jamais le bout.

    Attention, cela ne veut pas dire que je te déconseille d'essayer. Bien au contraire. Cela veut juste dire que je te conseille ... de ne pas essayer tout de suite. D'attendre d'avoir la "certitude" (si tant est qu'on puisse acquérir cette certitude un jour) de maitriser suffisamment le langage pour n'avoir pas à t'inquiéter d'avoir encore un pan entier du langage à apprendre en plus de tout le reste.

    L'idée d'utiliser les moteurs existants -- il y en a de très bons qui sont totalement gratuits comme UnrealEngine, Godot et autres -- une fois que tu te sentiras à l'aise avec les langage pourrait s'avérer des plus intéressantes, car elle te permettrait sans doute de te faire une idée "plus précises" des besoins que les autres développeurs ont rencontrés et de la manière dont ils y auront apporté une réponse

    Et surtout, n'oublie pas une chose:

    Lorsque l'on débute en programmation, la somme de tout ce que l'on ignore est largement plus importante que l'ensemble de ce que l'on sait (ou que l'on croit savoir)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    26 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 26 221
    Points : 209 020
    Points
    209 020
    Billets dans le blog
    90
    Par défaut
    Bonjour,

    Globalement, je suis d'accord avec koala01. J'aimerai juste ajouter quelques avis sur la question.

    D'abord, n'hésitez pas à lire l'article dédié à la question : https://jeux.developpez.com/tutoriels/jeux-video/

    Ensuite, il faut savoir ce que vous voulez.
    Est-ce que vous voulez :
    • créer un jeu vidéo ;
    • créer un moteur de jeu vidéo ;
    • apprendre à programmer.


    1) Créer un moteur de jeu vidéo.

    Pour créer un moteur de jeu vidéo (ou ne serait-ce qu'une boîte à outils pour créer son jeu (dans l'idée, juste une bibliothèque à utiliser dans vos programmes, qui facilite la création du jeu)), il faut avoir déjà de l'expérience dans la création d'un jeu vidéo. En effet, dur de créer une telle boite à outil, sans connaître les besoins et les complexités.
    De plus, avec cette voie, vous n'obtiendrait pas de jeu vidéo à la fin. Donc, la démotivation arrivera vite et vous ne gagnerai que de l'expérience en programmation (mais il faut savoir programmer avant de se lancer dans cette tâche).

    En bref : ne le faites pas. Il y a plein d'outils existants et cela n'est intéressant que pour : les gens qui savent déjà programmer et qui adore faire de l'architecture et approfondir des concepts de programmation.


    2) Créer un jeu vidéo

    Créer un jeu vidéo, cela paraît cool (et c'est cool). Mais c'est aussi plutôt complexe (c'est une spécialisation dans le domaine de la programmation, qui possède lui même des spécialisations). Aussi, un jeu vidéo, cela nécessite pas mal de choses : graphismes, sons, level design, polish...
    Si vous partez dans la voie de la programmation pure : cela vous prendra beaucoup de temps et, avec cela, la démotivation arrivera. En bref, en programmation pure, c'est dur de faire un jeu vidéo et encore une fois, il faut avoir une première expérience (souvent échouée) pour réussir.

    Du coup, pour simplifier la chose, il faut utiliser un moteur de jeux vidéo (Godot est super (et réellement 100 % gratuit, même lors de la vente du jeu (mais nous n'en sommes pas là)), GameMaker, Construct et Unity et Unreal Engine). Cela permettra d'avoir un résultat plaisant rapidement et permettra d'apprendre ce qu'est la création d'un jeu vidéo. La programmation n'y ai pas éclipsée, elle est juste concentrée à la partie la plus intéressante. Donc, vous apprendrai la programmation, tout en vous faisant plaisir .

    3) Apprendre à programmer

    Si votre objectif, c'est d'apprendre à programmer (peu importe le résultat et surtout, sans vouloir faire un jeu vidéo), alors dans ce cas, partez dans la voie qui vous amuse/intéresse le plus. Et même pour les jeux vidéo, on est pas obligé d'utiliser le C++.


    Bref, n'hésitez pas à lire l'article que j'ai mentionné plus où. Les informations y sont plus concrètes et moins brouillonnes.
    La chose à retenir est : amusez vous !
    Aussi, les bases solides viennent en programmant (c'est en programmant que l'on devient programmeur).

    Un dernier avis (qui me vient de mon expérience) : pour démarrer, faites des petits projets. Aussi, je vous déconseillerai de commencer par refaire le jeu de votre cœur. Cela viendra plus tard (et d'après moi, l'intérêt ne perdure pas vraiment). Jouer à un jeu, c'est cool. Mais le programmer est une tâche complètement différente et qui n'est pas nécessairement aussi cool que d'y jouer .
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bon alors je vais juste rester sur du c++, merci pour vos réponses !

  5. #5
    Futur Membre du Club Avatar de Yoann AMAR ASSOULINE
    Homme Profil pro
    Développeur de logiciels 3D
    Inscrit en
    avril 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de logiciels 3D
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2022
    Messages : 5
    Points : 9
    Points
    9
    Par défaut
    Salut

    Apprendre le C++ est une excellente initiative, c'est l'un des langages les plus utilisés dans le développement de jeux vidéo professionnel (surtout pour la création de moteurs) !
    Maintenant, la plus grande question à se poser est sur tes objectifs, à la fois pour ton projet de développement ainsi que sur ta carrière pro :
    • Est-ce que tu souhaites développer des jeux vidéo (et surtout scripter le gameplay) ou plutôt des moteurs de jeu, sans intérêt pour la création d'un jeu (c'est un choix exclusif) ?
    • Est-ce que tu souhaites faire carrière en tant que programmeur 3D (ou de moteur) ou plutôt en tant que programmeur gameplay ? Voire seulement faire ça en tant que passion ?


    Si tu souhaites développer des jeux vidéo professionnels, tu dois absolument utiliser des moteurs de jeu grand public plutôt que de concevoir le tien. Tu as, dans l'ordre, les trois moteurs les plus populaires :
    • Unreal Engine : moteur 3D (et, dans une moindre mesure, 2D) très populaire chez les studios AAA et les indépendants que tu peux l'utiliser via deux langages complémentaires : le C++ et le Blueprint (langage visuel conçu pour le moteur). Les sources sont disponibles si jamais tu veux voir à quoi ressemble un moteur pro (attention, il n'est pas Open Source mais seulement Source-available).
      Exemple de jeux créés avec Unreal : Tekken 7, Street Fighter V, Kena: Bridge of Spirits, Batman: Arkham Knight, Kingdom Hearts IV, Fornite, etc. ;
    • Unity : moteur 2D et 3D extrêmement populaire chez les indépendants, et très performant pour des jeux mobiles ou peu exigeant (contrairement à Unreal qui est plutôt fait pour des jeux utilisant les dernières technos). Il utilise deux langages : le C# et le langage visuel Unity VisualScript.
      Exemple de jeux conçus avec Unity : Ori & the Will of the Wisps, Cuphead, Hearthstone, Animal Crossing: Pocket Camp, Mario Kart Tour, etc. ;
    • Godot Engine : moteur exclusivement utilisé par des indépendants, avec plusieurs langages (C#, GDScript, Visual Script ainsi que des bindings dont le C et le C++, officiellement). Il progresse de plus en plus et est, pour moi, le meilleur moteur Open Source à l'heure actuelle.


    Pour la popularité des moteurs, tu as un outil qui analyse automatique les jeux publiés sur Steam (pas 100% fiable mais c'est toujours mieux que rien). Si on enlève les outils de développement conçus pour les débutants (GameMaker, RPG Maker, Ren'py) et les outils obsolètes (XNA n'existe plus, et l'alternative Monogame n'est pas du tout recommandable par rapport à Unity), alors on retrouve bien ces 3 moteurs.

    Bien sûr, il existe d'autres moteurs que ceux-là, mais je te conseille vraiment les plus populaires, à la fois pour le marché du travail (Unreal et Unity sont listés dans plein d'offres d'emploi), mais aussi pour te faciliter la tâche (gigantesque communauté, plein de tutoriaux/ cours sur Udemy, perspectives d'avenir au top, etc.). Les moteurs inconnus au bataillon (Lumix, etc.) ou d'une ancienne génération (Panda3D, Esenthel Titan Engine, etc.) sont destinés à des projets amateurs et des personnes très expérimentées qui veulent "parfaire leurs connaissances", mais certainement pas pour créer des jeux AAA.
    Tu as aussi des moteurs pour les débutants (GameMaker, Construct, etc.) voire des moteurs simplifiés (RPG Maker, GDevelop, GameSalad, Buildbox) qui permettent de faire des jeux pro aussi, mais en occultant l'aspect technique. Du coup, les jeux qu'on peut créer avec sont plutôt "limités" par rapport à Unreal/ Unity.
    Il existe aussi deux moteurs qui semblent professionnels mais que je déconseille fortement : CryEngine (documentation vague et obscure, communauté presque inexistante et licence d'utilisation hyper restrictive, cf. point 1.6) et Amazon Lumberyard/ Open 3D Engine (O3DE), moteur basé sur CryEngine, quasiment pas utilisé et qui risque, au pire de finir comme Autodesk Stingray/ Bitsquid (abandonné), au mieux d'évoluer et de devenir un bon moteur mais seulement d'ici quelques années.

    Pour réitérer mes propos, pour un dev solo ou une petite équipe, il est impossible de créer son propre moteur de jeu et de concevoir un véritable jeu vidéo.
    Il suffit simplement de voir les studios AAA, avec un gigantesque budget et une horde de programmeurs expérimentés, abandonner leur(s) moteur(s) pour basculer vers Unreal Engine 5, même très récemment : CD Projekt Red (prochain The Witcher), Crystal Dynamics (prochain Tomb Raider), GSC Game World (STALKER 2 en cours de dev), etc.
    Je sais bien qu'il y a certains développeurs indépendants ou amateurs qui vont te dire le contraire, et qu'un moteur que tu vas faire par toi-même sera plus performant car adapté à ton jeu. Ils vont te citer, comme exemple, Ubisoft, Rockstar, Insomniac, ainsi que quelques indépendants (The Witness, ThinMatrix, Minecraft, etc.).
    Mais c'est un argument fallacieux et illusoire, basé sur une méconnaissance totale de l'histoire du développement de jeux pro et une incompréhension de la capacité et de l'adaptabilité des moteurs "génériques" comme Unreal/ Unity (ça va prendre trop de temps d'argumenter, mais c'est facile à démontrer).
    Les indépendants qui parviennent à concevoir leur moteur et créer des jeux sont des exceptions, et t'as autant de probabilités de réussir à créer un moteur + un jeu que de gagner au loto.

    En revanche, créer un minuscule moteur seulement dans un cadre d'apprentissage est un excellent projet (surtout si tu veux être programmeur 3D/ moteur), et j'estime que c'est important pour mieux comprendre l'architecture générale des moteurs et mieux se servir des moteurs les plus connus (en clair, c'est seulement pour améliorer ton utilisation de Unity/ Unreal/ Godot/ etc., pas pour faire des jeux).
    Je peux d'abord te conseiller différentes ressources, uniquement en anglais :


    Enfin, je te conseille de lire plusieurs livres de programmation mais uniquement en anglais (ou alors les meilleurs s'ils sont traduits, mais l'anglais est indispensable en informatique). C++ Primer 5th est excellent, et probablement un incontournable (même s'il est assez ancien et reste donc sur le C++ 11, alors qu'il y a eu plusieurs évolutions du langage depuis). Voici donc une liste avec des ouvrages intéressants.

    Bon courage

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2022
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Je prend bonne note et conseil de vos commentaires, je vais donc continuer à étudier et pratiquer le c++ dans l'optique de pouvoir postuler en fac cette année et continuer avec des projets perso auto didacte, j'avoue m'etre emballé en voyant certains génies programmer des petits jeux sans l'aide de moteurs Merci beaucoup !

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    26 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 26 221
    Points : 209 020
    Points
    209 020
    Billets dans le blog
    90
    Par défaut
    Citation Envoyé par lepetitdev Voir le message
    j'avoue m'etre emballé en voyant certains génies programmer des petits jeux sans l'aide de moteurs
    Ce n'est pas nécessairement impossible, mais cela ne se limitera qu'à des petits jeux et vous prendrai 95 % sur la programmation et non sur la création du jeu en lui même (chiffres pris au hasard). J'avais commencé ainsi et aujourd'hui, je préfère nettement prendre un moteur de jeux vidéo et avoir un résultat sympathique rapidement (et contrairement à ce qui se disait il y a des années de cela, cela n'enlève pas le côté programmation).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    juin 2005
    Messages
    2 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2005
    Messages : 2 017
    Points : 10 758
    Points
    10 758
    Billets dans le blog
    7
    Par défaut
    Pour te donner une idée du temps que tu pourrais passer sur la création d'un moteur de jeu, j'ai un projet personnel, Castor3D, qui n'est "qu'un" moteur 3D (donc environ un quart d'un moteur de jeu complet).
    Ca fait 16 ans que je suis dessus, et il n'est clairement pas fini
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    26 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 26 221
    Points : 209 020
    Points
    209 020
    Billets dans le blog
    90
    Par défaut
    En effet, mais il vous a peut être permis de décrocher un job facilement, ou quelque chose de ce genre, non?
    Après, ça ne peut jamais être fini. Le monde des jeux vidéo évoluent, les techniques progressent pour faire de meilleur rendu/son/truc
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelle version utiliser pour apprendre l'UML ?
    Par MInfo25 dans le forum UML
    Réponses: 3
    Dernier message: 14/10/2018, 19h31
  2. Cours pour apprendre les bonnes pratiques de programmation en PHP
    Par Community Management dans le forum Langage
    Réponses: 8
    Dernier message: 08/01/2018, 17h26
  3. Réponses: 11
    Dernier message: 27/09/2013, 13h02
  4. [XL-2003] Quelle direction prendre pour réaliser le dépouillement d'un tableau?
    Par mandrake57 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/03/2012, 21h59
  5. Quelle Distribution Serveur pour apprendre?
    Par vg-matrix dans le forum Distributions
    Réponses: 13
    Dernier message: 24/09/2010, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo