Jeu de Plateforme en c++

a marqué ce sujet comme résolu.

Bonjour à tous et à toutes, avec des amis, on a appris le C++ grâce à une formation d’elephorm. On aimerait créer un jeu vidéo, un petit jeu de plateforme. Mais on ne sait pas quel outil utiliser ? Une bibliothèque ou un moteur de jeu ? Ce qui est certain, c’est que l’on a envie de créer un jeu de plateforme en 2d en C++ sur Pc. d On aimerait après développer un multijoueur en réseau.

Pouvez-vous nous guider un peu afin qu’on sache quel est le meilleur outil pour que l’on débute dans ce domaine, merci d’avance pour votre aide.

+0 -0

Je me permet de citer Stranger, qui a fait un post très intéressant sur une réflexion à mener avant de se lancer dans un tel projet. Sa réponse pourra t’intéresser. :)

On a ce débat ici depuis des années. A chaque fois, c’est toujours les mêmes arguments, et à chaque fois je ne vois aucun auteur de jeu vidéo dans le camp du fais-tout toi-même. Il y a une bonne raison à ça : on parle de deux métiers différents, de deux centres d’intérêts différents, de deux approches différentes.

Il y a pas mal de gens ici qui voient un jeu vidéo comme un programme. Sans parler des cas à part, du point de vue de l’utilisateur, un jeu vidéo c’est un gameplay, du contenu graphique, du son, une ambiance, une histoire… La première implication de ça, c’est qu’une immense part du travail n’a rien à voir avec de la programmation. Sur un jeu vidéo 3D typique, les artistes représentent 80% du boulot, et autant d’effectifs dans un studio.

Pour donner un exemple concret, le projet sur lequel je travaille a 40 000 lignes de code, ce qui est déjà conséquent sachant que j’utilise un moteur de jeu. Mais il a aussi quelque chose comme 300 textures, des dizaines de fichiers audio, de meshs 3D, d’effets spéciaux, alors que c’est un genre de jeu vidéo dans lequel il y a très très peu de contenu 3D.

Il faut donc se mettre en tête qu’un jeu vidéo est un projet multi-disciplinaire. Qu’on ne peut pas faire un jeu vidéo sans sons et sans contenu graphique. Qu’un jeu vidéo peut être avant tout un travail artistique, et un petit peu un travail de programmation. C’était le cas de mon projet précédent avec un programmeur et dix artistes 3D. Et je comprends parfaitement si le programmeur qui me lit trouve ça chiant.

Maintenant que les rappels sont faits, il y a donc deux types de personnes :

  • celui qui veut programmer avant tout, et qui voit le jeu vidéo comme un domaine parmi d’autres ;
  • celui qui veut faire un jeu vidéo avant tout, et qui voit la programmation comme un outil parmi d’autres.

Le premier va s’orienter vers du C++ avec une lib et réinventer la roue à partir de là, parce que lui veut juste coder donc il se fout un peu du résultat. Le deuxième va partir sur un moteur de jeu, il va programmer, faire du level design, des assets 2D/3D, du son, recruter des gens, communiquer sur son projet…

La seule vraie question, c’est de savoir lequel des deux on est.

Stranger

Si tu désires développer un jeu, la réponse devrait pas trop te prendre de temps : ce sera la seconde. Et, partant, en utilisant un moteur comme Unity et la panoplie de tutos et ressources pour t’aider, tu auras tout ce qu’il faut pour sauter dans l’eau.

Un autre aspect que celui abordé ci-dessus est que le plus important, quand on débute pour toi, ce n’est pas 1) d’y réfléchir trop longtemps, 2) de mettre la barre trop haut (ce n’est visiblement pas ton cas, mais je précise quand même). On ne le dira jamais assez : ouais, tu te plongeras peut-être pas - selon le projet - dans le code aussi longtemps que tu l’aurais souhaité si tu avais décidé de réinventer la roue mais quand on se lance dans un projet (contrairement à quand on veut approfondir la maîtrise d’un langage), le but devient d’office de commencer et de finir ce dernier.

Ce ne sera peut-être pas le plus beau jeu de la Terre, probablement pas le plus vendu, etc. Mais le fait de commencer et de finir (bis) un projet te comblera tout autant, si ce n’est plus. Et par ailleurs, même pour ton avenir professionnel, ça te permettra d’interagir avec des personnes qui ont un bagage différent, un raisonnement différent, d’autres contraintes, etc.

Pour ton projet de jeu de plateforme, il est tout à fait possible de le finir assez rapidement. Bref, ne réfléchis pas trop, prends une solution (Unity, Godot, whatever) et saute le pas. Tu auras de toute façon tout le loisir de te lancer dans un projet un peu plus complexe niveau code plus tard mais ce que tu auras appris avec ce projet-ci te sera bien plus utile, tu pourras l’utiliser pour promouvoir tes compétences et tu auras certainement appris des choses dans d’autres domaines mais surtout à finir un projet. ;)

+1 -0

J’ai l’impression que la plupart des jeux qui ont "marqué" l’histoire (façon de parler, et je parle de jeux indé et non pas des grosses industries), ont été programmés sans moteur de jeux mais uniquement avec des lib.. pour plus de liberté je pense, mais aussi parce que leur jeu, c’est eux qu’y l’ont fait. ils en connaissent chaque recoins.

Je ne suis pas du même avis que Stranger dans le sens où, des gens comme Notch ou Lucas Pope avaient pas principalement l’envie d’approfondir leurs connaissances en Java ou haxe, mais plus l’envie de créé un jeu-vidéo avec leur connaissances. Certes, ils ont passés bien plus d’une année à programmer leur jeux-vidéo, en baver, mais au final ils ont sortis des bijoux.

Ils n’ont pas choisi la solution la plus simple mais ont acquit une expérience qu’avec n’importe quel moteur de jeu, il est impossible d’avoir, et cela n’a pas de prix.

"L’expérience est une échelle au sommet de laquelle on n’arrive qu’en passant par tous les échelons."

+2 -3

Tu veux qu’on te liste le nombre de jeux populaires (vu que ça à l’air d’être un critère de qualité pour toi) qui ont été développés avec des moteurs de jeu ?

La popularité, à partir du moment ou quelqu’un fait la promotion de son jeu est un des critères de sélection pour moi, oui. j’ai cité dans mon message du dessus 2 développeurs très connu c’est vrai mais si je te citerai Yohan Gesmheier, est-ce que celà te dit quelques choses ? c’est un exemple.

Des jeux populaires développés avec des moteurs ils y en à plein, comme il y en à plein aussi qui sont crées sans. A ajouter à cela que chacun a ses propres critères, certain aime le graphisme, les dialogues, les styles, et pleins d’autres… J’ai l’impression de me heurter à vos avis(Peut-être le faite que je suis nouveau et en désaccord avec vous vous dérange). tleb tu es peut-être en désaccord avec moi sur ce sujet mais la moindre des choses est de rester courtois. Je suis pas là pour imposer mon avis.

Le but de Fatavis est de créer son premier jeu (2D qui plus est). Une lib t’aurait permis plus ou moins facilement sortir celui-ci et aussi de comprendre et découvrir et donc améliorer ton expérience pour ton premier jeu. Un moteur de jeu ne l’aurait pas forcément fait.

Si par la suite tu te projettes de créer un mini GTA, c’est sur que un moteur de jeu devient quasiment obligatoire. C’est d’ailleurs ce que font les studios, certains créé parfois le leur même.

Je m’excuse si j’ai eu des propos qui ne t’ont pas paru courtois. Sincèrement. Une communauté qui parait agressive envers les nouveaux venus, c’est un comble.

"L’expérience est une échelle au sommet de laquelle on n’arrive qu’en passant par tous les échelons."

Je trouve que, justement, les moteurs de jeu font partis de cette échelle. Après, si c’est avant ou après les librairies que tu mentionnes, je ne sais pas.

Il y a pas mal de problèmes courants rencontrés par ceux qui ’utilisent pas un moteur "tout fait". J’en fais une petite liste rapide.

  • Le simple volume de travail tue la plupart des projets. C’est déjà le cas avec Unity, alors quand il faut inventer Unity en plus du jeu, c’est habituellement pire.
  • La liberté que procure l’absence de moteur est généralement un piège pour les débutants. On ne sait pas comment architecturer son réseau, le gameplay du jeu, la création de niveaux, et on n’a pas de voie évidente pour apprendre les bonnes pratiques.
  • L’absence d’outils pour la création de contenu, en particulier, tend à transformer les jeux sans moteur en jeux sans contenu. On se dit que le contenu, c’est un peu un détail, qu’un artiste le fera plus tard ou qu’on prendra des sprites sur Internet - alors que le contenu, d’habitude, c’est 90% du travail.
  • La portabilité devient un problème. La plupart des moteurs maison ont du mal à supporter Windows, Linux, les GPUs AMD/nVidia/Intel, sans parler de portage console ou mobile. C’est un problème quasiment systématique que les moteurs généralistes résolvent sans que ça soit un sujet de discussion.

Mais tout ça, à la limite, c’est du détail. La principale différence entre les jeux à moteur maison et les jeux qui utilisent un moteur généraliste, avec c’est que les premiers sont souvent faits pour soi-même, alors que les seconds sont fait pour les autres. Ce n’est pas un mal, on parlait de Minecraft, c’est l’exemple type d’un projet pour le fun qui est devenu par accident un hit mondial. C’est juste une approche différente de la chose.

Je pense que ma citation plus haut est vraiment un bon résumé. Si on veut avant tout se faire plaisir à soi en bossant et en apprenant avec un projet, alors un moteur de jeu est sûrement plutôt un obstacle. Si on veut avant tout livrer un jeu fun et fonctionnel à des joueurs, c’est clairement l’inverse.

Je pense que ma citation plus haut est vraiment un bon résumé. Si on veut avant tout se faire plaisir à soi en bossant et en apprenant avec un projet, alors un moteur de jeu est sûrement plutôt un obstacle. Si on veut avant tout livrer un jeu fun et fonctionnel à des joueurs, c’est clairement l’inverse.

On peut même nuancer cela. Un moteur de jeu, c’est pas une boîte magique qui te produit un jeu quand tu mets du contenu dedans. Il y a déjà énormément à apprendre.

Je ne suis pas du même avis que Stranger dans le sens où, des gens comme Notch ou Lucas Pope avaient pas principalement l’envie d’approfondir leurs connaissances en Java ou haxe, mais plus l’envie de créé un jeu-vidéo avec leur connaissances. Certes, ils ont passés bien plus d’une année à programmer leur jeux-vidéo, en baver, mais au final ils ont sortis des bijoux.

Gendoulfo

@Fatavis

Dans l’absolu, ce n’est pas faux. Il existe effectivement des indépendants, qui réussissent à sortir des jeux sans partir d’un moteur. Mais il ne faut pas oublier que ce sont des personnes expérimentées en dev de jeux (expérience dans les JV, game jams, etc).

La deuxième erreur que font beaucoup de débutants (la première étant de refuser d’utiliser un outil pour de mauvaises raisons), c’est de vouloir aller trop vite. Un JV utilise de nombreuses techniques de devs (afficher une image, afficher une animation, déplacer des sprites, faire du scrolling, gérer les collisions, les fichiers, la musique, etc, etc) et ce sont des connaissances qui prennent du temps à acquérir.

Quand on choisit la voie du jeux sans moteur, il faut accepter de commencer par apprendre sur des jeux simples tout seul : casse brique, tetris, sudoku, etc. (regarde ) Puis faire de plus en plus compliqué. (En fait, c’est vrai aussi quand on utilise des moteurs de jeux)

+2 -0

Je dirais réalisé un jeu vidéo même si on a appris le C++ pour y parvenir.

Unity a l’air pas mal pour réaliser un jeu vidéo, non ? Mais c’est en C#.

Fatavis

Quand on vient du C++, le C# c’est vraiment pas compliqué. C’est plus facile de passer du C++ au C# que du C au C++.
Par exemple, au boulot j’utilise du C# alors que j’avais fait que du C/C++ avant. Il y a juste quelques nuances à maîtriser. Mais sinon, la base reste la même.

Après, si tu veux progresser en C++, c’est sûr qu’il vaut mieux trouver autre chose.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte