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++/Allegro] Conseils pour la sauvegarde de données pour un Zelda


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++/Allegro] Conseils pour la sauvegarde de données pour un Zelda
    Bonjour,

    Tout est dans le titre, je cherche le meilleur moyen pour sauvegarder les données de mon Zelda sachant :
    • Trois emplacement de parties seront disponibles au début du jeu
    • Il faut sauvegarder les données des zones "overworld", c'est à dire en dehors des donjons
    • Il faut sauvegarder les données des donjons visités (nombre de clés, portes qui ont été ouvertes, boss vaincu...)
    • Ne pas oublier le menu donc les items trouvés, les rubis, le nombre de coeurs...

    Voilà, si vous avez des conseils à me donner...

    Actuellement, j'utilise des fichiers textes mais je galère un peu.

    Pour l'instant, je ne m'intéresse qu'aux donjons visités. Donc j'ai créé un donjon "test" et là, je sauvegarde toutes les infos dans un fichier texte par salle. Donc si le donjon à 20 salles, ca fait alors 20 fichiers textes multiplié par le nombre de donjons, ca devient vite ingérable...

    Voilà, j'aimerais bien tout centraliser dans un seul fichier mais je ne sais pas comment faire (d'ailleurs comment les vrais jeux font-il ?)


    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 !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 185
    Billets dans le blog
    157
    Par défaut
    Bonjour,

    Je ne prétends pas avoir les meilleurs solutions, mais:
    1 fichier par donjon -> qui indique quel est l'état des salles (0 non découverte ; 1 découverte (en fait il y a un état 0.5 mais il dépend de si Link à la carte du donjon)
    + 2 informations
    • Link a la carte (0 ou 1)
    • Link a t'il la boussole (0 ou 1)


    Voilà l'idée pour les donjons.

    Maintenant, sauvegarde du jeu en lui même (ou les informations sur Link)
    Voici ma proposition:
    • Emplacement sur la world map de Link (à la case près) (Cela sauvegarde aussi si Link était dans un donjon (sauf qu'il apparaitra en dehors et non directement dedans :p))
    • Nombres de rubis
    • Nombres de coeur pleins / vides (optionnel)
    • Nombres de coeurs récoltés (les Gros Coeur + fragement de coeur)
    • Nombre de clés
    • Nombre d'instruments
    • Objects qu'il a (0 ou 1 pour chaque objet?) (inventaire)
    • Présence du chien
    • Nombre de coquillages
    • Objet (celui qui sert pour les échanges (nombres entre 0 et 20)


    Maintenant, il faut juste trois fichiers, et moi je suis partie pour tout pleins de fichiers. En fait, on peut assembler les informations des deux fichiers dans un seul et décrire les donjons après les informations générales.

    J'espère avoir été clair, sinon, je tacherai de faire mieux la prochaine fois
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Je vais essayer de d'aider un peu mais jamais fait ce type de jeu donc voila ce que je te propose.

    Trois emplacement de parties seront disponibles au début du jeu
    On aura donc 3 sauvegardes (qu'on appelle imaginons zelda1.sav,zelda2.sav,zelda3.sav).

    Il faut sauvegarder les données des zones "overworld", c'est à dire en dehors des donjons
    Je n'ai pas compris.
    Il faut sauvegarder les données des donjons visités (nombre de clés, portes qui ont été ouvertes, boss vaincu...)
    donc si c'est la première partie (zelda1.sav donc),faire un fichier dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    map 4 //ou se trouve link
    map_visister 1,2,3,4
    nombre_de_clé 0 //libre de ton choix afficher la clé quand on a 0
    vie 5
    //et tu continu comme ça
    Donc on gros on a une structure data_link qui possède tous les donnés, et quand on sauvegarde on écrit donc.

    Ne pas oublier le menu donc les items trouvés, les rubis, le nombre de coeurs...
    J'ai un peu répondu on poséde data_link qui a toute ces info.


    Actuellement, j'utilise des fichiers textes mais je galère un peu.

    Pour l'instant, je ne m'intéresse qu'aux donjons visités. Donc j'ai créé un donjon "test" et là, je sauvegarde toutes les infos dans un fichier texte par salle. Donc si le donjon à 20 salles, ca fait alors 20 fichiers textes multiplié par le nombre de donjons, ca devient vite ingérable...
    Le problème c'est que tu utilise des fichier texte les pro utilise un fichier binaire du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    0011220405
    2010203213
    //ects
    donc on gros, 0 affiche herbe par exemple,1 un mur ects...
    On l’appellera 1.map.
    Donc on gros tu code (ce que t'a sûrement fais ) , une fonction qui est capable de charger la map et de afficher , après dans le code tu met que s'il va en haut il va dans '4.map' par exemple.

    Effectivement tu peux mettre tous dans un fichier mais je pense que ça serait 'galère' niveau code,certes ça fera beaucoup de fichier mais tu n'aura plus dans ton système de faire un bmp chaque fois ,vu que ta map affichera ce que tu lui demande.

  4. #4
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Un fichier au format binaire sera plus performant en terme d'accès aux donnés.

    Par contre pourquoi pas un fichier XML, qui aura au moins le mérite de retranscrire facilement la logique de stockage des données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?xml version="1.0" encoding="utf-8"?>
    <ZELDAGAME>
      <EMPLACEMENT1>
        <DONJON1>
          <CLES></CLES>
          <PORTE></PORTE>
          <BOSSE></BOSSE>
        </DONJON1>
        <DONJON2>
          <CLES></CLES>
          <PORTE></PORTE>
          <BOSSE></BOSSE>
        </DONJON2>
      </EMPLACEMENT1>
      <EMPLACEMENT2>
        <DONJON1>
          <CLES></CLES>
          <PORTE></PORTE>
          <BOSSE></BOSSE>
        </DONJON1>
        <DONJON2>
          <CLES></CLES>
          <PORTE></PORTE>
          <BOSSE></BOSSE>
        </DONJON2>
      </EMPLACEMENT2>
      <EMPLACEMENT3>
        <DONJON1>
          <CLES></CLES>
          <PORTE></PORTE>
          <BOSSE></BOSSE>
        </DONJON1>
        <DONJON2>
          <CLES></CLES>
          <PORTE></PORTE>
          <BOSSE></BOSSE>
        </DONJON2>
      </EMPLACEMENT3>
      <OVERWORLD>
        <DATA1></DATA1>
      </OVERWORLD>
      <ITEMS>
        <RUBIS></RUBIS>
        <COEURS></COEURS>
      </ITEMS>
    </ZELDAGAME>

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 185
    Billets dans le blog
    157
    Par défaut
    Si vous voulez vous pouvez utiliser le XML. Il n'y a pas de problème là dessus.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour LittleWhite.

    Je pense qu'il y a confusion, je ne suis pas l'initiateur de ce message...

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 185
    Billets dans le blog
    157
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Bonjour LittleWhite.

    Je pense qu'il y a confusion, je ne suis pas l'initiateur de ce message...
    Pardon
    J'ai du me repéré aux plumes.
    Pour lire le XML assez facilement, je propose cette bibliothèque: http://www.grinninglizard.com/tinyxml/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    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
    Salut à tous,

    Merci pour vos réponses

    @LittleWhite : C'est bizarre que tu mette les clés obtenus dans le fichier "général" et pas dans les fichiers de donjons Et oui on a tous des pluplumes ^^
    (sinon j'espère que ton projet avance bien )

    @Kannagi : Alors oui c'est mon idée de base avec des fichiers textes mais bon multiplier le nombre de fichiers je le sens pas trop et je préfère éviter que les gens fourre leur nez dedans et s'amusent à tout modifier ^^
    Utiliser des fichiers binaires, oui j'y es pensé mais on avait vu avec LittleWhite que l'écriture de fichier binaire pouvais poser problème pour la portabilité du jeu sur d'autres OS comme Linux ou MAC...

    @moldavi : L'utilisation de fichier XML semble pas mal mais pour un jeu je trouve ca bizarre.

    Deux questions :
    1) Est-il possible de brouiller les données pour éviter qu'on les modifies dans un fichier xml ?
    2) Est ce que la vitesse de lecture d'un fichier xml ne risque pas de ralentir le chargement des maps du jeu par rapport à la lecture de fichiers textes ou binaires ?

    Question générale :

    Je gros problème que j'ai c'est de sauvegarder les énigmes résolues dans les salles des donjons et avec un fichier texte, je vois pas trop comment m'y prendre...

    Exemple : Dans une salle, il peut y aovir une clé à gagner mais 3 portes à clés. Dans ce cas, j'ai une variable ClePrise qui vaut 1 si j'ai pris la clé. Mais si j'utilise la clé sur la porte du haut par exemple, comment faire au rechargement de la salle pour dire que c'est bien la porte du haut qui a été ouverte et pas les autres ?
    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 !

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 185
    Billets dans le blog
    157
    Par défaut
    Citation Envoyé par Aspic Voir le message
    @LittleWhite : C'est bizarre que tu mette les clés obtenus dans le fichier "général" et pas dans les fichiers de donjons Et oui on a tous des pluplumes ^^
    Ce n'est pas si bizarre, c'est que je parlais des "grosses" cles (les cles qui ouvrent les donjons, et non les petites portes )
    Citation Envoyé par Aspic Voir le message
    (sinon j'espère que ton projet avance bien )
    Pas vraiment :s

    Citation Envoyé par Aspic Voir le message
    @moldavi : L'utilisation de fichier XML semble pas mal mais pour un jeu je trouve ca bizarre.
    Je ne vois pas pourquoi cela est bizarre beaucoup le fond, et cela me semble logique:
    Lisible par l'humain / possede uen hierarchie


    Citation Envoyé par Aspic Voir le message
    1) Est-il possible de brouiller les données pour éviter qu'on les modifies dans un fichier xml ?
    Euh ... vous allez vous embeter pour rien ... sinon mieux vos prendre les fichiers binaires ... ou alors, faire une compression avec mot cle ... et hop (decompression au chargement)
    Citation Envoyé par Aspic Voir le message
    2) Est ce que la vitesse de lecture d'un fichier xml ne risque pas de ralentir le chargement des maps du jeu par rapport à la lecture de fichiers textes ou binaires ?
    Bien sur que c'est plus lent qu'un simple fichier texte (il y a plus de texte) mais cela ne se fera pas sentir. Et puis, les charments se font sur la periode de chargement (loading) et donc on s'en fout du temps que cela prend (tant que ce n'est pas trois heures )

    Citation Envoyé par Aspic Voir le message
    Je gros problème que j'ai c'est de sauvegarder les énigmes résolues dans les salles des donjons et avec un fichier texte, je vois pas trop comment m'y prendre...

    Exemple : Dans une salle, il peut y aovir une clé à gagner mais 3 portes à clés. Dans ce cas, j'ai une variable ClePrise qui vaut 1 si j'ai pris la clé. Mais si j'utilise la clé sur la porte du haut par exemple, comment faire au rechargement de la salle pour dire que c'est bien la porte du haut qui a été ouverte et pas les autres ?
    Tres bonne question .. je n'ai malheuresement pas d'idee (a part de numeroter chaque porte, et d'ecrire si elle est ouverte ou pas ...)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  10. #10
    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
    Citation Envoyé par LittleWhite Voir le message
    Euh ... vous allez vous embeter pour rien ... sinon mieux vos prendre les fichiers binaires ... ou alors, faire une compression avec mot cle ... et hop (decompression au chargement)
    Ok donc c'est à moi de coder un algo de cryptage à côté
    Je ais regarder votre lien sur cette librairie, peut petre que le cryptage est déjà inclus mais faut pas rêver


    Citation Envoyé par LittleWhite Voir le message
    Bien sur que c'est plus lent qu'un simple fichier texte (il y a plus de texte) mais cela ne se fera pas sentir. Et puis, les charments se font sur la periode de chargement (loading) et donc on s'en fout du temps que cela prend (tant que ce n'est pas trois heures )
    Tiens je voyais pas la chose comme ca, pour moi au lancement du jeu (quand on a sélectionné son emplacement de partie), ca charge uniquement les infos générales (celles dont vous parliez dans votre premier post) et en fait c'est à chaque "scroll" de zone que je charge éventuellement des infos supplémentaires si une énigme a été résolue par exemple, si le coffre de cette zone a déjà été ouvert...

    Mais en y réfléchissant, n'est ce pas plus judicieux de tout charger au début (même les infos de tous les donjons) mais j'ai peur de faire monter le jeu à 100 Mo de RAM dès le lancement xD

    Et aussi en admettant que je charge toutes les infos, où vais les stocker dans le code (Exemple : je suis dehors et j'ai chargé les infos des donjons 1 et 2 : Tant que je rentre pas dans un donjon déjà visité, je ne travaille pas dans ma classe "t_donjon" ... bref je m'embrouille aussi, je crois que c'est pas clair
    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 !

  11. #11
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Citation Envoyé par Aspic Voir le message
    @Kannagi : Alors oui c'est mon idée de base avec des fichiers textes mais bon multiplier le nombre de fichiers je le sens pas trop et je préfère éviter que les gens fourre leur nez dedans et s'amusent à tout modifier ^^
    Utiliser des fichiers binaires, oui j'y es pensé mais on avait vu avec LittleWhite que l'écriture de fichier binaire pouvais poser problème pour la portabilité du jeu sur d'autres OS comme Linux ou MAC...
    Y'a plus de chance que utilisateur puisse le modifier avec un fichier texte que en fichier binaires.
    Par contre fichier binaire pas portable O_o ,on s'est mal compris.
    Je vois pas comment un open(tamap,"rb"); (ou wb), n'est pas portable =P.
    Apres quand je dis fichier binaire ce la veut dire les ecrire en 'brut' ou comme tu veux en gros 1 on écrit pas en texte (1 en texte , correspond a 65 ou un truk dans le genre en binaire).
    La seule chose qui peut être différente en texte par contre entre windows et linux c'est que '\n' , sur windows ça doit correspondre a 0x0D 0x0A alors que sur linux ça correspond seulement a 0x0A.

    Citation Envoyé par Aspic Voir le message
    Exemple : Dans une salle, il peut y aovir une clé à gagner mais 3 portes à clés. Dans ce cas, j'ai une variable ClePrise qui vaut 1 si j'ai pris la clé. Mais si j'utilise la clé sur la porte du haut par exemple, comment faire au rechargement de la salle pour dire que c'est bien la porte du haut qui a été ouverte et pas les autres ?
    Niveau code,que chaqu'une des portes a une variable a elle ,tu peux aussi rajouter une signature pour savoir si la porte est ouverte ou fermé(et les reconnaître entre eux).

    Mais en y réfléchissant, n'est ce pas plus judicieux de tout charger au début (même les infos de tous les donjons) mais j'ai peur de faire monter le jeu à 100 Mo de RAM dès le lancement xD
    je pensais que tu chargeais la map et la dechargeais chaque fois.

  12. #12
    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
    Sur la FAQ :
    http://cpp.developpez.com/faq/cpp/?p...ERS_read_write

    Ils disent bien que l'écrire et lecture en binaire n'est pas portable...
    Citation Envoyé par Kannagi Voir le message
    je pensais que tu chargeais la map et la dechargeais chaque fois.
    Oui actuellement c'est le cas mais est-ce la bonne solution ?
    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 !

  13. #13
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 185
    Billets dans le blog
    157
    Par défaut
    Citation Envoyé par Aspic Voir le message
    (même les infos de tous les donjons) mais j'ai peur de faire monter le jeu à 100 Mo de RAM dès le lancement xD
    En meme temps cela voudrait dire que vous avez 100Mo de fichier distribue avec le programme O_o enorme surtout pour un jeu 2D
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  14. #14
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    ah je l'ignorais en C++ (je code en C est mes "rb","wb" sont portable).
    M'enfin je que je veux dire c'est que dans ton jeu tu écris comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    1,0,0,0,0,0,0,0,0,0
    1,0,0,0,0,0,0,0,0,0
    1,0,0,0,0,0,0,0,0,0
    1,0,0,0,0,0,0,0,0,0
    1,0,0,0,0,0,0,0,0,0
    1,0,0,0,0,0,0,0,0,0
    1,0,0,0,0,0,0,0,0,0
    1,0,0,0,0,0,0,0,0,0
    Oui certe ta map est quadrillé elle représente les murs mais normalement les pro quadrille pour le 'dessins' et logiquement ça fera les murs (on considérera jamais que herbe soit un mur).
    et donc ça te permettra d'eviter de faire le bmp,chaque fois.

    M'enfin bref oui déjà ta map est pas bien grande le chargement doit pas être très long et peu coûteux en cpu,donc ça t’évitera d'avoir comme tu dis 100mo en mémoire par exemple.

  15. #15
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 185
    Billets dans le blog
    157
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    ah je l'ignorais en C++ (je code en C est mes "rb","wb" sont portable).
    Pourtant les problemes sont tout aussi present (mais ils sont rares, c'est pour cela que tout le monde oublie ...)

    Citation Envoyé par Kannagi Voir le message
    Oui certe ta map est quadrillé elle représente les murs mais normalement les pro quadrille pour le 'dessins' et logiquement ça fera les murs (on considérera jamais que herbe soit un mur).
    et donc ça te permettra d'eviter de faire le bmp,chaque fois.
    Personnelement, je n'ai pas compris ...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  16. #16
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Je vais essayer d’être plus clair
    Je reviens juste sur la map ,on peut lire/ecrire sans en mode binaire ça change pas grand chose je pense la.
    Juste que quand il devra lire/ecrire(pour editeur) au lieu de faire "fichier.put('1')" on fera "fichier.put(1)" .

    Pour je que j'ai dit bah ,son quadrillage représente les murs(dans le sens ou on ne peut pas y accéder).
    Et je dis que son quadrillage doit représenter a chaque numero herbe,porte,tronc arbre,et j'y passe.

  17. #17
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 185
    Billets dans le blog
    157
    Par défaut
    J'ai l'impression que vous ne repondez pas a la bonne probematique. Actuellement les niveaux sont correctement gere: http://www.developpez.net/forums/d98...c/#post5538206
    Nous parlons de la sauvegarde de l'etat du jeu.
    Sinon, alors l'idee serait de modifier vos de la carte a la volee (mais donc on aurait trois cartes, pour les trois slots de sauvegarde O_o)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  18. #18
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Effectivement peut être que j'ai télécharger une vielle version de son jeux


    Sinon, alors l'idee serait de modifier vos de la carte a la volee (mais donc on aurait trois cartes, pour les trois slots de sauvegarde O_o)
    par contre la c'est moi qui est pas compris

    Par contre pour être sur que j'ai bien compris et que vous m'avez compris
    voici une image pour exemple
    La pour moi c'est un fichier map, a gauche leur code hexa , a droite l’équivalent en texte.

  19. #19
    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
    Oulalal je commence a être perdu !

    Pour la gestion des maps y'a pas de soucis, j'ai choisi la méthode de créer une seule BITMAP pour chaque donjon et dans cette BITMAP, il y a en fait les BITMAP de toutes les salles donc je charge une seule BITMAP en mémoire et après je sélectionne la bonne zone à afficher en fonction des coordonnées de la salle (l'avantage est que le scroll est plus rapide car je n'ai pas à recharger la BITMAP à chaque fois )

    Le problème dans ce topic est d'enregistrer de manière optimales les données de chaque salle et du donjon (carte, boussole, nb clés, etat du miniboss et du boss, coffres ouverts...)

    Je suis entrain de faire mumuse avec la librairie tinyxml, ca à l'air pas mal pour l'instant voilà le format :
    <?xml version="1.0" standalone="no" ?>
    <SAVE1>
    <DONJON1 name="donjon test" cle="0" carte="0" boussole="0">
    <zone x="1" y="0" cle="1" />
    <zone x="2" y="0" cle="0" />
    <zone x="1" y="1" cle="0" />
    </DONJON1>
    </SAVE1>
    Je sais pas ce que ca va donner par la suite...
    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 !

  20. #20
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 050
    Par défaut
    Le problème de xml est la lenteur de chargement par rapport à une lecture direct sur un flux standard, et la visibilité des données par un utilisateur, ils pourrais en lisant le document, très bien rajouter le double de vie.

    Tu peux réalisé les sauvegardes avec une sérialisation dans un fichier via ostream. Tu auras besoin d'un système de balise, généralement dépendant de ton architecture du jeu. Un objet ayant un id, l'ordre de création de tes objets dans le programme. Si tu créer les donjons puis les objets puis les personnages. Et bien tu sauvegarderas dans cet ordre, et lors de la relecture, tu relis et créer par défaut les objets dont l'id n'est pas dans le fichier, sinon créer ceux avec les paramètres enregistré.

    Ne sauvegarder que les objets ayant été modifié!
    Genre tu as un donjon et 2 coffres, tu ouvre le coffre 1, tu sauvegardes que l'état du coffre 1. Un donjon que tu n'as jamais visité, ne pas le sauvegarder. Pour un équipement, un id est une bonne solution, un objet = 1id, sauvegarder les id dans l'inventaire.

    Évite un maximum les id, si tu as un objet avec l'id "épée" par exemple, tu pourrais donc avoir une balise <Objet=épée>123.34.5
    et bien on pourrais voir ça comme une épée avec 12 dégâts, 3.3 kg, 4.5 mètres. le mot épée, te servira donc a créer un objet épée, avec en paramètres ces 3 valeurs dans la constructeur paramétrique.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [CS5] Sauvegarde de données pour support apple
    Par Nicolas M. dans le forum Flash
    Réponses: 0
    Dernier message: 03/11/2010, 13h03
  2. Réponses: 0
    Dernier message: 25/10/2010, 12h50
  3. Sauvegarde de données pour extension firefox
    Par windob dans le forum Autres langages pour le Web
    Réponses: 0
    Dernier message: 26/08/2009, 19h54
  4. Réponses: 7
    Dernier message: 20/12/2006, 09h06
  5. [Administration] Sauvegarde de données pour changer d'OS
    Par leminipouce dans le forum Subversion
    Réponses: 1
    Dernier message: 22/11/2006, 10h21

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