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

Contribuez Discussion :

[Source][SDL] jeu type Zelda 3


Sujet :

Contribuez

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut [Source][SDL] jeu type Zelda 3
    Bonjour,
    Je voulais exposer aux critiques ma première création avec la lib SDL.
    C'est un jeu reprenant les graphismes du génial Zelda 3 sur SNES et dont le but est de sauver la princesse avant de mourir.

    Le projet est en visual C++ et utilise les lib : SDL, SDL_image et SDL_ttf et j'ai essayé de commenter les sources un maximum pour faciliter la comprehension du code.

    J'attends vos commentaires ainsi que des propositions pour optimiser le jeu car sur une "petite config" (le pentium 400 MHz / 128 de ram de mon bureau par exemple) ça rame pas mal...

    Je n'ai pas pu mettre la lib SDL dans le rar car il devenait alors trop gros donc vous pouvez la télécharger là :
    http://www.libsdl.org/release/SDL-1.2.11-win32.zip
    Il suffit ensuite de la dezipper et de la copier à coté de l'exe

    merci d'avance

    kor6k

    modification: j'ai du enlever les librairies du zip pour qu'il soit plus petit.
    il faut donc ajouter dans le répertoire du jeu: SDL.dll, SDL_image.dll et SDL_ttf.dll. vous pourrez trouver ces dll sur ce site: http://www.libsdl.org
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Je trouve ça très sympa.

    J'ai jeté un rapide coup d'oeil aux sources, ça a l'air pas mal du tout.

    Je regarderai plus précisement plus tard, je n'ai pas trop le temps.

    Mais une critique que j'ai à faire. C'est dans le fichier niveau.h, tu devrais essayer de créer un système de fichier Niveau et une classe niveau (par exemple avec une méthode Charger) qui te permetterait de charger directement le fichier en mémoire (qui prendrait en compte la position du héro, de la princesse, le nombre d'ennemi...).

    Je chipote, mais tu devrais essayer de séparer totalement la partie graphique du jeu (enfin, ce n'est pas forcement très important, mais ça rend mieux), notamment avec les informations sur la fenetre (qui est quelque chose qui au fond n'a pas de rapport avec les niveaux).


    Mais je trouve ça très bien Par contre, j'ai peur que tu puisses avoir des problèmes par la suite en utilisant les sprites de Zelda 3 étant donné que ces images ne sont pas libres de droit...
    Je ne répondrai à aucune question technique en privé

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut
    J'avais effectivement pensé à mettre les infos sur le niveau dans un fichier texte ce qui permettait de changer de niveau plus facilement mais je dois avouer que j'ai un peu eu la flemme...
    Mais rien n'empeche quelqu'un de reprendre mes sources et de les améliorer. J'espere meme que quelqu'un le fera.

    Pour la partie graphique, je suis aussi d'accord avec toi, c'est pas trés logique de la mettre dans Niveau.h mais au début, Niveau.h etait tres reduit mais il s'est étofé au fur et à mesure que j'ajoutait des choses (ennemis, portes...) et je n'ai pas pensé à enlever les infos concernant la fenêtre.

    Enfin, c'est vrai que les dessins de Zelda, c'est pas tres égal mais je suis (malheureusement) nul en dessin et je me suis dit que pour un jeu soit agreable, il faut que les graphismes le soient aussi...
    De toute facon, je ne compte pas le vendre donc je ne pense pas avoir de probleme...

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par millie
    Mais une critique que j'ai à faire. C'est dans le fichier niveau.h, tu devrais essayer de créer un système de fichier Niveau et une classe niveau (par exemple avec une méthode Charger) qui te permetterait de charger directement le fichier en mémoire (qui prendrait en compte la position du héro, de la princesse, le nombre d'ennemi...).

    Je chipote, mais tu devrais essayer de séparer totalement la partie graphique du jeu (enfin, ce n'est pas forcement très important, mais ça rend mieux), notamment avec les informations sur la fenetre (qui est quelque chose qui au fond n'a pas de rapport avec les niveaux).
    Un bon fillot, ça
    Je ne peux que dire +1 !
    Ne t'attend pas à ce que qqn le fasse, c'est compliqué quand on ne connait pas le code de l'autre. Il vaut mieux que tu le fasses, car les gens qui voudront travailler dessus verront un code plus propre et seront plus enclin à t'aider.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut
    C'est vrai que c'est assez désagréable de déchiffrer le code d'un autre...
    J'essaierai donc d'intégrer moi même ces fonctionnalitées dans la prochaine version:
    - une classe niveau qui le chargerait depuis un fichier texte.
    - un header spécifique pour les infos concernant la fenêtre.

    allez, au boulot !

  6. #6
    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 : 43
    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
    J'ai regardé un peu le code parce que cela ne tourne pas directement sous Linux (et oui je ne lacherais pas prise sur mon *nux).

    Donc, en modifiant un peu le code il fonctionne sous Linux correctement. Par contre, j'ai dû changer le prototype du main.

    J'ai changé quelques zones du code pour enlever les warnings "unused parameter" et j'ai mis tes tableaux de Niveaux.h en const.

    Finalement, j'ai mis un makefile simple pour la compilation.

    Bon boulot sauf qu'il faudrait changer les graphismes pour que cela soit une contribution à part entière. Fait un tour sur les ressources gratuites, tu trouveras sûrement ton bonheur,

    Jc

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut
    Merci pour la version linux !!!!!!
    Je vais voir les différences avec ma premiere version car je ne connais pas les differences... J'ai l'habitude (mauvaise) de coder de windows pour windows...

    Sinon, pour les ressources gratuites, c'est déjà en cours:
    je vais sur ce super site (http://reinerstileset.4players.de/englisch.htm) mais c'est assez galère pour convertir (avec photoshop) les images des décors en petits rectangles...
    Mais j'y travaille !!!!!

    kor6k

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il n'y a pas de différences, normalement, du moins dans les parties standards. S'il y a des modifications, c'est que tu ne respectais pas forcément le standard à la lettre. Autrement, c'est gestion du clavier, de l'écran, ... qui sont différents.

  9. #9
    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 : 43
    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
    Citation Envoyé par kor6k
    Merci pour la version linux !!!!!!
    Je vais voir les différences avec ma premiere version car je ne connais pas les differences... J'ai l'habitude (mauvaise) de coder de windows pour windows...
    Y a simplement des petits détails :

    - Tu faisais un include <windows.h> et tu utilisais WinMain
    -> J'ai enlevé ce include inutile et j'ai mis int main(int argc, char** argv)

    - Lorsque tu incluais un fichier tu utilisais le caractères '\' pour les répertoires. J'ai mis '/' qui marche pour les deux systèmes

    - Il y avait des warnings à enlever

    - Un makefile à faire

    - Sinon je n'ai pas regardé en détail le code donc je ne peux pas donner un jugement... Le jeu fonctionne, c'est déjà

    Jc

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut
    effectivement, il n'y avait pas grand chose à modifier...
    Maintenant, je le sais pour la prochaine fois !!!!!!
    merci

  11. #11
    mat.M
    Invité(e)
    Par défaut
    eh bien pour un petit jeu c'est pas mal je dis bravo et c'est moins prétentieux qu'autre chose.
    Continue sur cette lancée ; il faudrait un éditeur..

  12. #12
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    J'ai testé et regarder le code, c'est plutot bien fais

    Bravo

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut
    Je suis content que ça plaise !!!!
    En fait, c'est une deuxième version de ce jeu que j'ai fait; la première était en Director (pour ceux qui ne connaissent pas, c'est une sorte de Flash)
    J'ai voulu ensuite le faire en C++ et SDL m'a semblé être la lib la plus apropriée pour le faire. Mais comme je ne suis pas un expert de la claretée dans mes codes, j'avais un peu peur que ce soit mal fait ou très mal optimisé...
    Apparemment, ce n'est pas le cas et j'en suis ravi !!!
    Je suis en train maintenant de travailler sur une version avec des graphismes libres de droit, avec des niveaux chargés depuis un fichier.
    Je commence aussi une version en DirectX (dsl fearyourself, je ne pense pas que celle là marchera sous linux...).
    Des que ces nouvelles verion seront prètes, je les re-posterai.

    Kor6k

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par kor6k
    Je commence aussi une version en DirectX (dsl fearyourself, je ne pense pas que celle là marchera sous linux...).
    Des que ces nouvelles verion seront prètes, je les re-posterai.

    Kor6k
    Pourquoi DirectX ? Pour t'affranchir de la SDL ?

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut
    non, j'aime bien la simplicité de SDL mais je voulais essayer autre chose.
    Aussi, je ne sais pas trop comment faire pour mettre le jeu en plein eécran avec SDL.
    Si quelqu'un a une idée...

  16. #16
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Ce serait dommage de changer de bibliothèque juste à cause de ce problème (notamment car SDL permet de gérer cela).

    Lorsque tu initialises ta fenetre, il faut ajouter le flag : SDL_FULLSCREEN comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        screen = SDL_SetVideoMode(pfenetre->resolutionx,pfenetre->resolutiony,  
              32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
    Je ne répondrai à aucune question technique en privé

  17. #17
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par kor6k
    Je commence aussi une version en DirectX (dsl fearyourself, je ne pense pas que celle là marchera sous linux...).
    Des que ces nouvelles verion seront prètes, je les re-posterai.

    Kor6k
    Je peux t'envoyer un exemple Direct X /Direct Draw qui donnera peut-être des rendus plus rapides en plein écran.
    Tant pis pour les Linuxiens

  18. #18
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    Citation Envoyé par mat.M
    ...
    Tant pis pour les Linuxiens
    ça commence à sentir quelque chose... le troll ?

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut
    mat.M a écrit :
    Je peux t'envoyer un exemple Direct X /Direct Draw qui donnera peut-être des rendus plus rapides en plein écran.
    Tant pis pour les Linuxiens
    Merci mais j'ai parcouru la toile à la recherche de tutoriaux sur DirectX et j'ai réussi a faire mon moteur du jeu!
    Et comme il n'y avait pas grand chose à changer dans mes classes, j'ai réussi à faire rapidement une version DirectX qui tourne plutôt bien !!!

    Pour info, j'ai donc :
    - une version wxWidgets (pas fini car sur un ordinateur modeste, c'etait vraiment tres lent)
    - une version SDL que je vais retoucher pour faire du plein écran (merci millie) et avec de nouveaux graphismes.
    - une version DirectX pratiquement finie.

    Je pense que l'interet de faire ça, c'est de pouvoir me faire une idée des performances de chaque lib et de la facilité de developper avec; seule la partie concernant la lib diffère dans les différents codes ce qui donne une bonne visibilité.

    Des que les versions seront finies, je posterai les deux, ça pourra être pratique pour quelqu'un qui veut passer d'un lib à l'autre.

  20. #20
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est aussi intéressant simplement pour voir comment tu as réussi à séparer ton code du jeu du code de l'affichage

Discussions similaires

  1. Gestion touche pour jeu type Zelda
    Par PakiPaki dans le forum SDL
    Réponses: 10
    Dernier message: 26/01/2013, 14h21
  2. [SOURCE][SDL][JEU] Le Pendu
    Par Franck.H dans le forum Contribuez
    Réponses: 6
    Dernier message: 16/04/2008, 17h49
  3. [Tuto][Source][SDL][Jeu]Apprendre en s'amusant : Tetris
    Par Mindiell dans le forum Contribuez
    Réponses: 41
    Dernier message: 16/04/2008, 14h38
  4. Codes sources SDL
    Par raptor70 dans le forum SDL
    Réponses: 0
    Dernier message: 14/07/2006, 05h12
  5. [Source] [SDL] Commencement d'un casse brique
    Par grincheux01 dans le forum Contribuez
    Réponses: 8
    Dernier message: 29/06/2006, 12h27

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