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

  1. #1
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut Est-ce que le diagramme de mes classes C++ et mes blueprints Unreal Engine est optimal pour un city builder ?
    Bonjour,

    Nom : dbc197f32a7f3f1cdcdfebbb4ee833ef694c0816.jpeg
Affichages : 596
Taille : 71,4 Ko

    Mon projet est un city builder sur Unreal Engine 5 (c++ et blueprints)

    Les rectangles rouges sont des classes c++. Les blancs sont des Blueprints. Les flèches rouges sont #include . Les flèches bleues sont l'héritage (classe c++ -> Blueprint). Les flèches noires sont des références de classes de Blueprint.

    MyNodeClass, MySegmentClass et InfrastructureGraphManagerClass sont utilisés pour définir et mettre à jour le graphe du réseau routier.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AMySegmentClass* AInfrastructureGraphManager::ConnectNodes(AMyNodeClass * Nod1, AMyNodeClass * Nod2, SegmentType SegType, bool IsCurv)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FSubdividedSegment AInfrastructureGraphManager::SubdivideSegment(AMySegmentClass * Segment, FVector NewNodeLocation)
    DrawPreviewInfrastructure_BP permet de prévisualiser le réseau routier avant de le valider.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DrawStraightSegment()
    DrawTangentSegment()
    DrawTangentSegmentsAndCurve()
    SnapMouseOnExistingNode()
    DrawInfrastructure_BP permet de dessiner le réseau routier après validation de l'aperçu.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DrawSegmentAndTwoNodes()
    DrawSegmentAndTwoNodesFromColinear()
    SplitStraightSegmentForCrossroads()
    ConvertTurnNodeToCrossroads()
    Spline_BP contient des composants spline et un procedural mesh (qui est utilisé pour les jonctions procédurales). Chaque instance de Spline_BP est stockée dans le tableau SplinesArray à l'intérieur de DrawInfrastructure_BP. Chaque index de ce tableau est stocké dans la variable MySegmentClass->SplinesArrayIndex.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AttachMeshes()
    UpdateSplineComponents()
    ZonesBlock_BP est utilisé pour stocker les données des zones du bâtiment. L'une de ses variables est un tableau 2D de structures Zones.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Update()
    Draw()
    Erase()
    SetConvexHull()
    ZonesManager_BP permet de gérer les ZonesBlock_BP en fonction du réseau routier.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SpawnZBsAroundSubSpline()
    SetZonesPoints()
    UpdateZBsConvexHull()
    SpawnZBsAroundSegment()
    Comme vous le savez peut-être, CityBuilderPlayerController_BP est utilisé pour appeler les fonctions que nous voulons en fonction des événements de souris/clavier.

    Est-il nécessaire s'il vous plaît d'optimiser ce diagramme? Et si oui, comment ?

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 141
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    À première vue, je dirai que le graphe à trop d'interdépendance (trop de flèche). Mais, je ne suis pas certain que ce soit une bonne façon de procéder pour donner un jugement.
    En développement, on donne souvent la règle de responsabilité unique. Si chaque classe/blueprint, fait une chose, alors c'est bon signe. Et on pourra regarder du côté de SOLID. Mais...
    revenons sur la réalité. Vous ne faites pas de la programmation "classique", vous faites de la programmation de jeux vidéo, dans Unreal Engine, avec les blueprints. Par conséquent, je partirai sur une autre réflexion :
    • remarquez vous des problèmes de performances si vous affichez 100, 1000 ou 10000 objets utilisant votre code ;
    • avez vous des difficultés à avancer dans votre jeu, car le code n'est pas facile à utiliser, ou pas facile à mettre à jour.

    C'est en répondant à ces deux questions que vous pourrez savoir si cela est nécessaire d'améliorer le code, ou si vous pouvez le laisser tel quel et continuez à programmer votre jeu.

    Car en réalité, si on passe son temps à faire un code tip-top, en respectant tous les merveilleux principes que l'on peut trouver sur Internet, alors le jeu ne se fait jamais.
    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.

  3. #3
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    Merci LittleWhite,

    En effet il faut trouver un compromis entre le respect des bonnes pratiques (conventions de nommage, diagramme de classes etc) et productivité

Discussions similaires

  1. Unreal Engine 4 – Tutoriels pour débutants - Classe de blueprint
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 31/07/2016, 17h51
  2. Est ce que ce diagramme de classe est juste
    Par dark_angel91 dans le forum UML
    Réponses: 2
    Dernier message: 24/06/2011, 13h08
  3. Réponses: 0
    Dernier message: 04/02/2010, 22h21
  4. Est ce que MySQL repondra a mes attentes?
    Par lg022 dans le forum Installation
    Réponses: 5
    Dernier message: 10/04/2008, 16h03
  5. Réponses: 15
    Dernier message: 25/07/2007, 12h38

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