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

Développement 2D, 3D et Jeux Discussion :

On développe la majorité des jeux vidéo sous C++


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Lucas Panny
    Invité(e)
    Par défaut On développe la majorité des jeux vidéo sous C++
    Bonjour,

    Corrigez-moi si je dis des bêtises mais je pense que la moitié des jeux vidéo (surtout les

    applications gourmandes 2D et 3D). Récemment, j'ai testé un jeu vidéo sur PlayStation 2 et

    quand il a bogué, un messagebox à titre "...C++" est apparu, ça se voit que c'est développé en

    C++. Un jeu faisant la même chose mais écrit différemment sous Python (avec Blender) et sous

    C++ : celui en C++ fonctionne plus rapidement d'où je pense le choix toujours du C/C++, celui

    écrit en Python affiche même une exception C++ lorsque la pile déborde !!!
    Pourquoi la majorité des jeux voire même des progiciels est écrite en C/C++ ?
    Avec quels outils développe-t-on des jeux sous C/C++ ?

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    C++ est rapide, dispose d'énormément de librairies pour la 3D et le jeu, et est très populaire.
    Mais tu fais erreur pour ce qui est des progiciciels, c'était vrai il y a un temps, maintenant Java, .NET et Delphi sont dans la course
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  3. #3
    Membre confirmé Avatar de LapinGarou
    Homme Profil pro
    R&D Developer
    Inscrit en
    Octobre 2005
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : R&D Developer
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 341
    Points : 479
    Points
    479
    Par défaut
    Personnellement, j'adore les pointeurs, et le java me contrarie un peu de ce côté là, certains algos me semblent difficiles à convertir sans pointeurs.
    Mais le c# est très présent : regardes xna. De plus, il me semble qu'avec le c#, on peut très bien utiliser des fonctions stockées dans des dll, ces dernières étant en C++, d'où la perte "négligeable" de performances.

    Visual Studio est je pense le plus utilisé pour le c++ pour les pc. Après, ça dépend de la plateforme (xbox=>c#, nintendo=>java/.net).

  4. #4
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Bonjour Lucas !

    Citation Envoyé par Lucas Panny
    Corrigez-moi si je dis des bêtises mais je pense que la moitié des jeux

    vidéo (surtout les applications gourmandes 2D et 3D)
    Je t'assure tu as raison.
    Citation Envoyé par Aurélien Regat-Barrel
    Le C++ est un langage dit "libre", c'est à dire non propriétaire, et soumis à une standardisation par un organisme indépendant : l'ISO (voir Le C++ est-il
    normalisé ?).
    Premièrement, je pense que c'est la raison. Par exemple, j'ai beaucoup vu des jeux écrits en Java et qui m'ont beaucoup étonné vus la qualité et la fluidité de ces jeux mais je ne connais pas de grands jeux écrits en Java. Bon, il est vrai que le but de Sun n'est pas du tout de
    développer des jeux comme le fait Ubisoft, EA, ...
    Deuxièmement, il est vrai que C++ est un langage un peu compliqué d'où la tendance de développer des applications dans des langages plus simples parfois propriétaires : Delphi, Python, Java, ... Or certains de ces langages ont été développés avec C++, cela implique une autre couche au dessus du C++ qui rend que la taille d'un même bloc d'instructions d'un langage
    par rapport à C++ est considérable, l'application devient alors plus lente. Par ex si on utilise des listes chainees, il n'y a pas de plus parfait que la STL de C++
    Le grand avantage de C/C++ est la gestion de la mémoire, on contrôle soi-même les allocations et les désallocations, il ne faut pas oublier qu'un jeu consomme beaucoup de RAM, certains langages le gèrent souvent, ça risque qu'il manque de désallocation ou que la désallocation se fait trop tard.
    Pour développer un jeu, le GDI ne suffit plus sauf si c'est un Pacman que tu veux développer !
    Je ne connais que la riche bibliothèque Qt de Trolltech, sais-tu que le fameux Google Earth et

    Adobe Photoshop Elements ont été développés avec. Qt est basé sur OpenGL. Mais tu peux bien

    utiliser Visual C++ pour créer des jeux avec DirectX. Pour C++ Builder, je connais GLScene mais

    c'est pas bon pour un jeu mais seulement pour des animations 3D, de plus ça ne marchera très

    bien que sur C++ Builder 6 !
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  5. #5
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Citation Envoyé par LapinGarou
    (xbox=>c#, nintendo=>java/.net).
    Ah bon, les jeux sous XBOX ont été écrits en C#, intéressant ! Mais où est C++ .net dans tout ça ?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  6. #6
    screetch
    Invité(e)
    Par défaut
    les jeux XBOX sont fait en C++ non managé

    les outils managés sont plus utilisés dans les utilitaires et les editeurs de niveaux, pour les jeux il reste hors de question d'utiliser C# ou C++ managé pour avoir le meilleur controle de la mémoire.

  7. #7
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Pour autant que je sache, la totalité des SDK pour le developpement de jeux sur consoles sont en c++ : xbox, ps2, ps3, psp, gc, wii, etc ...

    La raison est assez simple : le language choisit doit permettre des access et des optimisations bas niveaux, en meme temps qu'etre quand meme orienté objet pour pouvoir bosser assez vite.

    Seuls quelques languages proposent cela, et parmis eux, le c++ est le plus utilisé.
    Donc, choix logique pour les fabriquants de consoles, non ?

    A noter que pour les PC, c'est a peu pres les memes raisons pour les tres gros jeux commerciaux.
    Les jeux plus petits ( les sharewares par exemple) peuvent etre ecrits dans n'importe quel language ou presque.

  8. #8
    Membre confirmé Avatar de LapinGarou
    Homme Profil pro
    R&D Developer
    Inscrit en
    Octobre 2005
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : R&D Developer
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 341
    Points : 479
    Points
    479
    Par défaut
    Je ne sais pas pour les jeux déjà sortis. Mais c# permet d'utiliser des dll c++ comme je l'ai déjà dis, je ne voit donc pas ce qui choque.
    Aujourd'hui, les développeurs privilégient le temps passé au développement par rapport à l'optimisation . C'est pour ça que l'on se paye souvent des patches à la sortie du jeu, qui comme par hasard améliorent les performances et autre bugs non dévoilés par les testeurs. Rares sont les jeux qui sont optimisés à fond (pratiquement plus d'assembleur).
    C# et xna vont prendre de plus en plus de place je pense, rien que par la rapidité de mise en place. (.net également)

  9. #9
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par LapinGarou Voir le message
    C# et xna vont prendre de plus en plus de place je pense, rien que par la rapidité de mise en place. (.net également)
    Pour le jeu lui même( gameplay, menus, etc ), peut etre.

    Pour le moteur derriere ( physique, AI, graphismes, etc), aucune chance

  10. #10
    screetch
    Invité(e)
    Par défaut
    les jeux qui sortiront en 2010 seront toujours en C++. Les outils seront en C# souvent (mais pas toujours).

    Le binding C++ -> C# n'est poas suffisant encore (je parle de C++ non managé vers C#)

    quand aux optimisations, il y en a beaucoup plus que tu crois encore. Plus d'assembleur mais encore des instructions SSE2 ou l'equivalent sur XBOX ou PS3.

  11. #11
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par screetch Voir le message
    quand aux optimisations, il y en a beaucoup plus que tu crois encore. Plus d'assembleur mais encore des instructions SSE2 ou l'equivalent sur XBOX ou PS3.
    Les optims MMX/SSE/SSE2/SSE3 font partie de l'asm pour moi,apres tout c'est de l'utilisation directe d'instructions et des registres du proc.

    D'ailleurs puisque l'on en parle, sont elles disponibles sur un autre language que c++ ?

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    D'ailleurs puisque l'on en parle, sont elles disponibles sur un autre language que c++ ?
    En C et en C++, soit en ASM brut soit via des fonctions intrinsics. Quoiqu'il en soit rien n'est portable à ma connaissance.

  13. #13
    screetch
    Invité(e)
    Par défaut
    ce ne sont pas des instructions asm mais des intrinsic. C'est plus bas niveau que le C mais plus haut niveau que l'assembleur; le compilateur se permet souvent de reordonner les instructions. D'ailleurs il n'y a pas de notion de registre avec les intrinsic, c'est le compilateur qui s'en charge. De meme il n'y a pas un mapping 100% entre les instructions asm et les intrinsics.

    C'est specifique au compilo en general, mais c'est pas bien grave, un jeu vidéo fait dans l'industrie n'a pas vraiment vocation a etre portable (je veux dire, c'est pas de l'open source que des petits malins vont recompiler avec gcc, donc on prend les intrinsics visual et c'est tout)

  14. #14
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    ce ne sont pas des instructions asm mais des intrinsic. C'est plus bas niveau que le C mais plus haut niveau que l'assembleur; le compilateur se permet souvent de reordonner les instructions
    Non non, les deux (ASM et intrinsics) sont bien disponibles. En tout cas sous VS2005 j'ai les deux.

  15. #15
    screetch
    Invité(e)
    Par défaut
    oui mais c'etait pour dire que les intrinsics sont different de l'asm. C'est a mi chemin entre le C et l'ASM (je repondais plutot a kujara)

  16. #16
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par screetch Voir le message
    oui mais c'etait pour dire que les intrinsics sont different de l'asm. C'est a mi chemin entre le C et l'ASM (je repondais plutot a kujara)
    Si on parle bien des _mm_add_ss et co, ça me fait plus penser a une extension du language faite par Microsoft, comme les __declspec et les __interface .

    Apres, je groupe les intrinsics avec l'inline asm, vu que chaque intrinsics correspond a une seule instructions asm, sauf exception...

  17. #17
    Lucas Panny
    Invité(e)
    Par défaut C++ managé ??
    Bonjour ,

    Merci pour vos réactions.
    Citation Envoyé par screetch
    les jeux XBOX sont fait en C++ non managé
    En fait, c'est quoi en gros C++ managé ou non ?

  18. #18
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Le C++ managé (C++/CLI en fait) est une extension du C++ qui utilise le framework .NET. Ce n'est donc pas du C++ natif qui sera compilé en un exécutable.

  19. #19
    screetch
    Invité(e)
    Par défaut
    Citation Envoyé par Kujara Voir le message
    Si on parle bien des _mm_add_ss et co, ça me fait plus penser a une extension du language faite par Microsoft, comme les __declspec et les __interface .

    Apres, je groupe les intrinsics avec l'inline asm, vu que chaque intrinsics correspond a une seule instructions asm, sauf exception...
    Les intrinsics MMX et SSE/SSE2 existent aussi sous GCC. Les intrinsics sont une couche au dessus de l'ASM comme je disais; certaines fonctions se mappent sur une instruction mais en regle generale ce n'est pas le cas; surtout car tu ne geres pas les registres du tout, tu mets ca dans des variables comme du code normal et le compilo sait optimiser les intrinsics. C'est different de l'asm! et ce n'est pas specifique Microsoft.

  20. #20
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par LapinGarou Voir le message
    C# et xna vont prendre de plus en plus de place je pense, rien que par la rapidité de mise en place. (.net également)
    oui tous les mois quelqu'un va nous dire que C# va s'imposer pour les jeux vidéos
    Mais comme c'est du pseudo code tu ne peux rien optimiser l'assembleur faut pas y compter.
    Et si tu veux exploiter les fonctionnalités des derniers CPU ce qui se fait en asm éventuellement faut pas y compter parce qu'en C# tu n'as pas accès bas-niveau

Discussions similaires

  1. Évolution dans le développement des jeux vidéo : simplification ou mensonge ?
    Par jean_kevin_musclor dans le forum Développement 2D, 3D et Jeux
    Réponses: 80
    Dernier message: 20/08/2014, 18h02
  2. Réponses: 0
    Dernier message: 28/03/2014, 14h01
  3. Réponses: 13
    Dernier message: 18/07/2007, 09h30
  4. Réponses: 18
    Dernier message: 19/06/2006, 14h48
  5. [Logiciel] Outil pour développer des jeux vidéos
    Par Kiri dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 16/06/2004, 20h29

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