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 :

CppCon 2014 – Le C++ dans les jeux triple A


Sujet :

Développement 2D, 3D et Jeux

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    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 855
    Points : 218 551
    Points
    218 551
    Billets dans le blog
    118
    Par défaut CppCon 2014 – Le C++ dans les jeux triple A
    Nicolas Fleury, architecte logiciel à Ubisoft Montréal nous montre l'utilisation du C++ faites dans les jeux vidéos AAA.
    Dans cette vidéo, vous comprendrez mieux les contraintes en termes de programmation d'un programme de jeu vidéo. En effet, malgré la multitudes de fonctionnalités dont dispose le C++, certaines sont à éviter.

    Bonne vidéo.
    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.

  2. #2
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Superbe article.

    Pour résoudre cela, les développeurs pourraient trier les objets par type, mais le problème ne serait que diminué et non supprimé. Le mieux est donc de se passer du mécanisme des fonctions virtuelles.
    Il peut être sympa d'expliquer comment s'en passer : avec des pointeurs de fonctions par exemple, attention c'est vraiment une optimisation à ne faire qu'en cas de nécessité : c'est extra chiant à débuguer après...
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Après ce genre article est plus a titre informative pour ma part , mais un peu inutile pour le programmeur amateur/indépendant vu que cela n'est pas pareil en terme de projet et de code , je ferais un amalgame entre faire sa propre maison et faire un building de plus de 100 mètres de haut y a certes des points commun , mais certaine technique serait particulière au building (et inutile pour une simple maison).

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Intéressant. Mais au final, s'ils n'utilisent ni fonctions virtuelles, ni exceptions, ni RTTI... peut-on encore dire que c'est du C++? Finalement c'est quasiment du C.

    Sinon j'ai trouvé intéressant de voir qu'ils utilisent assez massivement C#, mais j'aurais aimé avoir un peu plus de détails sur les cas d'utilisation.

  5. #5
    Membre chevronné

    Homme Profil pro
    Appui fonctionnel senior
    Inscrit en
    Juin 2007
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Appui fonctionnel senior
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 461
    Points : 2 211
    Points
    2 211
    Par défaut
    Vidéo très intéressante !

    Citation Envoyé par tomlev Voir le message
    Sinon j'ai trouvé intéressant de voir qu'ils utilisent assez massivement C#, mais j'aurais aimé avoir un peu plus de détails sur les cas d'utilisation.
    D'après ce qu'il dit, ils s'en servent essentiellement pour toutes les aspects où les performances ne sont pas la problématique principale. Par exemple, les éditeurs, le code réseau, les "launcher"/"updater", etc.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Article intéressant mais inutile pour un développeur indie comme moi.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 628
    Points : 10 553
    Points
    10 553
    Par défaut
    Donc en gros tout est fait à la main : compilation, linkage, débogage, gestion mémoire, ce qui implique très très peu de STL et rien d'autre.

    Et même la gestion mémoire j'ai cru comprendre que les développeurs ont un énorme tableau global (qui peut être mis en cache ou en mémoire) qu'ils utilisent comme tas


    Citation Envoyé par MoDDiB Voir le message
    Il peut être sympa d'expliquer comment s'en passer :
    Mon anglais est très moyen mais j'ai cru comprendre 2 choses:

    1) Lors de la compilation/ linkage, le processus remplit des tableaux dans les classes avec les pointeurs des méthodes (+ des informations comme où se trouve cette méthode (fichier, ligne)).

    D'ailleurs, il me semble que c'est plus ou moins illégal en C++ de prendre en direct l'adresse d'une méthode.

    2) Un peu ce qu'il dit souvent; par du global. Là c'est flou . Mais on peut penser qu'il y a une tripotée de fonctions/ procédures globales, et qu'ensuite elles sont appelées dans des méthodes inline.
    Ou alors, comme son exemple template, ils font une "grosse" classe mère (peut-être singleton) qu'il utilise via des petites classes filles avec des méthodes inline.

    D'ailleurs, il ne parle jamais de namespace. Vu comme c'est chiant c'est peut-être pour cela

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ouf, ça craint, ils parlent de singleton et puis de contexte multi-thread, juste déjà cela ça m'a fait fuir.
    Ce sont pour des raisons de performances qu'ils utilisent des techniques aussi dangereuses ?
    Car le singleton n'est pas thread safe.
    Et une classe mère singleton instanciée avec des classes fille template, cela me semble vraiment salle comme implémentation.

    Pour l'uploader et la plateforme de téléchargement ainsi que l'éditeur je trouve ça bien d'utiliser du c# par contre.
    Reste à savoir si ce langage est assez bien sécurisé, si oui, je pense que je vais utiliser ça aussi.

    Le nombre d'employé et de développeur me semble énorme et le nombre de ligne de code également, sincèrement en tant qu'indé moi je me casse pas le cul je fais la même chose mais avec beaucoup moins de lignes de codes, et le tout, tout seul. (Ou au mieux à deux mais c'est rare)

    Mais bon en même temps je ne m'amuse pas à faire toutes les optimisations qu'ils font!

    Je n'ai pas compter le nombre de ligne de code de mon moteur mais si il fait 10 000 lignes de code, c'est déjà bien.

    De plus ils utilisent deux moteurs différents pour leur deux jeux ?

    PS : les exceptions je trouve ça bête de ne pas les utiliser, surtout depuis qu'il y a les pointeurs intelligent, surtout que elles ne se lancent pas pendant la boucle de jeux en général mais plutôt lors du chargement de ressources ou de la sérialisation, je ne vois pas du tout en quoi ça pourrai gêné les performances.

    Pour le système de RTTI autant utiliser typeid plutôt que de le réinventé. :/
    Je ne vois pas en quoi ne pas l'utilisé augmenterai la sécurité.

    Bref encore des arguments et un débats qui me semble, être du grand n'importe quoi.

    Ce n'est pas du c++14, ça ressemble plutôt à du c en effet.

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 628
    Points : 10 553
    Points
    10 553
    Par défaut
    Citation Envoyé par Lolilolight Voir le message
    Car le singleton n'est pas thread safe.
    Il peut être encapsulé pour être "thread-safe"


    Citation Envoyé par Lolilolight Voir le message
    Et une classe mère singleton instanciée avec des classes fille template, cela me semble vraiment salle comme implémentation.
    Oui mais il n'y a pas de pointeurs, ni de new/ delete


    Citation Envoyé par Lolilolight Voir le message
    Je n'ai pas compter le nombre de ligne de code de mon moteur mais si il fait 10 000 lignes de code, c'est déjà bien.
    Il y a de grandes chances que leur moteur soit à base de pools threadés de tâches et patron de conception Observer avec une tripoté de managers (mémoire, réseau, hardware, ...)


    Citation Envoyé par Lolilolight Voir le message
    PS : les exceptions je trouve ça bête de ne pas les utiliser, surtout depuis qu'il y a les pointeurs intelligent,
    Pointeurs intelligents dit pointeurs


    Citation Envoyé par Lolilolight Voir le message
    Pour le système de RTTI autant utiliser typeid plutôt que de le réinventé. :/
    Je ne vois pas en quoi ne pas l'utilisé augmenterai la sécurité.
    Peut-être qu'avec la RTTI il faut faire des reinterpret_cast.

    C'est plus "simple" de faire ton propre système et qu'il soit utile pendant l'exécution mais aussi pendant le débogage et à l'optimisation mémoire.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Il peut être encapsulé pour être "thread-safe"
    Oui je me disais ça et je faisais ça avant pour mon système de gestion des ressources, cependant, je suis passé à un système de contexte. (D'ailleurs on m'a conseillé de le faire par propreté du code et par respect pour la programmation orientée objet.)

    Je trouve ça beaucoup plus propre de tout initialiser les entités au chargement et de tout détruire à la fin du programme, lorsque le contexte est détruit, plutôt que d'utiliser un singleton.

    Je ne crée rien et je ne détruit rien au cours du jeux, (à part des particules mais je ne le fais pas avec des new et des delete), je ne fais que de changer des pointeurs...

    Je tourne à du 30 FPS avec un vieux PC de plus de 5 ans et une veille carte graphique avec en plus une vieux driver qui ne supporte même pas l'opengl moderne.

    Oui mais pas il n'y a pas de pointeurs, ni de new/ delete.
    Oui enfin, je ne vois pas en quoi ça augmente les performances surtout si les news et les delete ne sont pas fait dans la boucle de jeux.

    Il y a de grandes chances que leur moteur soit à base de pools threadés de tâches et patron de conception Observer avec une tripotés de managers (mémoire, réseau, hardware, ...)
    Pas besoin de threads pour faire cela, des sockets non bloquants, et des timers suffisent.

    Pointeurs intelligents dit pointeurs
    Je ne vois pas en quoi ça pose problème d'utiliser des pointeurs surtout si on ne les allouent pas et si on ne les détruits pas dans la boucle de jeux. (ce qui bien sûr baissent les performances)

    Peut-être qu'avec la RTTI il faut faire des reinterpret_cast.

    C'est plus "simple" de faire ton propre système et qu'il soit utile pendant l'exécution mais aussi pendant le débogage et à l'optimisation mémoire.
    Non, sans RTTI tu vas devoir définir une std::string personnalisée pour chaque type que tu vas enregistrer dans ta factory, je ne fais aucun reinterpret cast et devoir te souvenir du nom lors de l'appel de la fonction non virtuelle template puisque apparemment ils n'utilisent pas non plus de fonctions virtuelles.
    Un système de réflexibilité est plus lent qu'une fonction virtuelle,

    Au niveau du débogage je m'en sors très bien comme ça.

    Bref ce qu'ils font là ce n'est rien d'autre que du c with c++.

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Lolilolight Voir le message
    Car le singleton n'est pas thread safe.
    En quoi ce n'est pas thread-safe ? La seule partie du pattern singleton qui peut ne pas être thread-safe, c'est la création de l'instance unique ; mais si c'est implémenté correctement, c'est tout à fait thread-safe... Après, si l'objet singleton lui-même n'est pas thread-safe, c'est une autre histoire, mais ce n'est plus spécifique au pattern Singleton.

    Citation Envoyé par Lolilolight Voir le message
    sincèrement en tant qu'indé moi je me casse pas le cul je fais la même chose mais avec beaucoup moins de lignes de codes, et le tout, tout seul. (Ou au mieux à deux mais c'est rare)
    Ben au moins tu te prends pas pour de la m***e
    Il s'agit de jeux AAA, genre Assassin's Creed, Far Cry, Watch_Dogs, etc. Je serais curieux de voir un jeu comparable développé par toi tout seul...

    Citation Envoyé par Lolilolight Voir le message
    PS : les exceptions je trouve ça bête de ne pas les utiliser, surtout depuis qu'il y a les pointeurs intelligent, surtout que elles ne se lancent pas pendant la boucle de jeux en général mais plutôt lors du chargement de ressources ou de la sérialisation, je ne vois pas du tout en quoi ça pourrai gêné les performances.
    Tu ne vois pas ? Ben eux ils voient ; s'ils ont décidé de se passer des exceptions, c'est pas par masochisme, c'est parce qu'ils ont fait des mesures, du profilage, etc, pour déterminer que ça nuisait aux perfs.

    Citation Envoyé par Lolilolight Voir le message
    Bref encore des arguments et un débats qui me semble, être du grand n'importe quoi.
    Je te trouve un brin arrogant quand même
    Quand tu auras fait un jeu AAA à toi tout seul, on en reparlera...

  12. #12
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    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 360
    Points : 20 376
    Points
    20 376
    Par défaut
    Citation Envoyé par Lolilolight Voir le message
    Je trouve ça beaucoup plus propre de tout initialiser les entités au chargement et de tout détruire à la fin du programme, lorsque le contexte est détruit, plutôt que d'utiliser un singleton.
    pour un jeu qui demande beaucoup de ressources en mémoire c'est une logique qui peut être risquée...
    si tu as énormément d'entités et que tu alloues n milliers ou n millions d'entités d'un coup , soit l'OS refuse soit le jeu plante..
    si tu as mettons 4 Go de RAM rien ne prouve qu'ils soient disponibles même en grande partie...
    donc pour ce qui est des allocations et d'initialiser les entités il vaut mieux le faire progressivement...
    Citation Envoyé par Lolilolight Voir le message
    Le nombre d'employé et de développeur me semble énorme et le nombre de ligne de code également, sincèrement en tant qu'indé moi je me casse pas le cul je fais la même chose mais avec beaucoup moins de lignes de codes, et le tout, tout seul. (Ou au mieux à deux mais c'est rare)
    un peu de bon sens ( je vais dans le sens de Tomlev) : un jeu développé par un indépendant n'a pas la même complexité qu'un jeu commercial AAA comme Assassin's Creed !
    Tu travailles tout seul sur un jeu je suppose sur tes heures de loisir, Ubisoft Montreal c'est un paquet de salariés qui travaillent 40heures par semaine.
    Ensuite pour ce qui est du nombre de lignes de code , rien que Irrlicht 3d voire SDL qui est Open Source c'est déjà tout un paquet de lignes de code..donc pour ce qui est de projets d'Ubi Soft..

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour a tous,

    Bref selon moi rien de bien nouveau sous le soleil. Le jeux vidéo ne fait que reprendre les technique déjà existantes en HPC (global data pools, cache blocking, cache friendliness, vectorization, ...etc.) afin d'attaquer au mieux la bande passante mémoire (véritable goulot d’étranglement pour une large majorité d'applications dont fait parti le jeux vidéo aujourd'hui). Certes il s'agit ici d'oriente objet mais bien appauvri et quasiment "procédural" façon C afin de retrouver des performances accrues propres au langage lorsque l'on doit faire face à des datasets de plus en plus colossaux. Si je peux me permettre de troller un peu, il ne s'agit ici que de quelques "petits" giga octets à traiter et non pas des tera, peta voir exa octets. Certes une fois de plus il y a la contrainte du "temps réel" et les multiples couches d'inter-communication qui ne s'appliquent pas au HPC (sous une certaine forme tout du moins).

    Cela dit, malgré le fait que le jeux vidéo ne réinvente pas la roue en terme d'optimisation, c'est tout de même un sacré travail à fournir afin d'arriver à de tels résultats quand on voit les jeux récents. Je dois avouer que cette nouvelle approche simulation numérique avec la contrainte temps réel est véritablement excitante d'un point de vue scientifique et technique. Cela ajoute des contraintes qui ne font que corser le défi et force l'innovation, sinon quel intérêt ? A bon entendeur... ;-)

    Romain

  14. #14
    Invité
    Invité(e)
    Par défaut
    Parfois je me demande si c'est pas vous qui me prenez pour de la m*****.

    pour un jeu qui demande beaucoup de ressources en mémoire c'est une logique qui peut être risquée...
    si tu as énormément d'entités et que tu alloues n milliers ou n millions d'entités d'un coup , soit l'OS refuse soit le jeu plante..
    si tu as mettons 4 Go de RAM rien ne prouve qu'ils soient disponibles même en grande partie...
    donc pour ce qui est des allocations et d'initialiser les entités il vaut mieux le faire progressivement...
    n millions d'entités d'un coup ? ça me semble beaucoup pour un jeux du style AAA.

    M'enfin dans ce cas là je ne me casse pas la tête hein, j'alloue au fur et à mesure sur le tas hein (obligé avec du polymorphisme) sinon il faut utilisé une référence et une variable globale pour ne pas avoir des effets de slicing (d'ailleurs un singleton, c'est une variable globale, que ça soit une variable unique ou pas, mais bon si on ne conserve pas l'unicité dire que c'est un singleton est faux, je parlerais plutôt de classe statique), c'est le seul moyen si tu ne veux pas utiliser de pointeurs, mais les variables globales ne sont détruite qu'à la fin du programme donc, toute la RAM sera consommée!

    Bon j'ai pas le choix depuis le début je me lance seul dans des projets car pleins de gens me prennent pour de la m****, mais bon ça, c'est mon problème, pas besoin de débattre là dessus ici.

    un peu de bon sens ( je vais dans le sens de Tomlev) : un jeu développé par un indépendant n'a pas la même complexité qu'un jeu commercial AAA comme Assassin's Creed !

    Tu travailles tout seul sur un jeu je suppose sur tes heures de loisir, Ubisoft Montreal c'est un paquet de salariés qui travaillent 40heures par semaine.
    Ensuite pour ce qui est du nombre de lignes de code , rien que Irrlicht 3d voire SDL qui est Open Source c'est déjà tout un paquet de lignes de code..donc pour ce qui est de projets d'Ubi Soft..
    Je bosse au moins 40h semaine, si pas plus, Irrlicht comporte déjà beaucoup trop de lignes de code et de concepts pour un seul développeur comme moi (même chose pour java) donc j'ai choisi de ne pas les réutiliser, je sais que ce sont des projets commerciaux mais eux, ils ont les moyens alors, ils peuvent se permettent de perdre plus de temps avec plus de ligne de code pour un même résultat.

    Le vrai défi du développeur indé c'est de pouvoir arrivé au même résultat mais en affichant moins de choses et avec moins de ligne de code, de textures, etc...

    Sinon, bonbon les perfs comme tu dis mais je n'ai jamais trouvé cette complication nécessaire.

    Et puis ça m'étonnerait fort que ils arrivent à afficher n millions d'entités sans utiliser de pointeurs pour la raison que j'ai cité plus haut.

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 960
    Points
    32 960
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Lolilolight Voir le message
    Pas besoin de threads pour faire cela, des sockets non bloquants, et des timers suffisent.
    Félicitations, avec ta technique de ouf -que t'es le premier au monde a imaginer- tu es maintenant interdit de sortir sur XOne qui interdit les sockets locaux, et Sony qui les déconseillé très fortement sur PS4.

    D'autres idées de génie a balancer sans savoir comme ca ? Tu sembles avoir de la ressource a ce niveau.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Félicitations, avec ta technique de ouf -que t'es le premier au monde a imaginer- tu es maintenant interdit de sortir sur XOne qui interdit les sockets locaux, et Sony qui les déconseillé très fortement sur PS4.

    D'autres idées de génie a balancer sans savoir comme ca ? Tu sembles avoir de la ressource a ce niveau.
    Ha dans ce cas là je préfère ne pas utiliser ses plateformes, ça serait comme utiliser window xp qui n'est plus mis à jour depuis des mois.

    Non mais sérieusement, ça ressemble plus à des arguments commerciaux pour vendre assassin screed plutôt qu'une conférence sur le développement.

    Tout les développeurs professionnels savent que ses manière de programmer sont obsolètes. :/

  17. #17
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Je vais troller, mais… Choisir Assassin’s Creed Unity comme exemple, c’est un bon moyen de montrer ce qu’engendre l’utilisation massive de telles techniques : des bugs à foison

    En tout cas je mets ça en opposition aux travaux d’Alexandrescu, qui lui aussi travaille sur de la micro-optimisation : lui a décidé de s’appuyer massivement sur son compilateur, et sur les fonctionnalités avancées qu’offre le langage. Là, j’ai plus l’impression qu’on est sur l’utilisation massives de techniques datant des années 90, poussées à l’extrême. Rien de nouveau sous le soleil, comme l’ont fait remarquer certains.

    Après, je n’aurais pas la prétention de faire mieux, et ils ont clairement des raisons de faire comme ils font. Je m’interroge simplement sur la possibilité que le monde du jeu vidéo (qui est un milieu quand même assez fermé, qui recrute surtout en sortie d’école : peu de transfuges expérimentés se lancent dans le domaine) se prive simplement, par conservatisme, des bénéfices qu’apporteraient certains mécanismes du langage, utilisés dans un contexte de hautes performances (à la Alexandrescu).

  18. #18
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Citation Envoyé par Lolilolight Voir le message
    Ha dans ce cas là je préfère ne pas utiliser ses plateformes, ça serait comme utiliser window xp qui n'est plus mis à jour depuis des mois.
    Mes connaissances sur le jeu vidéo professionnel sont modestes, mais je pense que ce n'est pas une logique que tu peux appliquer quand tu conçois des jeux qui coûtent des dizaines de millions et qui ont les impératifs de rentabilisation qu'on peut imaginer.
    Le truc ce n'est pas que les intervenants veuillent te rabaisser, mais tes posts donnent l'impression que tu voudrais transposer tel quel ton paradigme de développeur indépendant sur un projet qui fait 50x l'ampleur et encore. Je ne pense pas qu'ils complexifient les choses juste parce qu'ils sont nombreux et ont les moyens, mais justement au contraire parce qu'ils ont pas la possibilité de les simplifier... La meilleure preuve, ils reconnaissent même utiliser des langages de plus haut niveau pour les parties moins critiques, c'est bien qu'ils veulent privilégier la productivité lorsqu'ils ont le choix, avec les pressions qui existent sur les délais ça se comprend. Surtout que dans le cas d'assassin's creed unity, on est en droit de penser qu'ils n'ont pas eu tout le temps nécessaire pour les finitions .

  19. #19
    Invité
    Invité(e)
    Par défaut
    Je maintiens l'avis de white-tentacle, je préfère me baser sur des optimisations du style du travail d’Alexandrescu, plutôt que des optimisations datant des années 90 et provoquant des bugs à foisons. (Avec l'utilisation massive de ses technolgies)

    Unity, utilise du C# ou bien du VB il me semble pour son language de script, ou alors c'est que pour leur gameplay ils n'utilisent pas de les optimisations offert par le c++ ?

    Ok, ça ressemble plus à un éditeur que à un moteur de jeux mais..., les jeux fais avec unity tournent avec des scripts codé en C#!

    Félicitations, avec ta technique de ouf -que t'es le premier au monde a imaginer- tu es maintenant interdit de sortir sur XOne qui interdit les sockets locaux, et Sony qui les déconseillé très fortement sur PS4.
    Je n'ai pas le sentiment que l'on parle de la même chose, je ne parle pas de sockets locaux, je parle de socket non bloquant.

    Bref, je n'ai pas envie de me baser sur Assassin Creed Unity comme la plupart des développeurs indépendant pour mes propres raisons. (Même si ce n'est sûrement pas une mauvaise base pour commencer)

    Mais bon l'époque ou ils ont commencé à coder cela date sûrement de très loin, et j'ai commencé il y a longtemps également, à mon époque on utilise le c++14, et on priviligie l'innovation plutôt que la dépendance à des moteurs dont le code source date surement des années 90. :/

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 307
    Points : 983
    Points
    983
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    Je vais troller, mais… Choisir Assassin’s Creed Unity comme exemple, c’est un bon moyen de montrer ce qu’engendre l’utilisation massive de telles techniques : des bugs à foison

    En tout cas je mets ça en opposition aux travaux d’Alexandrescu, qui lui aussi travaille sur de la micro-optimisation : lui a décidé de s’appuyer massivement sur son compilateur, et sur les fonctionnalités avancées qu’offre le langage. Là, j’ai plus l’impression qu’on est sur l’utilisation massives de techniques datant des années 90, poussées à l’extrême. Rien de nouveau sous le soleil, comme l’ont fait remarquer certains.
    Peut être aussi que tout cela est du à la large base de code ancienne qu'ils doivent maintenir et faire évoluer tout en gardant une certaine cohérence. Moi aussi j'ai trouvé un peu old school leurs techniques d'optimisation de code.

Discussions similaires

  1. CppCon 2014 – La programmation multicœur dans les jeux C++
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 9
    Dernier message: 05/01/2015, 16h19
  2. CppCon 2014 – Le C++ dans les jeux triple A
    Par LittleWhite dans le forum C++
    Réponses: 14
    Dernier message: 30/12/2014, 02h04
  3. Du réseau dans les jeux
    Par Mathieu.J dans le forum Développement
    Réponses: 3
    Dernier message: 07/05/2004, 16h33

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