CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Le C++, impératif peu importe l'engine ?

MedialKneePain
MedialKneePain
Niveau 9
17 novembre 2020 à 14:19:07

Je regardais cette vidéo de roundbeargames: https://www.youtube.com/watch?v=MMlMP32Cf6Q

Et en gros il disait que pour être un créateur de jeu vidéo/programmeur il fallait impérativement savoir coder en C++ et faire de petits projets avec. La raison étant que le C++ allait nous faire rencontrer des problèmes qui nous apprendront à réfléchir comme un programmeur.

Êtes-vous d'accord avec ça ? :(

panthere22
panthere22
Niveau 10
17 novembre 2020 à 14:30:42

C'est évident qu'un créateur de jeu vidéo a tout à gagner à essayer différentes technologies afin de développer certaines connaissances et compétences qu'on n'aura jamais en faisant tout le temps du Unity, qui est très très haut niveau, par exemple.

Je suis moi même en études d'informatique, et nous avons un cours de résolution de problèmes algorithmiques, notre prof nous a fortement conseillé d'utiliser du C++ pour faire tout ça, car c'est plus optimisé, on peut allouer l'espace qu'on veut, etc...

On a tous tout à apprendre à utiliser des langages comme C++, python, ou même du C directement, maintenant est-ce nécessaire ? Je ne pense pas, pour moi ça serait vraiment pour ceux qui souhaitent "aller plus loin", mais quelqu'un qui veut simplement développer des petits jeux sur Unity (par exemple) va plutôt être saoulé par l'apprentissage du C++.

Je dis ça mais j'ai appris le C++, python, java, rubis, etc... avant même d'apprendre Unity, donc j'ai fait le chemin inverse, et forcément ça m'aide énormément de savoir programmer dans d'autres langages. Donc en effet c'est intéressant de savoir si faire le chemin dans l'autre sens vaut le coup ?

EDIT : pour ceux qui s'intéressent au développement de jeux en 3D, utiliser du C++ avec la librairie openGL est un très bon moyen de comprendre ce qui se passe réellement quand on utilise un moteur tout fait comme Unity ou Unreal engine.

Message édité le 17 novembre 2020 à 14:34:15 par panthere22
MedialKneePain
MedialKneePain
Niveau 9
17 novembre 2020 à 14:34:37

Le 17 novembre 2020 à 14:30:42 Panthere22 a écrit :
C'est évident qu'un créateur de jeu vidéo a tout à gagner à essayer différentes technologies afin de développer certaines connaissances et compétences qu'on n'aura jamais en faisant tout le temps du Unity, qui est très très haut niveau, par exemple.

Je suis moi même en études d'informatique, et nous avons un cours de résolution de problèmes algorithmiques, notre prof nous a fortement conseillé d'utiliser du C++ pour faire tout ça, car c'est plus optimisé, on peut allouer l'espace qu'on veut, etc...

On a tous tout à apprendre à utiliser des langages comme C++, python, ou même du C directement, maintenant est-ce nécessaire ? Je ne pense pas, pour moi ça serait vraiment pour ceux qui souhaitent "aller plus loin", mais quelqu'un qui veut simplement développer des petits jeux sur Unity (par exemple) va plutôt être saoulé par l'apprentissage du C++.

Je dis ça mais j'ai appris le C++, python, java, rubis, etc... avant même d'apprendre Unity, donc j'ai fait le chemin inverse, et forcément ça m'aide énormément de savoir programmer dans d'autres langages. Donc en effet c'est intéressant de savoir si faire le chemin dans l'autre sens vaut le coup ?

Mais en fait dans mon cas personnel, j'ai appris directement la programmation à travers les langages orienté objets. J'avais une formation de Web dev on peut dire. Donc le chemine a été le Javascript et des frameworks JS pour ensuite passer à Java et des frameworks l'utilisant comme Spring.
Je suis passé à C# quand j'ai commencer à apprendre à faire des jeux vidéos.
Mais dans un cas comme le mien, est-il toujours "impératif" d'appendre le C++. Pour être plus précis dans ma question. Quels leçons peut m'apporter le C++ que les autres langages OO ne m'ont pas déjà appris ? :(

boucif
boucif
Niveau 24
17 novembre 2020 à 14:43:00

La gestion mémoire qui est masqué dans des langages de plus haut niveau.

Après je vois vraiment pas l'utilité de se forcer à faire du C++ si ton but c'est que de faire des petits jeux sur Unity ...

MedialKneePain
MedialKneePain
Niveau 9
17 novembre 2020 à 15:27:55

Le 17 novembre 2020 à 14:43:00 boucif a écrit :
La gestion mémoire qui est masqué dans des langages de plus haut niveau.

Après je vois vraiment pas l'utilité de se forcer à faire du C++ si ton but c'est que de faire des petits jeux sur Unity ...

C'est quoi le plus grand "petit" jeu pour toi ?
C'est là que ma compréhension se trouble en fait :(

boucif
boucif
Niveau 24
17 novembre 2020 à 15:58:09

Disons que si tu fais pas des AAA style Assassin Creed, Gears ça devrait aller :rire:
Tu regardes les jeux fais avec unity, c'est du C# normalement derrière

ThetaTauTau
ThetaTauTau
Niveau 8
17 novembre 2020 à 16:02:32

Pour un amateur ou un petit indépendant, je pense qu'ils vaut mieux passer du temps à apprendre les fonctionnalités du moteur, à faire des graphismes, du son, de la musique, du leveldesign, de l'ergonomie, du marketing, de la géométrie, du calcul vectoriel, des shaders etc.

C'est pas qu'apprendre le C++ ou autre truc pour "être un meilleurs programmeur" est inutile, c'est juste qu'il y a -selon moi- plus utile. J'ai l'impression que les devs indés qui sortent les meilleurs jeux sont surtout des gens très polyvalents plutôt que des experts programmeurs.

Après si tu veux passer quelques heures sur un tuto C ou C++ pourquoi pas, mais je ne vois pas trop l'intérêt d'y passer plus de temps que ça.

IndepGameDev
IndepGameDev
Niveau 10
17 novembre 2020 à 16:08:36

Si c'est pour ton loisir, non tu n'as pas à apprendre le C++, clairement.

Si c'est pro, la question se pose plus, mais la réponse n'est pas forcément évidente, qu'est ce que tu veux faire ? Le C++ s'adresse à des problèmes de bas niveau, donc si c'est pour coder un moteur graphique oui, pour le reste, pas vraiment ...

Par contre, quelque soit le langage et son niveau d'abstraction, savoir comment les choses fonctionnement est important, et même primordial si on veut s'attaquer aux performances.

Ce n'est pas parce qu'un langage a un garbage collector qu'il ne faut pas prendre en compte la mémoire. L'allocation est quand même faite, et il y a de très gros impact sur les performances : https://github.com/Maoni0/mem-doc/blob/master/doc/.NETMemoryPerformanceAnalysis.md

Sans aller aussi loin que le garbage collector, quelle est la différence entre un int et un object ? Qu'est ce que ça fait si je passe un int à une autre méthode, est-ce qu'il est dupliqué en mémoire ou je passe une référence ? Bref, la différence entre un value type et un reference type, et il y a de très gros impact sur les performances.

Le C# est déjà très très très vaste et permet d'aborder tout un tas de problème, et d'obtenir des performances très correcte (by design moins bonne que le C++).
Tu peux même passer en code unsafe pour manipuler des pointeurs si ça te fais plaisir : https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/unsafe

boucif
boucif
Niveau 24
17 novembre 2020 à 16:30:26

Je ne suis pas sur que sous Unity on utilise les même chose que sur .Net, Unity repose sur mono à l'origine, et transpile ça en langage machine suivant la plateforme cible.
Je ne sais pas si au finale le comportement est le même qu'une application .net sur la mémoire.
Ca peut être un truc intéressant à creuser mais à moins d'afficher des milliers d'objets je ne suis même pas sur que t'es besoin de connaitre ce genre de chose, je sais même pas quand il désalloue la mémoire.

Après un truc intéressant à savoir c'est la différence en ref et valeur comme mentionné par indep :
https://www.youtube.com/watch?v=yF3RRLonaXo (j'ai pas maté la vidéo)

https://www.c-sharpcorner.com/article/stack-vs-heap-memory-c-sharp/

IndepGameDev
IndepGameDev
Niveau 10
17 novembre 2020 à 17:37:49

Oui effectivement Mono n'est pas comme .Net en tout point, mais les mécaniques restent globalement les mêmes. L'objet était d'illustrer la complexité des langages "modernes" et les optimisations possibles, et qu'il y a d'autres façon d'approfondir la technique que d'apprendre un langage bas niveau (C, C++).

En terme d'optimisation quand on est dans Unity, la première chose n'est clairement pas utiliser des pointeurs, manager la mémoire, etc..

La première chose est de respecter les bonnes pratiques de programmation et de Unity (ne pas utiliser tel ou tel chose, fusionner les sprites, ne pas afficher ce qu'on ne voit pas, ne pas calculer les pixel non affiché (superposition), etc.).

Et surtout utiliser le profiler pour identifier un problème et ne jamais supposer

boucif
boucif
Niveau 24
17 novembre 2020 à 19:03:13

Même en faisant ce qu’il ne faut pas faire tu penses que le jeu sera pas fluide, je pense pas que sur ce fofo on en est pas à créer des jeux qui font ramer des config modernes, même des tels moderne, je pense qu’on a de la marge même.

Lapintade
Lapintade
Niveau 30
18 novembre 2020 à 23:29:32

Le plus important, c'est de comprendre la logique et l'algorithmique. Le langage est secondaire ensuite, ils fonctionnent plus ou moins tous de la meme facon.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment