Developpez.com - Rubrique 2D-3D-Jeux

Le Club des Développeurs et IT Pro

Le moteur C# NeoAxis 3D 2.0 est disponible

Découvrez les améliorations de ce moteur de jeux extensible grâce au C#

Le 2013-11-29 13:52:25, par LittleWhite, Responsable 2D/3D/Jeux
NeoAxis est un moteur de jeu, multi-plateforme, simplifiant la création d'applications 3D interactives. NeoAxis propose une série d'outils graphique pour concevoir vos jeux :
  • un éditeur de carte ;
  • un éditeur d'interface utilisateur ;
  • un éditeur d'objets ;
  • un éditeur de matériaux ;
  • un éditeur pour la physique ;
  • un éditeur de terrains ;
  • ....


De plus, il est aussi possible d'ajouter des fonctionnalités en utilisant le C#.


Cette version utilise propose de nouvelles licences dont une entièrement gratuite :
  • Édition gratuite : environnement de développement complet, incluant la plupart des fonctionnalités telles que : l'ombrage dynamique, l'éditeur de paysage, les particules, les effet de HDR, Screen Space Ambiant Occlusion (SSAO), le champ de profondeur, les effets de lentilles... ;
  • Édition professionnelle : ajoute des fonctionnalités et propose un accès au code source des composants du moteur ;
  • Édition illimité : toutes les fonctionnalités et contient aussi le code source des outils du moteur ;
  • Édition source : inclut tout le code source.


Vous pouvez découvrir les nouvelles fonctionnalités du moteur dans notre actualité précédente.

Les développeurs prévoient d'ouvrir une boutique pour partager et récupérer des extensions du moteur ou du contenu pour les projets (modèles, textures...). De plus, ils souhaitent ajoutés des techniques manquantes telles que le rendu différé, le streaming en fond... et faire une documentation complète. À long terme, NeoAxis pourra supporté Linux et les plateformes mobiles.

Téléchargement

Vous pouvez télécharger le SDK ici : http://www.neoaxis.com/neoaxis/downloads

Votre opinion

Quel moteur C# utilisez vous pour vos projets ?
Que pensez-vous de NeoAxis ?

Voir aussi

Dévoilement des fonctionnalités
Annonce version mineure 1.31

Source

Site officiel
  Discussion forum
14 commentaires
  • I_Pnose
    Membre chevronné
    Envoyé par guillaume07
    et quand le GC passe, le jeux freeze ?
    Non ton jeu ne va pas freezer (ou alors il a un sérieux souci d’allocation d’objets). Grossièrement une collection de génération 0 prend entre 0 et 9ms, soit au pire la moitié de ton budget pour la mise à jour et le rend d’une seule image. bref si les collections sont maîtrisées ça passe inaperçu.

    Cela dit, le GC est certainement l’un des principaux facteurs qui fera qu’un jeu développé en C# sera moins performant qu’un jeu développé en C++ (ou tout autre langage qui laisse la main sur la mémoire). Mais cette différence est tout de même pas si énorme que ça ; une routine écrite en C#/SharpDX sera en moyenne 1.2x plus lente que la même routine écrite en C++/DirectX.

    Pour limiter les effets du GC il faut tout simplement éviter de le solliciter. Ça passe par exemple par l’utilisation de pools d’objets pour éviter les allocations (sur le tas) dans la boucle de jeu, éviter les foreach sur les collections qui implémentent IEnumerable, etc...
  • I_Pnose
    Membre chevronné
    Envoyé par DotNET74
    Personnellement je préfère Mono pour:

    - L'aspect XNA (Simple à programmer).
    - La liberté de faire autre chose qu'un jeu.
    - Contrôle total du code.
    - On reste dans Visual Studio et pas dans une interface de plus.

    Voilà
    Je suppose que lorsque tu parles de Mono, tu fais allusion à Monogame. Ce dernier n’est pas un moteur de jeu, selon moi, mais davantage un Framework de jeu. Du coup je ne pense pas qu’on puisse les comparer aussi facilement :

    D’un côté on a un ensemble d’outils (éditeur de map, éditeur de matériaux, physique, etc...), une interface dédiée qui permet de scripter des objets prédéfinis/d’appliquer des comportements (ou de créer ses propres objets/comportements, rapidement, via un langage de programmation) et de l’autre on a une surcouche sur l’API Graphique (DirectX ou OpenGL suivant la plateformes visée) permettant d’abstraire la création et la mise-à-jour du contexte graphique et le chargement des assets... il n’y a pas grand-chose de plus (si on veut créer un terrain de 3km² avec LOD dynamique, on se le code, si on veut de la physique, on se la code, et plus globalement si on veut créer un jeu vidéo il est nécessaire de se créer une surcouche par-dessus le Framework -éléments affichables, gestionnaires, etc...). Clairement, un moteur de jeu permet de s’affranchir de toutes ces étapes en donnant des solutions clé en main (plus de code HLSL/GLSL on a un éditeur de matériaux, le placement des objets se fait en temps réel via l’interface, on a une bibliothèque de composants afin de créer des interfaces, etc...).

    Tu vas me dire que tu préfères tout faire toi-même manuellement, mais dans la réalité un studio de jeux un tant soit peu sérieux ne s’amusera pas à réécrire la roue (sauf quand on s’appelle Dice et consort) et passera par un moteur de jeu. Après, Il faut savoir ce qu’on veut ; faire du jeu vidéo, ou un moteur de jeux vidéo.

    Pour en revenir au sujet, Il manque encore quelques arguments à ce NeoAxis pour faire de l’ombre à Unity3D ou UDK (pas de support multiplateforme parmi les différences les plus notables). Cela dit, le moteur a au moins le mérite d’ouvrir ses sources... si on y met le prix.
  • _MAID
    Membre confirmé
    Envoyé par jean_kevin_musclor
    Quelles sont les différences avec unity ?
    En complément, on pourrait surtout dire que l'outil manque encore cruellement d'ergonomie, même si la version 2.x apporte de réelles améliorations.
    Dommage, car le moteur est intrinsèquement plutôt bon, même si quelques manque se font encore sentir (Deferred Rendering, etc...)....
  • guillaume07
    Débutant
    c# pour le jeux video ?!
  • LittleWhite
    Responsable 2D/3D/Jeux
    Oui, ce n'est pas nouveau. Y avait déjà XNA, MonoGame, SharpDX, OpenTK ...
  • guillaume07
    Débutant
    et quand le GC passe, le jeux freeze ?
  • dfiad77pro
    Membre expérimenté
    Envoyé par guillaume07
    et quand le GC passe, le jeux freeze ?

    ça c'est surtout lié au politique de développement métier,
    si tu développe un jeux complexe direct en WPF Pure avec le refresh par zone, ça va lagger

    Le but des moteurs C# est de permettre de développer un jeux avec un moteur performant
    et de ne pas être trop limité par les performances des frameworks graphiques actuel qui sont fait pour l'applicatif.

    Perso avec les surfaces direct3D incluse dans WPF on est a de très bonnes perfs,
    même si programmer un jeu est rudement compliqué lorsqu'on est habitué à programmer de l'applicatif métier...
  • Envoyé par I_Pnose
    Pour limiter les effets du GC il faut tout simplement éviter de le solliciter. Ça passe par exemple par l’utilisation de pools d’objets pour éviter les allocations (sur le tas) dans la boucle de jeu, éviter les foreach sur les collections qui implémentent IEnumerable, etc...
    Je suis d'accord avec ça.
  • micka132
    Expert confirmé
    Envoyé par I_Pnose
    Pour limiter les effets du GC il faut tout simplement éviter de le solliciter. Ça passe par exemple par l’utilisation de pools d’objets pour éviter les allocations (sur le tas) dans la boucle de jeu, éviter les foreach sur les collections qui implémentent IEnumerable, etc...
    Si finalement il faut faire attention à ne pas solliciter le GC, n'est ce pas aussi "pénible" que de se taper la gestion de la mémoire à la main?
    J'y connais pas grand chose en jeux vidéo, et encore moins en c++, du coup si je veux me faire un petit jeu je partirais sur ce genre de solution, mais pour un pro y a t-il un avantage à utiliser du c#?
  • I_Pnose
    Membre chevronné
    Envoyé par micka132
    Si finalement il faut faire attention à ne pas solliciter le GC, n'est ce pas aussi "pénible" que de se taper la gestion de la mémoire à la main?
    J'y connais pas grand chose en jeux vidéo, et encore moins en c++, du coup si je veux me faire un petit jeu je partirais sur ce genre de solution, mais pour un pro y a t-il un avantage à utiliser du c#?
    Un pro peut tout à fait utiliser le C# en tant que langage de script, mais les composants bas-niveau seront généralement développés en C++ (c’est le cas de Unity par exemple, qui est développé en C, C++ et Vala, alors que la partie script se fait en C#, JS, ou Boo). Bref, ça c’est plus ou moins la règle dans l’industrie AAA.

    L’utilisation d’un wrapper DirectX comme SharpDx (ou OpenGl via OpenTK par exemple) permet toutefois de développer un moteur ou un Framework de jeu entièrement en C# (et de ce que j’ai compris c’est le cas ici avec NeoAxis), en gros le C# sera utilisé pour la plomberie du moteur ainsi que pour le scripting du jeu. L’inconvénient c’est qu’un deuxième boulet entre en compte (le premier étant le GC), c’est les changements de contexte managé/non managé ; ceci a un cout qui peut difficilement être gommé (puisque le moindre appel à l’API va nécessiter un changement de contexte).

    Pour te répondre, certains pro n’auront pas besoin de la puissance de frappe d’un moteur de jeu triple A et pourront tout à fait opter pour une solution full C# (Terraria a été développé avec XNA par exemple, FEZ et Armed! avec monogame).