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

SDL Discussion :

choix de bibliotheques


Sujet :

SDL

  1. #1
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut choix de bibliotheques
    bonjour,

    je suis en train de developper un jeu 2D en C++(enfin, pour le moment, j y reflechis plus qu autre choses) et je me demande quelles bibliotheques utiliser.

    j ai un bon niveau en c++ mais je connais trés peu les bibliotheques liées au jeu (j ai juste des bases en SDL, avec SDL_image, SDL_ttf et SDL_mixer)

    je code sous windows mais j espere pouvoir garder mon code le plus portable possible, pour le moment, j avais pensé utiliser SDL (mais c est pas forcement definitif)

    voici quelques questions que je me pose:

    SDL me semble suffisant pour l evenement, le son et le graphisme que je veux faire, mais a votre avis, est ce que ca vaut le coup pour de la 2D de m interesser a OpenGL? (basiquement la question est : quel sont les avantages de OGL sur SDL pour la 2D?)

    SDL ne gere pas le coté reseau ou est ce que je me trompe?
    si elle ne le gere pas, quelle librairy utiliser avec SDL?
    OGL le fait il?
    si non, quelle bibliotheque utiliser avec OGL?

    est ce que directX est interessant (j ai vu qu il gerait le reseau)? quitte a perte la portabilité du code...

    merci pour toutes les reponses que vous pourrez me donner...
    cordialement,
    Platypus51

    PS: bien sur, n importe quelle idée non directement liés aux questions sont les bienvenues...

  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 : 40
    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
    quel sont les avantages de OGL sur SDL pour la 2D?
    Plus performant, beaucoup plus flexible (alpha-blending, rotations, scaling, shaders, ...). Disons que ça peut avoir de l'importance sur de gros jeux ou si tu as des besoins particuliers.
    Dans tous les cas, fais une abstraction du système de rendu de façon à pouvoir changer l'API sous-jacent facilement si besoin.

    SDL ne gere pas le coté reseau ou est ce que je me trompe?
    si elle ne le gere pas, quelle librairy utiliser avec SDL?
    SDL_Net. Tu as aussi Rakknet, ou directement les sockets (c'est pas aussi dur qu'on le croit).

    OGL le fait il?
    OpenGL ne fait que de la 3D

    est ce que directX est interessant (j ai vu qu il gerait le reseau)? quitte a perte la portabilité du code...
    Dans ton cas, pas spécialement. DirectPlay, la composante réseau de DirectX, est devenue obsolète et Microsoft conseille d'utiliser directement les sockets en attendant leur prochaine API réseau.

  3. #3
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    merci beaucoup pour toutes ces reponses!

    que veux tu dire par "faire abstraction du systeme de rendu"?
    (je vois bien sur le principe mais pas le comment)

    y a t il des differences d utilisation des 2 librairies raiseaux que tu m as donné?
    (ou elle sont differentes mais on s utilisent sensiblement pour la meme chose?)

    sinon, je vais regarder pour les sockets....

    merci encore

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Bonjour,

    Tu rentres dans un troll dangereux.

    Certains diront que DirectX est la seule solution, d'autres diront qu'OpenGL est la seule voie vers la lumière...

    Bref, c'est difficile de trancher. Ce qui est sûr :

    SDL est pour le moment un peu plus lent qu'OpenGL même pour la 2D par contre, question prise en main c'est plus facile.

    SDL possède une bibliothèque extension SDL_Net qui n'est pas mal du tout.

    Je te conseille de commencer avec la SDL et après tenter SDL/OpenGL. Ensuite, si l'envie te prend, tente aussi DirectX, ce n'est qu'en testant chaque possibilité que tu te feras vraiment une idée...

    Jc

  5. #5
    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 : 40
    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
    que veux tu dire par "faire abstraction du systeme de rendu"?
    (je vois bien sur le principe mais pas le comment)
    C'est-à-dire confiner les fonctions de rendu dans une classe bien à part. De sorte que lorsque tu auras à changer de SDL vers OpenGL, tu auras une classe à réécrire, plutôt que modifier des centaines de lignes de codes éparpillées dans des dizaines de fichiers sources.

    y a t il des differences d utilisation des 2 librairies raiseaux que tu m as donné?
    (ou elle sont differentes mais on s utilisent sensiblement pour la meme chose?)
    SDL_Net reste assez bas niveau, c'est en gros une encapsulation portable des sockets.
    Rakknet est déjà plus un vrai moteur réseau, plus complexe mais offrant beaucoup plus de fonctionnalités avancées.

  6. #6
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    desolé pour le "raiseau"...
    je pense que je fais d autre fautes, mais celle la est particulierement moche et ressort pas mal....


    a ce propos, derniere petite question(ca n est plus le bon forum, mais c est la suite),
    comment recuperer OpenGL? j ai vu un header avec un nom du style dans la SDL, mais il me faut autre chose, j imagine (j ai vu qu il fallait un dll, ca pas de soucis, mais d autres header??)

  7. #7
    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 : 40
    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
    Les fichiers de développement d'OpenGL sont normalement livrés avec ton environnement (compilo / OS), tu n'as rien à faire.

    avec une petite explication sur cette histoire d'abstraction de rendu qui pourra me permettre de passer de l un a l autre par la suite...
    Exemple concret : lorsque tu veux afficher un sprite à l'écran, au lieu de faire directement SDL_Blit ou glBegin(GL_QUAD) ... glEnd(), tu feras DrawSprite(...). Comme ça le jour où tu changes de bibliothèque, tu n'as que DrawSprite à changer, au lieu de tous les endroits du code où tu aurais mis des SDL_Blit ou des glxxx.

  8. #8
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    merci a tous les deux pour ces aides (et la rapidité de vos reponses)

    moins de 30 minutes pour resoudre mon probleme, c est plutot pas mal

    je reposerai des questions quand le jeux avancera

    merci encore

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Laurent Gomila
    Exemple concret : lorsque tu veux afficher un sprite à l'écran, au lieu de faire directement SDL_Blit ou glBegin(GL_QUAD) ... glEnd(), tu feras DrawSprite(...). Comme ça le jour où tu changes de bibliothèque, tu n'as que DrawSprite à changer, au lieu de tous les endroits du code où tu aurais mis des SDL_Blit ou des glxxx.
    Voir même, attention, je chipotte, une fonction Renderer::addSprite() qui ajoute dans un premier temps dans une liste, et en suite une fonction Renderer::drawFrame() qui dessine le tout. Cela te permettra facilement par la suite de faire un tri sur les éléments à rendre, pour dessiner dans le bon ordre par exemple, ou bien pour minimiser les changements d'états (tu dessinera après tous les sprite avec la texture 1, puis tout ceux avec la texture 2, etc...)

  10. #10
    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 : 40
    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
    Oui, bien sûr... Mais ici on ne parlait que du principe, je ne pense pas que notre ami en soit déjà dans les détails techniques d'implémentation

  11. #11
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    j avais reflechit a un principe mais suite a la discution, je souhaite en changer mais je sais aps bien comment :

    a la base, j avais pensé :
    une classe graphic dont le but est d appeler l'affichage present dans chaque classe a afficher (basiquement les persos et le "plateau") et ensuite faire un flip_screen (j utilise SDL pour le moment)

    mais c est pas tres reutilisable par la suite (je souhaite suivre ton conseille d'abstraction d affichage)

    donc est ce qu il vaut mieux : garder ce principe en utilisant une classe (static?) gerant l'affichage (ca veut dire une classe gerant l appel de l affichage et une autre ajoutant les choses a afficher au buffer)...
    (ici en cas de changement de biblio : changement de la classe d affichage + le flip_screen de la classe graphic)

    ou alors faire en sorte que ma classe graphic gere tout l affichage (et ainsi ca sera celle la a re-implementer en cas de changement de librairy)
    en sachant que sur la seconde methode, je vois pas encore comment (mais j en suis pas la encore, c est juste que j aime me poser sur un probleme et definir pas mal de choses quitte a changer par la suite...)

    ou option 3 : autre chose

    ????

    PS :desole si on s egare, il faudrait peut ete changer de forum maintenant qu on parle de jeux plus que de SDL...
    PPS : desole aussi pour mon manque d accent mais clavier anglais... et c est assez long d'utiliser les commandes avec la touche "alt"...

  12. #12
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    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 386
    Points : 20 476
    Points
    20 476
    Par défaut
    Citation Envoyé par Laurent Gomila
    Dans ton cas, pas spécialement. DirectPlay, la composante réseau de DirectX, est devenue obsolète et Microsoft conseille d'utiliser directement les sockets en attendant leur prochaine API réseau.
    Tiens donc tu m'apprends quelque chose.
    As-tu une référence ?
    De toute façon comme tu dis programmer les sockets c'est bien plus simple et adapté que se trainer des GUID inutiles et obscures objets Dplay à créer

  13. #13
    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 : 40
    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
    On a une entrée dans la FAQ qui en parle :
    http://jeux.developpez.com/faq/direc...LITES_obsolete

    En faisant une recherche rapide dans la MSDN on peut trouver ce genre de choses :
    Citation Envoyé par MSDN
    Warning: Microsoft DirectPlay has been deprecated

  14. #14
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    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 386
    Points : 20 476
    Points
    20 476
    Par défaut
    bon eh bien je me coucherais moins idiot ce soir
    de toute façon je ne sais pas si c'était vraiment employé par les boites de jeux

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 100
    Points : 150
    Points
    150
    Par défaut
    Juste pour dire, on peut aussi faire un jeu "2D" en 3D (Neverwinter Nights par exemple). Tous les algorithmes fonctionnent sur un plan 2D (x, y), mais l'affichage se fait avec de la 3D (donc des modeles 3D, etc). Au final, les algos seront aussi simple, et l'affichage peut etre joli aussi. Apres, c plus le meme metier pour les artistes. Il faut des infographistes 2D pour les textures et des modeleurs + animateurs 3D.
    Pour du 2D pur, il ne faut que des infographistes 2D. Par contre c un travail colossal au niveau des animations car il faut dessiner le personnage a differentes position pour l'animation (en 3D c relativement plus simple cette partie )

    Comme dit plus haut, OpenGL ne fait que le graphisme.
    DirectX fait beaucoup plus de choses, mais il n'est pas portable.

    OpenGL = librairie graphique
    DirectX = moteur de jeu

    Pour ma part, je pense qu'on peut décomposer ces parties en 3 couches
    librairie graphique -> moteur 3D -> moteur de jeu.
    Donc DirectX est 2 couches d'abstraction au dessus d'OpenGL.

    La partie equivalente d'OpenGL en DirectX, c'est Direct3D qui ne s'occupe que de l'affichage 3D.

    Donc si tu veux un jeu a base d'OpenGL, il faudra te construire/assembler tout ce que te servira pour que ton jeu fonctionne. Ca te fera ton moteur de jeu perso. En te basant sur SDL, tu as deja pas mal de choses pour se rapprocher d'un moteur de jeu. Mais il faudrait utiliser OpenGL plutot que SDL de base pour l'affichage.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Qu'est-ce qu'il faut pas entendre... DirectX un moteur de Jeu... non, c'est juste un paquet de bibliothèques bas niveau, rien de plus... c'est pas parce qu'il y a 3 libs et 4 opérations mathématique que ça fait un moteur...

  17. #17
    Futur Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    je pense suivre un conseil enoncé un peu plus haut (gerer l affichage avec SDL pour le moment et passer sur OpenGL par la suite (meme si ca demande un peu plus de travail)), ca me permettra de prendre en main (au moins partiellement les 2 bibliotheques.

    DirectX est (en tous cas pour ce projet) abandonné, en fait, je me suis posé la question seulement a cause du reseau mais je pense utiliser SDL_net (de toutes facons mon projet n en est pas la...)

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par platypus51
    DirectX est (en tous cas pour ce projet) abandonné, en fait, je me suis posé la question seulement a cause du reseau mais je pense utiliser SDL_net (de toutes facons mon projet n en est pas la...)
    Il n'y a plus de réseau dans DirectX, DirectPlay est abandonné. Microsoft conseille d'utiliser winsocks pour le reseau en attendant une adaptation du Live

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 100
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par bibi.skuk
    Qu'est-ce qu'il faut pas entendre... DirectX un moteur de Jeu... non, c'est juste un paquet de bibliothèques bas niveau, rien de plus... c'est pas parce qu'il y a 3 libs et 4 opérations mathématique que ça fait un moteur...
    Toutes mes excuses, c'est ce que j'avais cru comprendre de plusieurs de mes lectures ^^ (je n'ai jamais fait de DirectX)

    [HS]Donc du coup, c'est quoi ? Une bibliotheque de jeu plutot qu'un moteur ? Et a partir de quand on peut dire qu'un ensemble de bibliotheques est un "moteur" ?[/HS]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/02/2011, 16h05
  2. Aide pour choix de Bibliotheque/Moteur de jeu
    Par Aucun_Pseudo_Libre dans le forum Débuter
    Réponses: 19
    Dernier message: 05/01/2009, 16h44
  3. choix de bibliotheque
    Par Emcy dans le forum wxWidgets
    Réponses: 4
    Dernier message: 04/12/2007, 11h26
  4. choix d'une bibliotheque
    Par warubi dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 15/01/2007, 08h50
  5. Choix d'un ORB
    Par Anonymous dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h15

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