Aller à la page... |
Stockage de données
Suivre Répondre |
|
Partager | Rechercher |
Alpha & Oméga
|
Tu peux stocker 3 données (rouge - vert - bleu) d'un niveau 0-255 par pixel dans une image. C'est un moyen simple d'alléger la base de donnée.
En PHP tu peux analyser un pixel avec cette commande : http://fr.php.net/manual/fr/function.imagecolorat.php Tu te fais des cartes en image pour les données peu changeantes et pour les autres données plus vives ou constamment analysée, tu stockes en BDD. EDIT : en fait j'ai oublié de parler des fonctions spatiales des BDD. Il est possible de faire travailler des polygones entre eux avec une BDD comme PostgreSQL. MySQL le fait avec les MBR (le carré englobant un polygone), c'est donc moins intéressant. Une véritable gestion des polygones est prévue pour une version future. |
12/08/2009, 17h07 |
|
|
Pour le terrain
En effet, avoir un million de lignes dans ta base pour représenter chaque case est probablement très mauvais pour les performances! Chaque objet devra plutôt être représenté par ses coordonnées. Pour chaque arbre, tu as une position en x, y. Si tu as 100 000 arbres, tu as 100 000 lignes, mais c'est probablement raisonnable. Ensuite, pour les donnés "raster", de type élévation, type de terrain, tu peux utiliser une ou plusieurs images qui contiennent les données dont tu as besoin. En plus, l'édition de données sera simplifiée! Aussi intéressant, est de gérer ton monde implicitement, à travers des fonctions pseudo-aléatoires qui définissent entièrement ton terrain. Tu peux jeter un coup d'oeil par exemple au bruit de Perlin, ou encore utiliser des formes géométriques que tu disposes suivant une fonction pseudo-aléatoire (j'ai fait ça en 3D ici), en 2D le principe est le même). Pour les objets La solution la plus simple, c'est de simplement faire des grandes tables Mais il est possible de ruser, et de partir vers un design beaucoup plus dynamique. L'idée est de définir des listes de propriétés, sous forme de paires clé -> valeur. En permettant à une liste de dériver d'une autre liste, l'on peut spécialiser des objets à peu de frais. Arbre Nom -> Arbre Matière -> Bois Cyprès, dérive Arbre Nom -> Cyprès Vertu -> +10 PV Vertu -> +5 PM Cyprès 1, dérive Cyprès Nom -> Cyprès près du chemin des Gargouilles Hauteur -> 50m Position -> 257, 354 Cyprès 2, dérive Cyprès ... Ainsi, dans ta base, chaque cyprès n'a besoin que de définir un nom particulier (si tu en as besoin, sinon il apparaîtra juste comme "Cyprès"), sa hauteur, et sa position. Si tu veux changer le nombre de points de magie qu'un cyprès particulier peut fournir (par exemple, le cyprès dans le jardin du sorcier), cela ne te coûtera qu'une ligne en plus dans la base. Le système est expliqué avec plus de détails sur le blog de Steve Yegge (en anglais). Un tel design, c'est plus de boulot au moment de la création, mais cela permet d'être très dynamique tout en étant relativement sobre question place. J'ai fait une petite implémentation de listes de propriétés avec Postgres, je peux poster si ça intéresse quelqu'un. |
12/08/2009, 21h55 |
|
Alpha & Oméga
|
|
13/08/2009, 14h49 |
|
|
Gwym - Concepts très intéressants, qui devrait rendre le monde extrêmement dynamique. Le public réclame une démo!
Toro - J'ai remis mon implémentation au goût du jour, en utilisant les fonctionnalités de Postgresql 8.4 pour faire de la récursion en pur SQL. Le code est ici: PropertyList.sql La fin du script contient l'exemple des cyprès, et utilise les fonctions getValue et getAllValues pour récupérer soit une valeur donnée, soit toutes les valeurs pour un objet, en prenant donc la valeur de l'objet le plus bas dans la hiérarchie. Les listes sont supportées sous forme de plusieurs entrées avec la même clé, et une liste à un niveau cache les listes des niveaux supérieurs. J'ai un petit peu joué avec Postgis en chargeant des données géographiques récupérées sur le Net. Je pense que cela pourrait être un socle très solide pour un wargame ou un Sim City, avec l'avantage de pouvoir utiliser tout plein d'outils standards pour faire les cartes, les charger et les afficher. J'espère bien faire bientôt quelque chose de sérieux avec ça! |
13/08/2009, 23h23 |
|
Suivre Répondre |
Fil d'ariane
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|