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 :

[C/C++] Creer moteur jeu 2D générique avec lib graphique


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut [C/C++] Creer moteur jeu 2D générique avec lib graphique
    Bonjour,

    Je voudrais créer mon propre moteur de jeu 2D (pas 3D trop compliqué pour l'instant je n'ai pas les bases) à l'aide d'une librairie graphique (Allegro ou SDL).
    J'ai déjà créé un moteur de jeu mais un peu n'importe comment car je ne savais pas comment m'y prendre.

    Je cherche donc des livres (en français de préférence j'ai un mauvais anglais) ou des ressources internet expliquant comment créer pas un pas un vrai moteur 2D générique.

    J'ai bien sur une bonne maitrise du C/C++ (et d'autres langages plus haut niveau), je n'aurais pas la barrière du langage au moins

    Par contre, niveau pattern c'est pas encore ca et je crois que pour un moteur de jeu il faut connaitre certains pattern comme le singleton, observer et un autre...
    Et justement, j'aimerais apprendre cela à travers des livres.

    J'ai trouvé ce livre sur dvp :
    http://jeux.developpez.com/livres/#L2744018309

    Je ne sais pas ce qu'il vaut mais il m'a l'air trop simpliste et les critiques ne sont pas très bonnes.

    Merci à tous, j'espère que vous pourrez m'aider à trouver mon bonheur
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Par défaut
    Salut salut!!

    Citation Envoyé par Aspic Voir le message
    (Allegro ou SDL).
    Laisse moi te conseiller SFML, même si tu ne connais pas tu verras c'est vraiment pas mal. Je connais pas allegro, mais comparé a SDL c'est juste 10 fois mieux.

    Citation Envoyé par Aspic Voir le message
    Je ne sais pas ce qu'il vaut mais il m'a l'air trop simpliste et les critiques ne sont pas très bonnes.
    Je pense pas qu'il existe de manuel qui t’apprendra a créer ton jeu. Tout du moins j'en ai jamais trouvé, j'ai jamais trouvé de site ou d'article non plus, par contre y'a pas mal de ressources qui peuvent t'aider à réfléchir aux différents problèmes que tu peux rencontrer (collision, reseau, evenement, script ect...)

    T'es déjà au courant qu'il faut utiliser des pattern, mois je savais pas quand j'ai commencé alors forcement ça ressemblait pas a grand chose xD.

    C'est ptet un mauvais conseil, certains diront ptet qu'il faut pas faire comme ça, mais lance toi, commence par réfléchir a la structure d'objet que tu veux (comment gérer les ressources? comment gérer les événements?) puis développe, si tu bloque, tu cherche une solution et si ça coince encore hésite pas à modifier ce que t'as déjà fait.

    Bref, je pense pas que y'ai de recette miracle pour un moteur de jeu, surtout que ça dépend du type de jeu que tu souhaite développer.

  3. #3
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 399
    Par défaut
    Citation Envoyé par Aspic Voir le message
    un vrai moteur 2D générique.
    déjà générique, c'est impossible, tu programmes quelque chose pour répondre à un besoin en particulier.

    il faut commencer par un truc simple, et définir que que tu veux que ton moteur puisses faire. selon l'axe que tu souhaites les technos peuvent très bien changer du tout au tout.

  4. #4
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    SFML je ne connais pas, apparemment ca ne fait que de la 2D ?
    Allegro est une bibliothèque très peu connue mais qui est très puissante quand on sait s'en servir et en plus elle gère aussi la 3D (bon ca ne vaut pas OpenGL et cie ^^) mais pour du 2D elle est mieux que la SDL d'après moi (chacun a son opinion sur la question).

    Ok je me disais bien qu'un moteur générique ca ne pouvait pas exister, je pense néanmoins que le Core (pour la gestion du joystick, clavier, son, technique de bufferisation...) peut être générique puisque pour tout jeux qui se respectent, ces classes existent

    Maintenant je suis entrain d'apprendre les pattern les plus connus (Factory, Décorateur, Observateur et Singleton) mais de là à les appliquer pour mon moteur de jeu, y'a du boulot !

    Partons juste sur la création d'un Core de jeu permettant de gérer les entrées/sorties (joystick, clavier, souris), le son, la bufferisation (double buffer, triple buffer, page flipping), la gestion du temps d'execution du jeu (fps) et tout ce qui est commun à 99% des jeux ^^

    Si vous avez des pistes pour m'aider à démarrer en me disant par exemple qu'il faut utiliser le pattern Factory pour la gestion du joystick (je dis certainement une bêtisé ) je suis preneur car me lancer tête baissée, j'ai peur de partir dès le début sur une fausse piste

    Merci !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Inactif
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Partons juste sur la création d'un Core de jeu permettant de gérer les entrées/sorties (joystick, clavier, souris), le son, la bufferisation (double buffer, triple buffer, page flipping), la gestion du temps d'execution du jeu (fps) et tout ce qui est commun à 99% des jeux ^^
    Ta demande est mieux formulée comme ça.

    un "moteur générique" c'est un vieux rêve qu'on a souvent eu mais c'est impossible... chaque type de jeu se programme de façon très différente

    Ce que tu cherches à faire ça s'appelle un "framework", c'est à dire une ou plusieurs libs et éventuellement un patron d'entrée, qui reproduisent un environnement de développement équivalent à celui d'une console de jeu (en gros ça t'émule la carte vidéo, la carte son, etc)

    il me semble que ça existe déjà... les libs comme sdl / allegro ne gèrent pas déjà tout ça ?

    il me semble que pour faire des jeux style vieille console ("tile-based") allegro marche très bien

    sfml et sdl c'est pour des jeux 2d plus type micro avec un affichage d'images libre



    sinon faut aussi voir quelles machines tu vise. si c'est pour des micro tu peux faire un peu ce que tu veux (le gâchis de perf n'est plus un problème de nos jours),
    par contre si tu vises les smartphone, méfiance avec ces librairies gratuites, car côté optimisation ça laisse parfois à désirer... il vaut mieux coder from scratch


    Par contre, niveau pattern c'est pas encore ca et je crois que pour un moteur de jeu il faut connaitre certains pattern comme le singleton, observer et un autre...
    pour faire des jeux simples à l'ancienne tu n'as pas besoin de t'embêter avec des pattern, ni même avec des classes... une bête procédure en C ça marche très bien

  6. #6
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Oui c'est une sorte de framework mais Allegro et SDL ne sont que des outils, ca ne fait pas ce que je veux faire.

    Faire du procédurale NON ! Je suis contre, même si c'est pas un gros truc, j'aime développer et respecter le principe de la POO car je la trouve très flexible et modulaire

    Mais la n'est pas le problème.
    Je voudrais aussi appliquer ce que j'ai appris en matière de pattern sur ce projet car je sais qu'un moteur de jeu utilise des pattern.

    Par exemple, imaginons une classe Object et des sous classes Coeur, Rubis, Fleche, Bombe, herbe, rocher, bloc...
    Je me demande si on ne pourrait pas utiliser le pattern Factory sur la classe Object ? Voire aussi un pattern Decorateur sur les sous classes car certain objets sont collectables, destructibles, soulevables, poussables...
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Par défaut
    Moi c'est comme ça que je fait en tout cas.

    J'ai une classe (singleton) Game qui contient des Scene dont je peut activer ou non l'affichage/la mise a jour/l’écoute d’événement.

    Chaque Scene est une fabrique d'Object (et un "conteneur" d'Object) dont les sous type peuvent être Interface, Button, GameObject, Player, Enemy ect...

    A chaque Object je peut associer des ressources (gérés par des singletons type ImageManager) qui seront utilisés en fonction du type de l'objet.

    Après c'est a toi d'imaginer la structure que tu trouve la mieux en fonction de ta façon de développer.

  8. #8
    Inactif
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Par défaut
    le singleton ça sert à faire du procédural avec un langage objet

    à part ça

    voilà de la documentation: http://en.wikipedia.org/wiki/List_of...ce_video_games

    en 2000 y'a des grosses boites qui faisaient toujours leurs jeux en C/asm

    l'utilisation du c++ n'est apparue dans les jeux vidéo qu'à partir de l'époque où la notion d'objet servait à quelque chose. l'objet ça sert à faire abstraction de la mécanique profonde du programme, pour pouvoir appréhender la programmation avec une optique plus proche de la logique humaine. il a fallu attendre de pouvoir se payer ce luxe dans les jv avant d'en tirer une utilité

    avant l'apparition de la 3d tous les jeux consoles étaient programmés en assembleur... du procédural pur donc

    l'objet c'est bien si son emploi est justifié. ça devient intéressant quand tu commences à avoir une grosse arborescence de trucs, genre gestion de l'intelligence artificielle, de plein de comportements différents

    mais si tu veux faire des jeux à l'ancienne genre plateforme ou shoot'em up, l'objet ne t'es d'aucune utilité, ça complique la vie pour rien

    les principales questions que se pose un dev de jv c'est comment gérer les formules de maths, la ram, etc

Discussions similaires

  1. [Projet en cours] Projet jeu plateforme 2d avec moteur physique ?
    Par airman4 dans le forum Projets
    Réponses: 40
    Dernier message: 24/08/2011, 03h49
  2. Lag durant un jeu en C avec lib allegro
    Par Galere05 dans le forum C
    Réponses: 7
    Dernier message: 25/05/2010, 08h38
  3. Moteur de jeu 3D isométrique avec tiles
    Par Shabla dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 16/05/2007, 00h35
  4. Comment faire un jeu en réseau avec J2ME ?
    Par Yakurena dans le forum Java ME
    Réponses: 1
    Dernier message: 27/03/2006, 19h09
  5. Réponses: 19
    Dernier message: 24/05/2002, 16h36

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