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 :

Besoin d'aide pour un futur projet


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut Besoin d'aide pour un futur projet
    Bonjour à tous,

    Voilà quelques mois que j'ai appris à programmer en C et C++. J'ai fait quelques petits jeux, et un début de jeu d'aventure. Mais maintenant j'ai envie de m'attaquer à plus gros, je veux faire un STR en 2D, de A à Z, avec pour but ultime que j'atteindrais surement jamais, d'avoir la qualité technique de starcraft.

    Je sais que c'est dur, que ça va prendre du temps (surtout que je le ferai seul), mais mon but c'est pas de faire le jeu, mais de réussir à le faire. Comme je sais que c'est pas de la tarte à faire, je veux bien me préparer avant, et envisager toutes les possiblités, et tous les outils qui me seront nécéssaires.


    Après cette petite introduction sur ma vie, voici les question :

    - Je ne comprends pas bien le système des templates. J'ai beau avoir lu plusieurs fois, plusieurs tutos différents, il y a toujours des points sombres pour moi :
    • Pourquoi déclarer plusieurs types de templates? Vu que ça peut prendre tous les types possibles.
    • On doit redéclarer le type de template pour chaque fonction?
    • Ça sert à quoi les classes templates? Comment s'en sert-t-on?
    • Que veut dire ce code? :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      template <class U, class V, template <class T> class C=Tableau>
      class Dictionnaire
      {
          C<U> Clef;
          C<V> Valeur;
          // Reste de la définition de la classe Dictionnaire.
      };
      Quelque chose de générique qui fait quelque chose avec un autre truc générique? C'est pas clair du tout.
    • Je crois que c'est tout pour les templates...


    - Je veux faire une architechture solide pour mon jeu (pas comme mes projets précédents qui étaient faits au feeling), donc j'ai lu le tuto pour l'architecture d'un jeu 3D (Lien) Mais, même après l'avoir lu plein de fois, j'ai plusieurs question :
    • Est-ce applicable à un jeu 2D? Ou il faut quelques modifications?
    • Je comprends pas bien comment séparer certaines chose : comment sépare-t-on le module graphique, du module de jeu? Car les classes représentant les unités, les batiments, auront leur fonction "afficher()", qui sera donc dans le module de jeu si j'ai bien compris le tuto.
    • Je comprends pas bien comment on utilise le système d'envoi de message entre les modules, et comment on traite les messages reçus (d'ailleurs, je crois que résoudre ce problème résoudrait celui d'en haut).
    • La GUI, c'est le panneau de controle des unités, le menu, tout ça...? J'ai entendu parler de plusieurs trucs sympa pour ça, genre Qt, ou GTK+, ça sert bien à ça?
    • Est-ce que le réseau est obligatoire dans un premier temps? Ou mieux vaut faire ça à la fin, quand presque tout sera en place?
    • Je compte utiliser la SFML pour gérer les graphismes, le son, le réseau, et tout ce que ça gère. Est-ce un bon choix?


    - Vous avez des conseils à me donner (à part toutes les réponses que vous m'apporterez ) avant de me lancer?


    Merci à tous ceux qui me répondront, j'aurai surement plein d'autres questions à poser d'ici que je termine le jeu

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je crois que tu te prends la tête pour rien avec les templates. Reviens-y lorsque tu en auras besoin et quand tu auras lu un bon tutoriel dessus (c'est pas ça qui manque).
    Pour répondre à tes questions il faudrait expliquer pas mal de choses, et les tutoriels / cours / bouquins le feront certainement mieux

    Est-ce applicable à un jeu 2D? Ou il faut quelques modifications?
    Bien sûr, 2D et 3D ne sont pas si différentes dans le fond.

    Je comprends pas bien comment séparer certaines chose : comment sépare-t-on le module graphique, du module de jeu? Car les classes représentant les unités, les batiments, auront leur fonction "afficher()", qui sera donc dans le module de jeu si j'ai bien compris le tuto.
    Typiquement, le moteur graphique fournit des briques de base que le jeu devra utiliser pour afficher ses éléments. Donc par exemple une classe abstraite possédant une virtuelle afficher(), que les dérivées (unités, batiments, ...) implémenteront à leur manière.

    La GUI, c'est le panneau de controle des unités, le menu, tout ça...? J'ai entendu parler de plusieurs trucs sympa pour ça, genre Qt, ou GTK+, ça sert bien à ça?
    Oui, sauf que Qt, GTK+ et compagnie servent à créer des interfaces graphiques au sein de ton OS, or toi tu voudras créer une interface graphique en 2D à l'intérieur de ta fenêtre de jeu. Donc il faut que tu utilises une bibliothèque prévue pour ça (CEGUI par exemple).

    Est-ce que le réseau est obligatoire dans un premier temps? Ou mieux vaut faire ça à la fin, quand presque tout sera en place?
    Essaye de le faire à la fin. Si tu prévois suffisamment bien ton architecture ça ne devrait pas nécessiter de beaucoup changer le code existant.

    Je compte utiliser la SFML pour gérer les graphismes, le son, le réseau, et tout ce que ça gère. Est-ce un bon choix?
    Bien sûr, excellent choix
    Par contre n'oublie pas que c'est une bibliothèque toute jeune et qui n'a encore jamais été utilisée dans un projet d'envergure.

  3. #3
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    Je crois que tu te prends la tête pour rien avec les templates. Reviens-y lorsque tu en auras besoin et quand tu auras lu un bon tutoriel dessus (c'est pas ça qui manque).
    Pour répondre à tes questions il faudrait expliquer pas mal de choses, et les tutoriels / cours / bouquins le feront certainement mieux
    Ben pour les templates, c'est un gros morceau du C++ quand même, et si ça peut m'aider à faire quelques trucs, vaut mieux que je sache l'utiliser. En plus, j'ai vu pas mal de trucs utilisant les templates, et donc que je ne comprends pas . Mais Bon, je verrai ça plus tard.


    Citation Envoyé par Laurent Gomila Voir le message
    Typiquement, le moteur graphique fournit des briques de base que le jeu devra utiliser pour afficher ses éléments. Donc par exemple une classe abstraite possédant une virtuelle afficher(), que les dérivées (unités, batiments, ...) implémenteront à leur manière.
    Ah, mais après je fais comment pour les afficher à chaque frame?


    Citation Envoyé par Laurent Gomila Voir le message
    Oui, sauf que Qt, GTK+ et compagnie servent à créer des interfaces graphiques au sein de ton OS, or toi tu voudras créer une interface graphique en 2D à l'intérieur de ta fenêtre de jeu. Donc il faut que tu utilises une bibliothèque prévue pour ça (CEGUI par exemple).
    Ok, j'irai voir ça


    Citation Envoyé par Laurent Gomila Voir le message
    Essaye de le faire à la fin. Si tu prévois suffisamment bien ton architecture ça ne devrait pas nécessiter de beaucoup changer le code existant.
    Ok.


    Citation Envoyé par Laurent Gomila Voir le message
    Bien sûr, excellent choix
    Par contre n'oublie pas que c'est une bibliothèque toute jeune et qui n'a encore jamais été utilisée dans un projet d'envergure.
    Oui, mais justement, si je peux apporter ma contribution à son developpement, c'est encore mieux

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ben pour les templates, c'est un gros morceau du C++ quand même, et si ça peut m'aider à faire quelques trucs, vaut mieux que je sache l'utiliser. En plus, j'ai vu pas mal de trucs utilisant les templates, et donc que je ne comprends pas . Mais Bon, je verrai ça plus tard.
    Dans ce cas je te conseille de prendre un bon bouquin, il y en a de très bons qui ne traitent que des templates. Tu peux jeter un oeil à la page livres C++ pour en trouver.

    Oui, mais justement, si je peux apporter ma contribution à son developpement, c'est encore mieux
    Tout à fait

  5. #5
    screetch
    Invité(e)
    Par défaut
    Je ne suis pas d'accord sur le reseau. La plupart des gens pensent qu'un jeu solo est differend d'un jeu multiplayer en reseau avec 1 seul joueur.

    Je pense au contraire que tu devrais t'interesser au reseau tout de suite. "Commencer par" faire le reseau avant de faire le jeu lui meme.

    Si tu n'arrives pas a le concevoir de cetet facon, imagine la prise de tete pour changer une appli sans reseau pour creer une appli avec reseau!


    Les questions a se poser sur le reseau :
    - comment vais-je synchroniser le serveur et le client ?
    - qui va executer cette partie de code ?

    par exemple, lorsque tu cliques, que se passe t'il ?
    - tu envoies le clic au serveur, celui-ci te renvoie le mouvement (cas plutot adapte au FPS)
    - tu prends en compte le clic, fais le calcul localement (pathfinding...) et envoie le resultat au serveur qui va effectuer le deplacement et t'informer de la position (cas typique des RTS)
    - tu gardes tout sur le client et informe le serveur de tes positions ?

    Resoudre ces problemes revient a faire un choix d'architecture importante, il vaut mieux y reflechir des le debut!

    Un jeu a un joueur est un jeu multijoueur, et l'inverse n'est pas vrai, donc si tu es certain que tu vas un jour jouer en reseau, concois le tout de suite comme ca.

  6. #6
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Ben arriver à faire le moteur de jeu, ça sera déjà bien

    Ensuite pour le reseau c'est une autre histoire

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    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 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    Je crois que tu te prends la tête pour rien avec les templates. Reviens-y lorsque tu en auras besoin et quand tu auras lu un bon tutoriel dessus (c'est pas ça qui manque).
    .
    Pas mieux et Bogoss91 je te conseille de faire quelque chose le plus simple possible mais structuré.
    Après à toi d'améliorer les choses

  8. #8
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Ben justement là c'est sur la structure (qui est quasiment la même pour tous les jeux normalement) que je veux avoir des renseignements.

    Donc grand ou petit jeu, ça reviens au même

  9. #9
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Bon moi il y a toujours des trucs que je comprends pas :

    - J'ai compris comment on fait pour lire et traiter les évènnements, mais comment on fait pour en evoyer? Faut créer une instance de la classe engine_event et l'envoyer ensuite?

    - Pour afficher ce qu'il y à afficher (à part la GUI) : le moteur graphique doit aller chercher la liste des unités, batiments (etc.) à afficher, puis utiliser leur fonction pour les afficher à chaque frame?

    Merci de répondre à ces questions

  10. #10
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Pour afficher ce qu'il y à afficher (à part la GUI) : le moteur graphique doit aller chercher la liste des unités, batiments (etc.) à afficher, puis utiliser leur fonction pour les afficher à chaque frame?
    Je suis pas un expert, mais il me semble que c'est ça oui. Après, toute la difficulté se trouve dans un petit bout de ta phrase "la liste ... à afficher"
    En 2D, tu peux utiliser des QuadTrees par exemple.

  11. #11
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Un quadtree? C'est bien le truc qui décompose une image? Parce que je vois pas bien à quoi ça pourrai me servir...

    Moi je pensais plutôt à un vector ou une list (d'ailleurs je vois pas très bien la différence entre les deux) contenant toutes les unités et batiments sur le terrain, et le moteur graphique n'aurait qu'a utiliser une boucle pour tous les afficher.

    Sinon pour ma question pour l'engine_event, j'ai compris tout seul en lisant a fond le code source.

  12. #12
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Citation Envoyé par bogoss91
    Un quadtree? C'est bien le truc qui décompose une image?
    On peut faire ça oui, mais ça sert pas qu'à ça. Un QuadTree est un arbre quaternaire qui divise récursivement l'espace.
    Un bon petit article qui explique bien les bases des QuadTree:
    http://www.gamedev.net/reference/art...rticle1303.asp

    Et la différence entre un vecteur et une liste liée est qu'un vecteur est une structure de donnée abstraite et peut être implémenté via une liste liée ou un tableau.
    Mais certains, lorsqu'ils parlent de vecteur, ils parlent d'un tableau à 1 dimension.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 96
    Points : 137
    Points
    137
    Par défaut
    salut

    un quad tree c'est en gros une grille de carrés avec des cases de différentes tailles avec toujours un rapport puissance 2 entre elles

    ça sert à la même chose que les grilles uniformes sauf que c'est moins lourd en ram, on s'en sert pour les espaces tres grands


    la règle de base de conctruction est "en arbre": je coupe l'espace en 4 grandes cases, puis récursion sur les 4 cases, etc
    google is your friend

  14. #14
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Ah ok, mais je vois pas trop en quoi ça pourrai m'être utile pour afficher les unités

  15. #15
    Membre confirmé Avatar de LapinGarou
    Homme Profil pro
    R&D Developer
    Inscrit en
    Octobre 2005
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : R&D Developer
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 341
    Points : 479
    Points
    479
    Par défaut
    On pourrait dire que ça sert à hiérarchiser ton terrain par exemple, en n'affichant que ce sur quoi ta caméra (et donc le frustrum) pointe. Mais bon, ça me semble un peu trop poussé pour commencer. A force de chercher à architecturer parfaitement, tu n'auras pas beaucoup codé, et le jour où tu t'apercevras que ça ne va, faudra recommencer.

    Fait toi déjà une version de base de ton jeu, après tu pourras toujours l'améliorer une fois que tu maitriseras ton sujet.

    Par exemple: déjà coder une classe abstraite CTerrain, avec les fonctions(chargement de la map, etc) et membres qui vont avec (dimensions, etc), et en dériver ta classe de test pour l'affichage CTest. Ce qui te répercuter tes modifications vers le bas, et lorsque tu maitrisera bien, tu pourras te lancer dans les autres méthodes d'affichage (QuadTrees, cellules hexagonales, et que sais je encore). Pareil pour l'IA.

  16. #16
    Membre actif Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Points : 245
    Points
    245
    Par défaut
    Je veux faire un STR en 2D, de A à Z, avec pour but ultime que j'atteindrais surement jamais, d'avoir la qualité technique de starcraft.
    Donc si j'ai bien compris, ce sera de l'isométrique ? Ou alors du faux 3D ?

    Parce que la on parle on parle, mais les grahismes d'unités en vue isométrique ne se trouvent pas comme ça... Tu sais dessiner sous un logiciel de création graphique ? Il te faudra en plus des batiments, du terrain ( ça ça va, tu peux utiliser des textures )...

  17. #17
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par ironzorg Voir le message
    Donc si j'ai bien compris, ce sera de l'isométrique ? Ou alors du faux 3D ?

    Parce que la on parle on parle, mais les grahismes d'unités en vue isométrique ne se trouvent pas comme ça... Tu sais dessiner sous un logiciel de création graphique ? Il te faudra en plus des batiments, du terrain ( ça ça va, tu peux utiliser des textures )...
    Ben starcraft c'est du 2D avec des sprites non?

    Et pour les images je verrai plus tard. Je suis très mauvais en tout ce qui concerne le graphisme, mais pour les tests d'affichage, des rectangles ça suffit Puis, quand (si) le projet sera abouti, j'essaierai de "recruter" un graphiste.

  18. #18
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Toujours dans le cadre de mon futur projet, j'ai une autre question :
    - Pourquoi dans les jeux de stratégie 2D comme starcraft ou AoE, les tuiles sont-elles inclinées? Qu'est-ce que ça apporte par rapport aux tuiles droites?

  19. #19
    Membre habitué Avatar de Polyfructol
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Avril 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Avril 2007
    Messages : 131
    Points : 157
    Points
    157
    Par défaut
    Citation Envoyé par bogoss91
    Qu'est-ce que ça apporte par rapport aux tuiles droites?
    Ca apporte tout simplement un effet de perspective, la perspective isométrique, donc plus de réalisme aux jeux, ce n'est plus "plat" (cette technique est infaisable avec des tuiles droites si tu veux savoir). T'as bien dû sentir la différence si tu as expérimenté les 2 types de jeux.

    D'ailleurs, à l'époque en 2D, cette "vue isométrique" c'est conservée dans certain jeux de rôles 3D (Hack'n'slash plutôt), comme Titan Quest par exemple.

    Il y a de bonnes ressources sur cette technique dans les articles de gamedev (Isometric and Tile-based Games). Et je te conseille de jeter un oeil à FIFE, un fallout-like engine.

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 96
    Points : 137
    Points
    137
    Par défaut
    je sais pas si c'est la peine de t'embêter avec un quad tree

    c'est utile si tu as vraiment des cartes géantes qui posent un problème au niveau de la ram, mais sinon une grille simple est suffisante
    google is your friend

Discussions similaires

  1. Besoin d'aide pour un gros projet
    Par aouchachacha dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 05/06/2008, 16h08
  2. besoin d'aide pour mon future site
    Par vulquin dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 11/06/2006, 20h33
  3. Besoin d'aide pour trouver un projet
    Par ptitJP dans le forum C++
    Réponses: 22
    Dernier message: 26/02/2005, 23h14

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