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 :

.NET et C# sont-ils prêts pour le développement de jeux ?


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut .NET et C# sont-ils prêts pour le développement de jeux ?
    Le débat est ouvert.
    .Net fait-il l’affaire?

    Je propose pour commencer à ceux qui ne connaissent pas quelques bibliothèques permettant le multimédia.
    SDL.NET, idem que SDL pour C++
    SFML, qui possède désormais un binding C#
    XNA, qui en est a sa version 3. Un framework complet de création de jeux, basé sur DX9.
    MD3D10, une implémentation de Direct3D en code managé.
    MDX, la version officielle et abandonné de Microsoft de direct pour .net, on trouve encore beaucoup de documentation.
    SlimDX, version non officiel de DirectX 9/10 et bientôt 11 pour C#
    OpenTK, une version friendly user de OpenGL
    TAO, une version plus standard de OpenGL
    Silverligth 2 (bientôt 3), technologie web officielle orienté multimédia

    Il en existe d’autre mais déjà on voit que la communauté .NET (et très souvent C#) est fortement active sur le domaine du multimédia et du jeu vidéo en particulier.
    Concernant la plateforme .NET, rappelons que beaucoup de langage tourne dessus, tel que C# ou VB et plus récemment F#. Mais n’oublions pas des langages très apprécié comme Python ou Ruby, mais également ADA, Cobol, C++, …

    A vous ….

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Voici un exemple de portage de quake sous silverlight pour ceux qui veulent une techno web.

    http://channel9.msdn.com/shows/Conti...review/#Page=1

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Oui, le C# et .Net sont des technologies tout à fait intéressantes pour développer des jeux, tant que l'on se limite aux technologies Microsoft, donc Windows, Xbox 360 et Silverlight. En revanche, on risque de rencontrer de grandes difficultés à porter ces jeux sur d'autres plateformes que sont les PlayStation 3 ou Mac, par exemple.

    Ceci étant, le C# et .Net sont déjà utilisés dans de nombrex outils internes développés par les équipes outils des studios de développement. Ils permettent en effet un gain de productivité tout à fait intéressant tout en restant proches des mécanismes C++ acquis par les développeurs de jeux voici plusieurs années déjà.

  4. #4
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 370
    Points : 40 164
    Points
    40 164
    Par défaut
    Bien que M$ ne nous ait pas habitué à des politiques ouvertes, la philosophie derrière .Net est (d'un certain point de vue) de favoriser la portabilité. L'une des idées de .Net est de retirer toute dépendance entre le bytecode et la plateforme (comme java).

    Quiconque implémente le Common Language Runtime adéquat pourra exécuter sans recompilation un programme .Net. Que votre Mac, PS3 ou n'importe quelle future plateforme implémente un CLI optimisé pour sa propre architecture, et elle saura faire tourner votre jeu .Net. Le projet Mono montre le chemin, même s'il a bien du mal.

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    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 396
    Points : 20 504
    Points
    20 504
    Par défaut
    bonjour,

    Citation Envoyé par ash.ice.loky Voir le message
    Le débat est ouvert.
    .Net fait-il l’affaire?
    Je ne vois pas ce que peut apporter .NET et C# pour le développement de jeu vidéo.
    Ce qui fait évoluer les jeux vidéos c'est éventuellement l'amélioration des performances d'affichage de l'IA avec programmation en multitherading etc
    Or en rien .NET et C# n'apportent des fonctionnalités supplémentaires.. ;ce n'est ni plus ni moins que des langages améliorés et réchauffés ( de Java et VB6 voire Delphi parce que dans l'équipe de .NET il y avait des anciens de Borland ) .

    Un thread en C# c'est la même chose qu'un thread en C++/API de l'OS ni plus ni moins sauf que le thread en C# est encapsulé et qu'il y a une machine virtuelle et un "ramasse-miette".

    En plus en .NET on ne peut même pas faire des optimisations assembleurs , quid de nouvelles technologies comme CUDA et autres.

    Et puis fondamentalement .NET n'est pas vraiment orienté jeu vidéo on veut mettre du .NET et C# à toutes les sauces tout comme Java.

    .NET initialement c'est une architecture logicielle distribuée pour l'entreprise pour la virtualisation d'applications /location sur serveurs.
    Je ne dis pas qu'on ne peut pas faire de jeux e C# et .NET ( on va encore comprendre de travers ce que j'écris ) mais je ne vois pas du tout ce que C# peut m'apporter.
    Surtout que 90-95% des livres et tutoriels concernant la programmation des jeux sont en C++

    Je propose pour commencer à ceux qui ne connaissent pas quelques bibliothèques permettant le multimédia.
    SDL.NET, idem que SDL pour C++
    SFML, qui possède désormais un binding C#
    XNA, qui en est a sa version 3. Un framework complet de création de jeux, basé sur DX9.
    ...
    C'est bon pour les programmeurs indépendants , l'indie gamer qui fait des petits projets mais les studios de jeu vidéos utilisent des middlewares comme Gamebryo par exemple.

    Silverligth 2 (bientôt 3), technologie web officielle orienté multimédia
    Avec cette technologie Microsoft veut concurrencer par tous les moyens Adobe et son Flash qui existe voilà plus de 10 ans.
    Y parviendra-t-il ?

  6. #6
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    C'est bon pour les programmeurs indépendants , l'indie gamer qui fait des petits projets mais les studios de jeu vidéos utilisent des middlewares comme Gamebryo par exemple.
    Ça va être difficile de concurrencer le C++ pour du triple A, mais pour le reste du monde le C# est assez alléchant. Le langage a bien évolué (syntaxe de haut niveau bien sympathique), offre pas mal de facilités, des performances plus que décentes, des outils pour la programmation concurrente. Couplé au XNA, c'est alléchant.

    Citation Envoyé par Mat.M Voir le message
    Avec cette technologie Microsoft veut concurrencer par tous les moyens Adobe et son Flash qui existe voilà plus de 10 ans.
    Y parviendra-t-il ?
    De mon point de vue il y a encore du boulot. A chaque fois que je tombe sur du Silverlight (genre les sites de Microsoft), impossible d'obtenir quoi que ce soit sur mon Linux. A se demander pourquoi j'ai installé le plug-in firefox

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    C'est bon pour les programmeurs indépendants , l'indie gamer qui fait des petits projets mais les studios de jeu vidéos utilisent des middlewares comme Gamebryo par exemple.
    En effet mais c'est un problème récurrent.

    Combien de membres viennent poser des questions sur comment faire le jeu de leurs rêves tout en ayant jamais tapé une ligne de code !! La réponse est hélas toujours la même : C++/ogl/dx, …, mais dans un sens pourquoi compliquer quand il existe des solutions alternatives. J’ai longtemps conseillé Python et Ruby qui offraient un binding OGL et une approche simplifié. Hélas il faut reconnaître que le choix est limité tant dans les apis que dans les outils, sans oublié les performances souvent très en deçà.

    .NET permet tout de même d’intervenir dans le monde du jeu vidéo avec un IDE de qualité, un ensemble d’apis conséquent, le choix de la technologie et des performances plus qu’honorable.

    La question est assez simple, comment permettre au passionné de jeux vidéo de créer ce qu’il souhaite sans restrictions apparentes ?

    En ce sens XNA est une petite révolution, jusqu’à ce jour, il fallait soit tout coder, soit utiliser des langages basic (darkbasic, purebasic, …) afin d’avoir un all-in-one en main.
    Mais oublions pas que opengl tout comme directX est utilisable en .NET

  8. #8
    Membre actif Avatar de Gulix
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 273
    Points
    273
    Par défaut
    Pour répondre à la question, oui je pense que C# et .NET sont prêt pour le développement de jeux. Il faut juste ne pas se tromper de cible. En tant qu'amateur, C# me convient par sa syntaxe, les nombreuses ressources disponibles, et les outils existants. Après, d'un point de vue professionnel, la technologie .NET peut sûrement être l'objet de réticences fondées.

    Pour quelqu'un qui souhaite développer un jeu assez simple, et qui a déjà des connaissances en C#, les nombreux frameworks orientés jeux dispos sont une aubaine.

    En ce sens XNA est une petite révolution, jusqu’à ce jour, il fallait soit tout coder, soit utiliser des langages basic (darkbasic, purebasic, …) afin d’avoir un all-in-one en main.
    Je serais pas aussi réjoui que toi. Je développe en XNA, et j'aime beaucoup ce framework. Maintenant, il reste quand même assez éloigné des langages basic au niveau de la facilité d'utilisation. C'est une couche au-dessus de DirectX, mais pas beaucoup au-dessus. Les moteurs de jeu XNA me semblent plus ouvert d'accès que le pur XNA pour quelqu'un se lançant pour la première fois dans la conception d'un jeu.

  9. #9
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    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 396
    Points : 20 504
    Points
    20 504
    Par défaut
    Citation Envoyé par ash.ice.loky Voir le message
    .NET permet tout de même d’intervenir dans le monde du jeu vidéo avec un IDE de qualité, un ensemble d’apis conséquent, le choix de la technologie et des performances plus qu’honorable.
    Je suis d'accord pour le C++ il y a une "learning curve" ( mais avec C# aussi ) et puis il y a le risque de fuites mémoires.
    Cependant C# ne suffit pas il faut au besoin passer par des modules de code pour l'IA par exemple comme Open Steer pour le Path Finding pour au final faire un jeu sophistiqué.
    C# et .NET ne propose pas cela basiquement..

    La question est assez simple, comment permettre au passionné de jeux vidéo de créer ce qu’il souhaite sans restrictions apparentes ?
    Je ne saisis pas le sens de la question : de quelles restrictions parles-tu ?

  10. #10
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Par restrictions je parle de celle de la performance et de ce qui existe (Ruby, Python, PHP, ..., pour ne parler que des plus cités) ou du coût d'entrée (connaissances du langage, quantité de code).

    Pour prendre le cas de C# et du code managé en général, le gain de productivité a été prouvé, de ce coté nous pouvons sûrement tomber d'accord. Ce qui est vrai dans une certaine mesure pour des professionnels, est encore plus vrai pour des personnes découvrant la programmation.

    Il y a encore peu fleurissaient sur le forum des threads tel que
    "Je maîtrise le C++, je veux faire un mmorpg, c'est quoi la suite ?"

    Comprenez

    "J’ai découvert ce langage il y a 3 mois, j'ai créé une class String, dans 3 mois je veux montrer a tout le monde WoW 2 !!!"

    C# a au moins l'avantage d'introduire une certaine aisance permettant a des débutants de ce mettre dans la programmation multimédia.

    Mais ce serait un peu sous estimer .NET que de le dédié au débutant, combien de développeur "chevronné" se sont lancé dans le développement d'un jeu vidéo, pour au final lâcher morceaux sans même avoir produit un Pong ? .NET aurait sûrement permit à ces gens de se concentrer sur leurs jeux et les APIs associées et non sur les 1001 Frameworks qui gravitent autour d'un jeu pour au final ne rien produire.

  11. #11
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    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 396
    Points : 20 504
    Points
    20 504
    Par défaut
    Citation Envoyé par ash.ice.loky Voir le message
    combien de développeur "chevronné" se sont lancé dans le développement d'un jeu vidéo, pour au final lâcher morceaux sans même avoir produit un Pong ? .NET aurait sûrement permit à ces gens de se concentrer sur leurs jeux et les APIs associées et non sur les 1001 Frameworks qui gravitent autour d'un jeu pour au final ne rien produire.
    pas d'accord du tout: Si un développeur "chevronné" comme tu dis se lance dans un jeu vidéo et au final n'est pas capable de faire un pong c'est pas une histoire de programmer en C++ ou C#.
    Dans un projet de jeu le langage c'est un élément seulement c'est un moyen pas une finalité
    Donc savoir programmer en C++ ou C# ne suffit pas je ne vois vraiment ce que peut apporter C# de plus à part éventuellement du code un peu plus homogène et éviter les fuites mémoires comme en C++.

    Si tu ne sais pas faire aboutir un jeu c'est que tu as mal défini la finalité de ton jeu tu l'as mal conçu dans ton esprit ou bien la conception graphique le design , le gameplay est raté.
    Le langage informatique n'a que peu avoir là dedans.

    NET aurait sûrement permit à ces gens de se concentrer sur leurs jeux et les APIs associées et non sur les 1001 Frameworks qui gravitent autour d'un jeu pour au final ne rien produire.
    Mais qu'est ce que .NET apporte de plus concrétement ??
    Y'a même pas de classes dans le framework de base par exemple pour faire des particules ou pour le Pathfinding.
    .NET il y a des classes pour les collections , comme en C++, ça te permet de faire de la POO comme en C++, de faire des graphismes comme..en C++.
    Et les graphismes n'en parlons pas si tu veux faire un jeu de stratégie genre tour par tour par exemple avec le gdi ( c.a.d sans Direct X ou Open GL ) ça risque d'être plus lent qu'un jeu fait avec MFC et C++.

    .NET pour faire une progiciel d'entreprise comme ceux sur lesquels j'ai travaillé en SSII peut apporter des gains de productivités indéniables parce que c'est un ensemble logiciel homogène ( contrairement à avant avec VB6 et les OCX et le dll-hell )
    Quoique c'est discutable parce que Microsoft force les gens à utiliser .NET ( en ayant abandonné vb6) pour combattre Java.
    Mais dans le domaine du jeu vidéo je ne vois pas trop bien les gains de productivités que cela peut apporter parce que dans un jeu on est obligé de quelque part réinventer la roue parce qu'il faut recomposer l'interface utilisateur les interactions etc..

  12. #12
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 531
    Points : 5 209
    Points
    5 209
    Par défaut
    je suis relativement d'accord avec Mat.M, quelqu'un qui ne sait pas pondre un pong en C++ ne sait pas pondre un pong, ce n'est pas une question de langage

    le C# ou .Net n'apportent strictement rien de plus au jeu vidéo
    le C# n'est qu'une (pâle) copie made in microsoft de java (entre autres) spécifique aux platformes microsoft
    .Net n'est qu'une bibliothèque de composants graphiques et de templates aux performances correctes pour du managé

    pour le monde professionnel c'est bien mais .Net souffre de très gros défaut de performances même dans ce domaine et il faut réécrire les composants graphiques pour avoir des performances correctes
    alors faire un jeu c'est bien beau mais faudra pas être trop gourmand

  13. #13
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par shenron666 Voir le message
    je suis relativement d'accord avec Mat.M, quelqu'un qui ne sait pas pondre un pong en C++ ne sait pas pondre un pong, ce n'est pas une question de langage
    Je suis daccord également, mais je pense que ce n'était pas à prendre au pied de la lettre, c'est une sorte de métaphore si tu veux

    Citation Envoyé par shenron666 Voir le message
    le C# n'est qu'une (pâle) copie made in microsoft de java (entre autres) spécifique aux platformes microsoft
    Ca releverais plus du troll que de l'argumentation technique.
    Et pour cette raison, je ne prendrais même pas la peine d'argumenter une contre-attaque.

    Citation Envoyé par shenron666 Voir le message
    .Net n'est qu'une bibliothèque de composants graphiques et de templates aux performances correctes pour du managé
    Le résumer à ça est extrement réducteur, et Faux qui plus est.
    Là encore, ça ne ressemble pas à de vrais arguments techniques, tu tentes de persuader, à défault de pouvoir convaincre. Mais nous sommes des hommes de sciences , dans ce genre de débat, nous devons ne prendre en compte que des paramètres techniques

    Citation Envoyé par shenron666 Voir le message
    pour le monde professionnel c'est bien mais .Net souffre de très gros défaut de performances même dans ce domaine et il faut réécrire les composants graphiques pour avoir des performances correctesalors faire un jeu c'est bien beau mais faudra pas être trop gourmand
    Je commence à comprendre, tu dois confondre .NET et WinForm/GDI+, et non, .NET est loin de se limiter à ces deux technologies. Je dirais même plus que ce serait en effet sucidaire de programmer un jeu à l'aide de ces technoogies. Pour ce qui est de l'affichage, il est énuméré une grande liste de librarys multimedia fonctionant avec .NET sur le premier post.

    De plus, .NET ne souffre pas de "très gros défaut de performances" comme tu le prétends, voici un test en témoignant : http://www.grimes.demon.co.uk/dotnet/man_unman.htm
    Les sources du test sont aparament téléchargeable, je n'ai pas éssayé, après, peut être que le test n'est pas significatif, il faudrait comparer avec d'autres pour être certains. Mais en tout cas, je sais par experience, que l'environement .NET ne souffre pas de grosses pénalités de performances comme certains préjugés le laisseraient penser. ( Si vous regardez des tests de performances, faites attentions qu'ils datent bien d'après le .NET 2.0 c'est à dire 2005 )

    Et juste comme ça, oui GDI, et donc WinForm ne sont pas très performants, car se sont des technos de dessin 2D. Mais leurs sucesseurs, qui sont déstinés à les remplacer à terme, à savoir silverlight et WPF, sont quand à eux très performant, car ils tirent partit de l'accélération 3D.


    Pour répondre à Mat.M :
    En plus en .NET on ne peut même pas faire des optimisations assembleurs , quid de nouvelles technologies comme CUDA et autres.
    On peut appeller sans problèmes des fonctions unmanaged en .NET. Il suffit de mettre [DllImport()], suivit du prototype de ta fonction, et paf, tu peux l'utiliser dans ton code managé. Donc si tu as besoin de faire du calcul assembleur, Cuda, tu le fais dans une fonction C++ unmanagé que tu appelle ensuite dans ton code managé. C'est aussi simple que ça



    Maintenant, pour prendre pleinement part au débat, je pense que, le .NET a tout à fait sa place dans l'industrie du jeu video.
    Peut être pas dans les jeux réclamant des hautes performances, mais ceux-ci sont loin de représenter la majorité des jeux du marché.
    Les grands studios ayant tellement investis dans le C++ ( En terme de compétence et d'experience humaines, comme en terme de middleware ), que ce n'est pas près de changer du jour au lendemain.
    Cependant, avec l'arrivé du très jeune XNA, .NET se fait une place de plus en plus importante dans le homebrew, et les étudiants actuels qui pratiquent le homebrew, représentent les développeurs professionnels de demain

    Donc pour moi, .NET et C# sont tout à fait près pour le développement de jeux.

  14. #14
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 531
    Points : 5 209
    Points
    5 209
    Par défaut
    Citation Envoyé par Idrakis Voir le message
    Je suis daccord également, mais je pense que ce n'était pas à prendre au pied de la lettre, c'est une sorte de métaphore si tu veux
    pour toi peut-etre, mais pas pour moi

    Citation Envoyé par Idrakis
    Et juste comme ça, oui GDI, et donc WinForm ne sont pas très performants, car se sont des technos de dessin 2D. Mais leurs sucesseurs, qui sont déstinés à les remplacer à terme, à savoir silverlight et WPF, sont quand à eux très performant, car ils tirent partit de l'accélération 3D.
    et juste comme ça, ma remarque sur les composants graphiques portait sur WPF qui, bien que accéléré par la carte 3D pour peu qu'on en ait une vraie, reste "lent" dans le cas de certains composants
    je ne me sert pas de Winform car comme tu dis c'est du dessin 2D d'une lenteur affligeante

    pour résumer mon ressenti de C# et .Net, ils permettent de développer rapidement une application qui fonctionne bien
    mais pour ce qui est de faire une application "lourde" et rapide, ça prend énormément de temps comme tous les autres langages

    Citation Envoyé par Idrakis
    On peut appeller sans problèmes des fonctions unmanaged en .NET. Il suffit de mettre [DllImport()], suivit du prototype de ta fonction, et paf, tu peux l'utiliser dans ton code managé. Donc si tu as besoin de faire du calcul assembleur, Cuda, tu le fais dans une fonction C++ unmanagé que tu appelle ensuite dans ton code managé. C'est aussi simple que ça
    oui c'est possible mais as tu déjà testé ?
    le surcout du passage managé -> non managé + le retour au managé
    pour un jeu vidéo c'est très pénalisant de s'amuser à mélanger du non managé avec du managé

  15. #15
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut
    WPF est lent car il n'est pas non plus fait pour fonctionner dans un jeu video, ça reste une technologie pour développer du "client lourd", et comme son nom l'indique, c'est "lourd". Principalement dut aux tonnes d'évenement déclenchés sans arrêts, et qui sont très couteux. C'est très pratique, mais pas dans le cadre d'un jeu video, ou on aura besoin que d'une infime partit des évenements déclenchés. En XNA par exemple, Microsoft déconseil le mélange de ces technologies, c'est pourquoi quelqu'un a développé un GUI générique dédié au jeu : http://www.gameprojects.com/project/?id=e68f3464c4
    Qui dailleurs, par sa généricité est peut être encore un peu lent, mais tout a fait acceptable lorsqu'on pouvoir tester rapidement des fonctionalités de son jeu grace à une interface.



    J'avais testé en effet l'importation de code unmanagé, mais ce n'était pas dans le cadre de contrainte temps réel.
    Cependant, des projets comme SlimDX et MD3D, sont de simple wrapper des fonction DirectX en .NET, et arrive pourtant à avoir de très bonne performances, donc soit ils utilisent une autre méthode que celle que j'ai indiqué, soit ce n'est pas si couteux que ça.

  16. #16
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    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 396
    Points : 20 504
    Points
    20 504
    Par défaut
    Dans le débat C++ vs .NET pour jeu vidéo une chose que je reprocherais à .NET c'est que c'est pas très portable et le code source est verrouillé avec .NET.
    Je m'explique : pour le code source du jeu que je suis en train de réaliser ( et que j'espère finaliser un jour- ouf boulot énorme) les appels à des API spécifiques à des API ( ici win32 et Direct X ) c'est à peine 20% du code total voire moins.
    Tout le reste c'est du C/C++ standard.
    Si du jour au lendemain je veux tout changer et basculer sous Open GL ou SDL par exemple pour en faire une version Linux eh bien il n'y aura pas trop de code à reprendre.
    Avec un code source destiné à .NET/C# c'est presqu'impossible parce que la sémantique, les appels de méthodes etc dépendent trop du framework.

    Un exemple concret : si tu prends le code source de Stratagus un moteur de RTS c'est facile de l'adapter sur telle ou telle plateforme le code "fonctionnel" et d'abstraction étant séparé des appels spécifiques à l'OS /API rendu.
    Faire cela avec C#/.NET je suis sceptique

    Citation Envoyé par Idrakis Voir le message
    Cependant, avec l'arrivé du très jeune XNA, .NET se fait une place de plus en plus importante dans le homebrew, et les étudiants actuels qui pratiquent le homebrew, représentent les développeurs professionnels de demain

    Donc pour moi, .NET et C# sont tout à fait près pour le développement de jeux.
    Oui d'accord mais comme tu dis XNA est une technologie plutot cantonnée à la création amateur.
    Comme tu l'écris les studios de JV ont investis dans le C++ et pour faire un jeu multiplateforme donc console et PC ils ont des "cross-compilers" ou "cross-libraries" donc je ne pense pas sauf preuve du contraire que XNA soit véritablement utilisée par les studios de jeux vidéos commerciaux.
    Si tu prends un middleware comme Gamebryo par exemple le code généré peut être pour console et PC
    http://www.emergent.net/en/Products/
    ( une petite licence de ce produit ça ne me déplairerait pas )

  17. #17
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut
    Pour ce qui est de la portabilité, en effet, cela reste le gros default de .NET.
    Bien que si c'est juste pour porter sur Linux et Mac Os, il y a toujours Mono qui permet de faire ça facilement.
    Mais la portabilité sur consoles est l'obstacle majeur.

    Cependant, la question initial n'est pas : ".NET va-t-il remplacer C++ dans le developpement de JV à terme", mais ".NET est-il prêt pour le developpement de JV".
    On peut voir cette question sous différents angles, mais globalement, je dirais que .NET pourrait très bien "grignoter" le terrain de C++ sans avoir la prétention de pouvoir anihiler ce dernier du secteur.
    Dans un premier temps il pourrait voir le jour dans les domaines du casual-game, homebrew, mais peut être ensuite également dans des jeux plus complexes.

    La progression de l'utilisation de .NET dans les jeux video est un phénomène a mettre en parallèle avec la progression de l'utilisation de .NET en général.
    Car, dans le developpement d'applications, le .NET est de plus en plus utilisé aux dépends du C++, ce qui favorise la formation et le nombre de dévelppeurs compétants dans cete technologie.
    Etant donné qu'il n'éxiste pas de clivage hermetique entre developpeurs de jeux video et développeurs "classique", il n'est pas impossible que la tendance se propage au secteur du jeu video.

    je ne pense pas sauf preuve du contraire que XNA soit véritablement utilisée par les studios de jeux vidéos commerciaux.
    XNA est encore très jeune, donc pour l'instant on ne peut pas trop se prononcer là-dessus. Cependant, il me semble que "Island of Wakfu" d'Ankama est développé en XNA justement.

  18. #18
    Membre régulier Avatar de LeonardL
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par Idrakis Voir le message
    XNA est encore très jeune, donc pour l'instant on ne peut pas trop se prononcer là-dessus. Cependant, il me semble que "Island of Wakfu" d'Ankama est développé en XNA justement.
    Si ce n'est pas ce projet, ça doit être un autre. Dans tous les cas, Ankama avait passé une offre de recrutement pour un développeur XNA.

  19. #19
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Et puis .NEt et C# sont 2 choses différentes !!

    Par exemple, grand fan de compilation j'ai développé mon propre langage de scripting, mon parser maison et mon binding C++, celui ci me servait principalement au développement IA.

    Depuis que je fait du C# j'ai découvert LINQ et la le gain de productivité est ahurissant. Pour l'IA c'est un vrai bonheur.

  20. #20
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par shenron666 Voir le message
    le C# n'est qu'une (pâle) copie made in microsoft de java (entre autres) spécifique aux platformes microsoft
    .Net n'est qu'une bibliothèque de composants graphiques et de templates aux performances correctes pour du managé
    Je ne sais pas ce qui me fait le plus peur...
    Qu'on puisse encore pondre une telle énormité trollesque de nos jours où que cette énormité soit le fruit d'un rédacteur.

    Enfin bref, je rejoins plus ou moins la vision de Mat; .Net n'apporte effectivement pas d'avancées pour le domaine du jeu vidéo et c'est parfaitement normal puisqu'il n'a pas été pensé pour ça.
    Par ailleurs, je reste assez sceptique concernant l'utilisation d'un environnement managé avec un GC non-prédictif dans ce domaine.

    Maintenant, cela ne veut pas dire que .net est définitivement exclu du monde des jeux vidéos, mais son adoption dépendra évidemment de frameworks tiers comme XNA.

Discussions similaires

  1. Les développeurs âgés sont-ils bons pour le garage ?
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 136
    Dernier message: 29/12/2017, 09h10
  2. Les frameworks de persistance (ORM) sont-ils dangereux pour les performances ?
    Par SQLpro dans le forum Débats sur le développement - Le Best Of
    Réponses: 205
    Dernier message: 04/02/2017, 16h43
  3. Réponses: 6
    Dernier message: 28/07/2014, 11h26
  4. Les IDE sont-ils dangereux pour les développeurs ?
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 85
    Dernier message: 13/05/2014, 11h41
  5. Réponses: 30
    Dernier message: 06/09/2009, 08h17

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