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 :

Code et Architecture, vos conseils / votre avis.


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 80
    Points : 30
    Points
    30
    Par défaut Code et Architecture, vos conseils / votre avis.
    Bonjour à tous,

    Je me suis remis à programmer depuis hier, afin de partir sur de bonne bases, j'ai décidé de refaire entièrement le code de mon petit projet.

    Mes principaux problèmes rencontrés pour le moment viennent de l'organisation de celui-ci.

    J'ai donc lu les tutoriels sur l'architecture d'un jeu-vidéo 3D, même si le mien est en 2D, et j'ai regarder le code source de différents projets Open source.
    Je souhaite d'ailleur rendre le projet Open source, c'est pourquoi j'essai d'obtenir un code lisible et le plus simple possible.


    Explications :

    J'aimerais donc avoir votre avis quand à la lisibilité du code et plus spécialement sur l'architecture du jeu, du moins les bases ( Architecture correct ? Classes au bonne endroit ? Bonne façon de faire, des erreurs ? Chose à améliorer ?, ... ).

    Le lien : Ici ( 651 Ko )


    Quelques informations :

    Langage : C++.
    Bibliothèque : SFML 1.1
    Compatible ( Théoriquement ): Window, Mac, Unix.
    Environnement développement : CodeBlock ( R.4807)

    L'archive comprend l'espace de travails ainsi que toutes les sources du projet.

    Au final le jeu ressemblera à cette démonstration que j'avais faite :
    Lien : Ici




    Merci à tous ce qui auront la gentillesse de regarder les sources et de laisser leur avis.
    Hybrix.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Personnellement je ne suis pas fan de tout couper en ouate mille répertoires avec 3 classes dans chaque...
    Surtout que là c'est un découpage largement artificiel et qui ne repose pas vraiment sur une organisation des dépendances. D'ailleurs y'a plein d'include avec des ../.. ce qui est quand même un peu louche (ou au mieux pénible à utiliser).
    Si vraiment tu veux découper il faut essayer d'isoler un bout qui ne dépend de rien d'autre (que des dépendances entrantes) à mon avis...

    Sinon ben c'est pas évident de faire une revue de code vu que y'a pas vraiment de code
    Juste quelques trucs :
    . en général on remet les virtual sur les destructeurs des classes dérivées pour éviter aux lecteurs de se poser la question (mais ce n'est techniquement pas une faute car si le destructeur de la classe de base est virtuel, c'est bon)
    . ça ne sert à rien de mettre un ; après les implémentations de méthodes (par exemple à la fin de la ligne du constructeur de Vector dans le .hpp ou encore le destructeur de PhysicListener dans le .hpp)
    . Object_list.hpp c'est bizarre, et ça va masquer les dépendances puisque tous ceux qui auront besoin d'un .hpp dedans vont les inclure tous
    . il vaut mieux respecter la casse quand on inclut un fichier (cf. bloc.hpp dans Object_list.hpp)
    . inclure iostream partout est une drôle d'idée...
    . il vaut mieux rendre les interfaces (classes virtuelles) pures non copiables, sinon on peut avoir des surprises

    Sur l'architecture générale, j'avoue que c'est pas ma tasse de thé d'avoir au centre un tas d'accesseurs sur une classe qui n'a pas d'autre rôle mais bon...
    De toute façon le design émerge à force de remaniements, donc je dirais lance-toi et tu verras bien

    MAT.

  3. #3
    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
    Au contraire de Mat007 j'aime découper au maximum mes sources par une bonne arborescence, mais comme lui cette arborescence doit avoir un comportement logique or la ... Sprite dans maths ? Game dans game et base ? Map dans game ? En fait je ne comprend pas trop ton decoupage.

    Ensuite tu utilises une facade pour ton "engine" ou tu charges tes differents modules, pourquoi pas, mais c'est pas tres bien structuré, et tes module comme phisique, devrait etre singleton.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 80
    Points : 30
    Points
    30
    Par défaut
    Je vous remercie d'avoir pris le temps de regarder les sources .

    Personnellement je ne suis pas fan de tout couper en ouate mille répertoires avec 3 classes dans chaque...
    Surtout que là c'est un découpage largement artificiel et qui ne repose pas vraiment sur une organisation des dépendances. D'ailleurs y'a plein d'include avec des ../.. ce qui est quand même un peu louche (ou au mieux pénible à utiliser).
    Si vraiment tu veux découper il faut essayer d'isoler un bout qui ne dépend de rien d'autre (que des dépendances entrantes) à mon avis...
    Personnellement, je préfère bien structurer mon programme, je trouve cela plus agréable. L'inclusion des fichiers ne me gène pas vraiment, ça ne sais fait pas énormément de fois.

    . en général on remet les virtual sur les destructeurs des classes dérivées pour éviter aux lecteurs de se poser la question (mais ce n'est techniquement pas une faute car si le destructeur de la classe de base est virtuel, c'est bon)
    Merci pour le conseil, je ne le savais pas, j'ai donc rajouté les "virtual" aux destructeurs.

    ça ne sert à rien de mettre un ; après les implémentations de méthodes (par exemple à la fin de la ligne du constructeur de Vector dans le .hpp ou encore le destructeur de PhysicListener dans le .hpp)
    La encore, je n'avais jamais fait attention à ce détail, merci je me coucherais moins bête .


    Object_list.hpp c'est bizarre, et ça va masquer les dépendances puisque tous ceux qui auront besoin d'un .hpp dedans vont les inclure tous
    J'avais un problème d'inclusion de fichiers ( Ici ), je n'ai pas trouvé de solutions adaptés mieux que celle-ci.


    il vaut mieux respecter la casse quand on inclut un fichier (cf. bloc.hpp dans Object_list.hpp)
    Corrigé .


    inclure iostream partout est une drôle d'idée.
    Les copiés-collés c'est le mal :s, corrigé.


    il vaut mieux rendre les interfaces (classes virtuelles) pures non copiables, sinon on peut avoir des surprises

    &&

    ... et tes module comme phisique, devrait etre singleton.
    J'ai ajouté un Singleton, merci pour le conseil.


    Ensuite tu utilises une facade pour ton "engine" ou tu charges tes differents modules, pourquoi pas, mais c'est pas tres bien structuré
    Jutilise la technique employé dans le tutoriel "Archticture d'un jeu-vidéo 3D", si il y a mieux je suis preneur .


    Merci beaucoup pour vos remarques, elles m'ont permis de corrigé des détails.
    Serait t-il possible d'avoir d'autre avis ???

    J'ai mis à jour les sources : Les sources ( 640.3 Ko )

    Merci encore.
    Hybrix

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 80
    Points : 30
    Points
    30
    Par défaut
    Pas d'autres avis ?

  6. #6
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 288
    Points
    7 288
    Par défaut
    Euh... Le lien vers les sources est mort?
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  7. #7
    Membre régulier Avatar de _FaFa_
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 103
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Hybrix Voir le message
    Je me suis remis à programmer depuis hier, afin de partir sur de bonne bases, j'ai décidé de refaire entièrement le code de mon petit projet.
    Tu as codés ça en une soirée ?
    Une demande imprécise finit toujours par une connerie bien précise.

  8. #8
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    refaire n'est pas faire.
    Le jeu était déjà codé (avec SDL si je ne me trompe pas).
    Il à juste porté le code de SDL à SFML.
    Et c'est assez rapide à faire si le jeu est bien conçus.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  9. #9
    Membre régulier Avatar de _FaFa_
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 103
    Points : 111
    Points
    111
    Par défaut
    Merci de ta précision Davidbrcz.

    Mais il est écrit "refaire entièrement le code" ce qui m'a induit en erreur vu que je ne connaissait pas le projet.
    Une demande imprécise finit toujours par une connerie bien précise.

  10. #10
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    C'est vrai que les source sont dead.
    Est il possible de les avoir ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

Discussions similaires

  1. Besoin de vos conseils votre expertise
    Par lililili dans le forum SAP
    Réponses: 3
    Dernier message: 11/08/2014, 11h29
  2. Qualité de Doxygen: vos conseils et avis
    Par lautrec1 dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 25/03/2011, 23h30
  3. Changement Machine CPD - Vos conseils et avis
    Par PatStan17 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 03/12/2009, 16h42
  4. Architecture n-tiers, votre avis ?
    Par bricecol dans le forum Général Java
    Réponses: 13
    Dernier message: 09/11/2009, 12h02
  5. Demande de vos conseils et avis, merci.
    Par Invité dans le forum Emploi
    Réponses: 2
    Dernier message: 02/12/2008, 09h35

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