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 :

Sauvegarder un monde


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    ok
    Inscrit en
    Octobre 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ok

    Informations forums :
    Inscription : Octobre 2018
    Messages : 39
    Points : 31
    Points
    31
    Par défaut Sauvegarder un monde
    Bonjour,

    comment se passe la sauvegarde d'un monde dans un moteur graphique ? Est-ce que le monde avec tous ses meshs, paramètres etc sont enregistrés dans un unique fichier où bien chaque part à son fichier ? Et comment s'organisent les données dans ce ou ces fichiers ?

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    ok
    Inscrit en
    Octobre 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ok

    Informations forums :
    Inscription : Octobre 2018
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    Apparemment il y a le modèle header/data, donc le fichier contient une table des headers, chaque header donne un pointeur vers des données dans le fichier. J'imagine que ça a quelque chose à voir avec les secteurs du disque dur ? Donc un header pointe sur un secteur une fois le secteur lequel contient un autre pointeur sur un autre secteur au cas où il se remplissait. Il y a une bibliothèque pour faire cela ?

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 215
    Points : 10 138
    Points
    10 138
    Par défaut
    Euh , il y'a pas de règle , tu sauvegarde ce que tu veux garder comme info , de même pour l'organisation d'un fichier , mais techniquement il est plus simple de sauvegarder des données qui représente la structure de données qu'on utilise dans notre code.

    Alors si le header possède un offset , c'est pour la rapidité de lecture , le but d'un header c'est de donner des info sur les data et aussi si possible de rendre la lecture du fichier rapide (comme par exemple donné la taille des données à lire).

    Bref j'ai l'impression que tu n'y comprend pas grand chose...
    Et j'ai pas d'info plus que cela à donner , vu que je vois pas ce que tu veux sauvegarder exactement...

    Si je prend un exemple , sur un RPG tu vas sauvegarder les stat du perso et quelque autre truc (comme l'argent) , où tu trouve dans l’histoire jeu et le lieu.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    ok
    Inscrit en
    Octobre 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ok

    Informations forums :
    Inscription : Octobre 2018
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    Quand je sauvegarde un monde sous blender j'obtiens un unique fichier .blend. Du coup j'aimerais faire la même chose avec mon moteur graphique, sauvegarder dans un unique fichier, les mesh, les paramètres du monde, la localisation des meshs etc. Si maintenant j'ai envie d'agrandir un mesh par exemple je vais devoir mettre un pointeur vers la suite des données du mesh ailleurs dans le fichier ce qui va me demander de pouvoir gérer l'espace mémoire... Ce serait bien qu'une bibliothèque s'occupe de ça à ma place.

  5. #5
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 215
    Points : 10 138
    Points
    10 138
    Par défaut
    Si ça te semble trop complexe ,tu peux utilisais assimp qui permet de charger et sauvegarder des model 3D.

    Mais faire un format perso est plus facile (mais moins évident vu que tu sera le seul qui saura le lire).
    J'ai créer mon propre format de model 3D (pour divers raison) , j’enregistrai juste le mesh + animation par squelette et quelque info utilise (pour créer la box d'un model 3D pour le frustum culling ) .
    Bref , juste pour dire que je ne vois pas trop la difficulté que tu as ^^'

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Silvano_Dimitrio Voir le message
    Quand je sauvegarde un monde sous blender j'obtiens un unique fichier .blend. Du coup j'aimerais faire la même chose avec mon moteur graphique, sauvegarder dans un unique fichier, les mesh, les paramètres du monde, la localisation des meshs etc. Si maintenant j'ai envie d'agrandir un mesh par exemple je vais devoir mettre un pointeur vers la suite des données du mesh ailleurs dans le fichier ce qui va me demander de pouvoir gérer l'espace mémoire... Ce serait bien qu'une bibliothèque s'occupe de ça à ma place.
    Parce que Blender te permet de travailler sur 1 objet/scène.
    Un monde me semble composer de plus que 1 objet...
    Si tu as 3 arbres à poser, tu ne vas pas mettre 3 arbres dans un fichier gigantesque qui fait le monde entier... tu mets 3 pointeurs vers un objet arbre, qui sera très certainement dans un autre fichier, son propre fichier, qui sera lu et chargé 1 seule fois.
    Ça permet aussi d'avoir plus que 1 personne qui travaille sur l'unique fichier.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 252
    Points : 649
    Points
    649
    Par défaut
    Citation Envoyé par Silvano_Dimitrio Voir le message
    Quand je sauvegarde un monde sous blender j'obtiens un unique fichier .blend. Du coup j'aimerais faire la même chose avec mon moteur graphique, sauvegarder dans un unique fichier, les mesh, les paramètres du monde, la localisation des meshs etc. Si maintenant j'ai envie d'agrandir un mesh par exemple je vais devoir mettre un pointeur vers la suite des données du mesh ailleurs dans le fichier ce qui va me demander de pouvoir gérer l'espace mémoire... Ce serait bien qu'une bibliothèque s'occupe de ça à ma place.
    Tes messages sont vraiment confus donc il faut clarifier tout ça. Est-ce qu'au moins tu parviens déjà à lire et afficher un monde ? J'ai l'impression que tu cherches à griller les étapes. Je rejoins les autres et un terme important c'est l'instanciation ou le clonage. D'un côté un index et de l'autre les données. On retrouve ce même schéma aussi bien pour les systèmes de fichiers que l'affichage d'images dans une page HTML. Par contre des formats comme SVG permettent aussi bien de gérer les objets internes qu'externes. Les fameux hyperliens ! D'ailleurs pour en revenir à Blender il est heureusement pas limité à la gestion d'un fichier unique. On peut faire exactement la même chose que dans les exemples donnés sinon le fichier du monde prend rapidement trop de place. Que du bonheur avec son logiciel favori et en temps réel bien entendu !

    À une époque ça se faisait beaucoup de centraliser les données au sein d'un même fichier, les fameux .pak d'id Software par exemple, mais c'était pour des raisons techniques, question d'accélérer les temps de chargement, ou encore de sécurité, pour éviter qu'on puisse bidouiller les données. Mais c'est marrant car il y a plusieurs années on a commencé à constater un retour en arrière car à force de multiplier les fichiers on a fini par tout ralentir. D'où l'apparition des fameux sprite sheets. 2D, 3D même combat.

    Pour résumer ça dépend vraiment des données car chaque approche a ses avantages et inconvénients. Mais généralement je pense qu'il vaut mieux bien séparer les données tout en accordant une place importante à l'organisation. Je te conseille de jeter un coup d'œil à des projets ça pourrait t'inspirer. Dans quel format sont exportées les données ? Quelles biblios sont utilisées pour les utiliser ? Quelle est la structure des dossiers/fichiers une fois l'installation faite ?

    PS : J'ai oublié de mentionner qu'au début je me suis dit que ton monde avait peut-être des éléments destructiles par exemple

  8. #8
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 560
    Points
    4 560
    Par défaut
    Citation Envoyé par ohnomorejmmings Voir le message
    À une époque ça se faisait beaucoup de centraliser les données au sein d'un même fichier, les fameux .pak d'id Software par exemple, mais c'était pour des raisons techniques, question d'accélérer les temps de chargement, ou encore de sécurité, pour éviter qu'on puisse bidouiller les données. Mais c'est marrant car il y a plusieurs années on a commencé à constater un retour en arrière car à force de multiplier les fichiers on a fini par tout ralentir. D'où l'apparition des fameux sprite sheets. 2D, 3D même combat.
    J'ai l'impression que tu confonds deux choses, les packages comme tu dis, et les ressources qu'ils contiennent, une VFS (virtual file system) permet d'accéder au contenu d'un package (un pak, un hog, un zip, un dossier classique,...) mais ce package n'est qu'un contenant, il n'est pas lui même une donnée du jeu.

    L'auteur parle de fichier de sauvegarde, donc d'un fichier de donnée (qui pourrait être potentiellement dans un package mais ce n'est pas la question).
    Il en va de même pour les spritesheet, ce sont des fichiers de donnée, qu'on utilise un VFS ou pas, avec des spritesheet ou des images éclatées n'est pas la question.

    Mais pour en revenir à ce sujet, si l'utilisation d'un VFS améliore effectivement les temps de chargement du moins sous windows (fat, ntfs) avec disque mécanique de par le fait qu'il centralise les différentes resources au sein d'un même fichier ce qui réduit la fragmentation et donc les temps d'accès.
    Par contre c'est plus compliqué à intégrer dans un moteur.
    PXL le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  9. #9
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    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 215
    Points : 10 138
    Points
    10 138
    Par défaut
    L'autre avantage (enfin dans le passé) de mettre dans un package , c'est que le CD ISO de niveau 1 sont assez restrictive :
    Les noms de fichiers sont restreints à 8 caractères avec une extension de 3 caractères. Les majuscules, les chiffres et le souligné peuvent être utilisés. La racine peut contenir des répertoires qui auront une profondeur maximale de 8 niveaux (racine incluse).
    Du coup avoir un package , ça permettais d'avoir pas forcément de limite et d'utiliser les minuscule etc etc.

  10. #10
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 560
    Points
    4 560
    Par défaut
    Ca dépend des formats, en hog on est aussi limité en 8.3 (enfin, faut tout encoder sur 13 char, ensuite on organise comme on veut)

    https://github.com/yildiz-online/mod...l/HogFile.java
    PXL le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 252
    Points : 649
    Points
    649
    Par défaut .pak-man
    Citation Envoyé par yildiz-online Voir le message
    J'ai l'impression que tu confonds deux choses, les packages comme tu dis, et les ressources qu'ils contiennent
    Non je faisais juste le parallèle avec un fichier unique Blender. Pas assez clair mon message héhé donc merci pour les précisions !

Discussions similaires

  1. [arbre] Sauvegarder un objet dans un fichier
    Par Guigui_ dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 01h55
  2. Sauvegardes
    Par tastalian dans le forum DirectX
    Réponses: 12
    Dernier message: 15/10/2002, 02h30
  3. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 17h54
  4. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 16h23
  5. [Kylix] Sauvegarde de donnée utilisateur....
    Par Eclypse dans le forum EDI
    Réponses: 1
    Dernier message: 11/05/2002, 18h21

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