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 :

[conception] les maps et leur chargement


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut [conception] les maps et leur chargement
    Salut à tous !

    Voilà, je souhaitais savoir dans le monde du jeu (le vrai...) comment etait geré le load de maps. En gros je me pose la question particulierement vis à vis d'un jeu : NFS most wanted.

    Ce qui m'intrigue en fait c'est le fait d'avoir une map enormissime (donc une chiée de vertices). Mais comment font-ils ? ils loadent tout ca en RAM ? Si oui, c'est enorme !!! vu le niveau de détail de NFSMW, j'ose meme pas imaginer le nombre de points stockés en memoire quoi !!!! lol

    Savez vous comment c'est réellement géré ?
    @++

  2. #2
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Déja, les données peuvent être stoquer sous un format de texte. Regarde la taille du fichier. Surement il y en a plusieurs. Il est possible de découper le décore avec des algorithmes (bsd et d'autres) et donc de n'avoir qu'une partie a traiter. Je supose que l'on peut apliquer ce traitement l'ors du chargement, si les données dans le fichier sont bien organiser.
    En gros, les données sont placer de tel ffasson que l'on puisse charger que la partie afficher.

    Mais, la simple position de vertice dans l'espace ne veut pas forcément dire un tas de mémoire utiliser... Et puis, il est possible que certains etailles soit "créer" de toute pièces a partir d'algorithme. Ce qui diminu encore la taille des données a sauvegarder.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Citation Envoyé par JC_Master
    Et puis, il est possible que certains etailles soit "créer" de toute pièces a partir d'algorithme. Ce qui diminu encore la taille des données a sauvegarder.
    C'est carrement ça !!! j'y avait meme pas pensé.... lol
    ouais en gros tu as une map simplifiée du style juste le sol et des flags qui indiquent l'endroit d'un objet et lors de l'affichage, il va prendre tous les flags se trouvant dans un rayon de tant et les afficher selon une procédure bien determinée... c'est simple comme bonjour ^^ (surtout avec les display lists en opengl...)

    Maintenant, si l'on oublie cette façon de faire, un fichier comportant une map complete (comme une ville comme dans NFSMW) c'est giant !!!! donc en gros deux possibilités :
    Soit on accede en live au fichier pour aller y recuperer ce que l'on veut (pas forcement terrible niveau acces disque...) soit on charge tout en memoire et on accede par ce biais (mais là, pas forcement terrible en terme d'utilisation mémoire...) Donc sincerement je suis un peu dans le flou là... lol
    Car bon, je reste toujours sur cet exemple de ville de NFS, meme si un vertex ne prend pas beaucoup de place, imagines le nombre de vertices multipliés par 3 position + la def des faces, ca chiffre pas mal a mon avis tout de meme... et ce uniquement pour le stockage des données en memoire car vient apres cela l'affichage open GL ^^

    Là c'est pas trop evident tout de meme ^^

  4. #4
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Deja, il faut pas se remprésenter sa comem sa.
    La map, c'est juste du style : Morceau de mure lan, la la la, et puis ici, a cete ensdroit un pot de fleur...
    En suite, les diférents item et textures sont a pare. C'est la meilleur fason de procèder.
    Pour un objet, on ne le charge qu'une fois en mémoire, et ensuite on l'afiche au bonne endroit.
    Donc, dans ta map tu ne trouve plus que la position de "tas" de vertices. Ce qui permet dd'avoir des choses du style : mile vetrtice qui n'utilise dans le ficheir map que 10 octets.
    Et les "objets" sont réaliser avec des logiciels de modélisation 3D comme blender ou 3DSMAX.

    Donc, on peut faire ceci :
    On découpe dnas le ficheir map que la partie qui nous intèrésse.
    On charge les diférents objets présents dans cette partie.
    On selectione les vertices qui sont dans la vue.
    On traite tout sa.

    A noter que pour éviter les temps de chargement, on peut dire que els zones se superposes. Comme sa, on prépare le chargement des objets qui pourais aparaitre a l'écran.
    En chema sa donerai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
           ______
          |+  + |
          |___+_|
          |_+_-_|
          | -  -|
          |__-__|
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Re !

    Effectivement, c'est bien ce que j'avais compris au depart (mon histoire de flags entre guillemets).
    J'étais en train d'écrire un truc mais j'ai tilté sur un point en fait ^^ et je commence à mieux comprendre le truc....
    Admettons que j'aie une map (je parle d'un truc pas plat !) avec des batiments... (qui ne sont pas identiques car formés selon les tracés de la map...) le moyen le plus simple pour ne pas tout charger en memoire serait de découper la map en plusieurs carrés de map qui formeraient des pseudo objets que l'on chargerait au fur et à mesure (par exemple, on charge le carré ou se trouve le personnage et les 8 qui se trouvent autour) et ainsi de suite.
    Maintenant, je dirais que le problème qui pourrait se poser, serait de gérer le load en meme temps que le jeu... Là ça se complique... Utiliser les threads peut etre ?

    Suis-je sur la bonne voie concernant :
    1) le load progressif par "carrés" de map
    2) les threads pour le faire en meme temps que le jeu

    Merci pour tes indications en tout cas !
    ++

  6. #6
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    1:Ce sont des cubes
    2: Tout n'est surement aps coder comme tu le croi. Je pensse qu'il y a enfaite des "squellettes" de batiement(style un mure, un tois ect) déja préparer, et que le fichier de map ne fait que "recoler els morceauxs". Donc, il sufit l'or d'un changement de cub de charger la nouvelle partie de la map. Et quand on sort d'un cub, on décharge la partie qui ne sert plus, et les objets qui ne sont plus utiliser. Même si ce n'est pas le system utiliser, c'est une des possibilitées. Sinon, par exemple avec flyff, il y a de forte chance que la map soit divisé en cube, car quand on passe d'un certain "lieu"(La limite d'un caré) on ressent un petit freeze, et on entend l'ordi qui ronrone.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Citation Envoyé par JC_Master
    Même si ce n'est pas le system utiliser, c'est une des possibilitées.
    J'en reviens donc à ma question premiere : comment est-ce géré alors en général ?

    (ok pour les cubes lol, petite erreur de ma part )

  8. #8
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Il n'y a pas de "en general". Il existe une multitude de fasson de procèder, et sans les sources originale, dificile de conaitre la metode employer. Mais la question est plus comment "bien gèrer" que comment ce jeu la fonctione non?
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Oui en gros c'est ce que je voulais savoir ^^ je me suis mal exprimé... J'ai cité NFSMW pour l'exemple d'une grande map assez complexe et bien detaillée (qui d'ailleur me sidere toujours par sa fluidité à coté du niveau de détails).
    Donc en gros : quelle ou quelleS seraient les methode pour bien gérer une map assez complexe ?

  10. #10
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    Il y a une technique dans les jeux à taille de map énorme qui s'appelle le streaming (chargement et sauvegarde de bout de map en tache de fond, alors qu'on est en train de jouer), c'est la technique employée dans Grand Theft Auto San Andreas. Si tu cherches sous googl, tu devrais pouvoir trouver des infos techniques là dessus.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Salut,

    Merci pour cette réponse, alors pour le terme streaming à proprement parler, avec une recherche google ca va pas chier loin lol c'est vachement large ^^ mais en gros j'ai lu quelques topics s'approchant du sujet et ca a l'air de correspondre plus ou moins à l'utilisation d'octree et de load/delete d'objets maps via un thread parallele (j'ai bon ? ^^)

    Merci néanmoins pour la réponse et si jamais t'as un lien, je suis preneur
    @++

  12. #12
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    Je crois que ce que tu as trouvé correspond à ce que j'avais lu à l'époque sur le streaming. Maintenant je n'ai pas creusé le sujet, je sais juste que ca s'appelle comme ca, et que la technologie est rôdée...

  13. #13
    mat.M
    Invité(e)
    Par défaut
    JC_Master c'est possible d'écrire en bon français complet merci !
    Je n'ai pas de clavier AZERTY ici et je fais l'effort pourtant de placer les accents ou il faut

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Merci, cela confirme à peu près la direction à prendre. Ensuite, à moi de creuser un peu plus le sujet ^^

    Mat.M : Merci pour ton intervention... c'est clair que c'est galère à relire quand c'est écrit en petit chinois, mais malgré tout, on va dire que je préfère faire l'effort de "traduire" et d'apprendre que de passer à coté de choses interressantes

    @++

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/07/2008, 12h15
  2. Probleme de auto_ptr avec les map
    Par Luther dans le forum C++
    Réponses: 8
    Dernier message: 08/04/2005, 10h49
  3. Lister les process avec leurs arguments
    Par jamfr73 dans le forum MFC
    Réponses: 5
    Dernier message: 23/12/2004, 10h54
  4. Réponses: 4
    Dernier message: 13/12/2004, 20h37
  5. Quel format de fichier utiliser pour les maps ?
    Par fb57 dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/09/2004, 20h22

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