AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Minecraft-like - stocker les données - SQL ou autre

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Chulien
Utilisateur confirmé: Rang *****
avatar

Messages : 2202

MessageSujet: Minecraft-like - stocker les données - SQL ou autre   Mer 27 Avr 2011 - 6:42

Salut, j'ai quelques questions qui me viennent a l'esprit (dans le bus) :

Pour développer un Minecraft multijoueur uniquement, comment est-ce qu'on peut stocker les données (map, stats, inventaires, logins/pass...) de façon a y accéder rapidement tout en ayant une map très grande?
Je sais que l'original a un paquet de petits fichiers dans un paquet de dossiers mais on peut être qu'on peut trouver mieux.

Est-ce qu'une base de données SQL côté serveur serait une solution ?

Est-ce sécurisé malgré Game Maker? On dirait bien, vu que c'est du côté serveur, mais bon...


_________________
anciens projets
Revenir en haut Aller en bas
http://sites.google.com/site/chuliendev
Wargamer
*Excellent utilisateur*
avatar

Messages : 6936
Projet Actuel : Bataille de cake au fruits

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Mer 27 Avr 2011 - 10:54

Pour la simplification maximale, tu peux créer un fichier texte regroupant les bloques de 200* 200 * 200 d'une endroit puis le groupe à coté.
Un peu comme Minecraft mais en plus rapide.
Si j'ai bien compris, le plus long c'est D'ouvrir les et fermer un fichier(et le trouver) une fois fois fait ca prend presque pas de temps lire dedans.

_________________

Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
Chulien
Utilisateur confirmé: Rang *****
avatar

Messages : 2202

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Mer 27 Avr 2011 - 11:18

C'est ce que je pensais faire au début, en binaire maintenant que j'y arrive. Sauf que tu les nommes comment tes fichiers ? avec les coordonnées xyz ? par exemple "-2_4_-10.dat" ?

Pourquoi tu dis plus rapide que Minecraft, c'est particulièrement lent ?

_________________
anciens projets
Revenir en haut Aller en bas
http://sites.google.com/site/chuliendev
Termite
Utilisateur confirmé: Rang ****
avatar

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Mer 27 Avr 2011 - 12:11

Chulien a écrit:
C'est ce que je pensais faire au début, en binaire maintenant que j'y arrive. Sauf que tu les nommes comment tes fichiers ? avec les coordonnées xyz ? par exemple "-2_4_-10.dat" ?

Pourquoi tu dis plus rapide que Minecraft, c'est particulièrement lent ?
Pour de la 2D j't'aurais conseillé d'écrire la taille dla map, puis à chaque fois l'ID des block (00 -> pas de bloque) ensuite via une fonction mod tu recompose ta map.
Maintenant, en 3d.. ptet écrire directement comme ça :
ID du block ; x ; y ; z (4 B / blocs donc) et ensuite tu multiplie ton résultat par la taille du block pour recomposer ta map en 3d

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Chulien
Utilisateur confirmé: Rang *****
avatar

Messages : 2202

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Mer 27 Avr 2011 - 14:50

3D

Mais ca risque de prendre du temps de parcourir les fichiers...

_________________
anciens projets
Revenir en haut Aller en bas
http://sites.google.com/site/chuliendev
Wargamer
*Excellent utilisateur*
avatar

Messages : 6936
Projet Actuel : Bataille de cake au fruits

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Mer 27 Avr 2011 - 15:20

C,est vrai que GM a pas une super gestionnaire de fichier
En théorie, tu fait que mettre x,y et z de chaque bloc un après les autre.
comment retrouvé l'ID du bloc? Tu peux pas.
Tu charge le bloque à la position voulu(exemple tu est à 30,40,24, tu charge le bloque à 30 + 40 * 200 + 24 * 200 * 200, le tout multiplier par la taille des données en octets)

par contre sous gm...

_________________

Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
sachem
­Capitaine Star


Messages : 15495
Projet Actuel :


MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Mer 27 Avr 2011 - 16:52

ben vu que tes blocs sont aligné sur une grille, les stocker ne sera pas une tache très difficile ni très gourmande en ressource.
tu pourra même en stocker plusieurs sur un seul octet.

_________________
Revenir en haut Aller en bas
http://host-a.net/u/shm31/
Termite
Utilisateur confirmé: Rang ****
avatar

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Mer 27 Avr 2011 - 16:57

Bah le mieux à faire c'est une grosse loop for de tout tes block, ils sont attaché sur une grille donc suffit de faire ça :

file_bin_write_byte(file,instance_number(block) &$FF)
file_bin_write_byte(file,instance_number(block) &$7F)

for(i=0;i<instance_number(block);i+=1)
{
_block = instance_find(block,i)

file_bin_write_byte(file,_block.type)

file_bin_write_byte(file,_block.x/16)
file_bin_write_byte(file,_block.y/16)
file_bin_write_byte(file,_block.z/16)
}

ensuite à la lecture tu lis le nombre de blocks qu'il y a, pis ensuite tu recharge en multipliant les résultats par 16 (type définira le type, genre 0 c'est dla terre, 1 de l'herbe, et,etc)

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Chulien
Utilisateur confirmé: Rang *****
avatar

Messages : 2202

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 29 Avr 2011 - 7:56

Et en SQL, quelqu'un est au courant ? snowm

_________________
anciens projets
Revenir en haut Aller en bas
http://sites.google.com/site/chuliendev
Fogiax
Très bonne participation
avatar

Messages : 159

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 6 Mai 2011 - 15:39

Si tu arrive à gérer un tableau a 3 dimensions en sql t'est balaise ^^

Si le minecraft originale utilise des fichier plutôt qu'une base sql c'est pour la bonne raison qu'il est plus rapide d'aller chercher dans des petits fichiers que dans une base de données (qui serais j'imagine externe au serveur dans ce cas, entrainant une connexion> lent).
De plus les fichier peuvent être manipuler beaucoup plus facilement (utile pour sauvegarde, compression ect)

Un moyen simple est de nommer les fichier de stockage de la carte par le sommet x y z.
Par exemple 0,100,200.txt représente le bloque qui contient les infos sur 0>100 en x 100>200 en y 200>300 en z.

Pour trouver dans quelle fichier se trouve certaine coordonnée il suffit de prendre le coordonnée voulut et les aligné par tranche que le fichier supporte
Par exemple les coordonnée 150,0,200 :
pour x : 2 > 150/1000 < 1 donc le x est entre le fichier 100 et 200 et comme le fichier commence stock par incrémentation les coordonnées se trouve en 100,y,z.txt
En GML sa peut donnée quelque choses comme :

Code:
// scr_position_to_file(x,y,z)
var _x,_y,_z;
_x=floor(argument0/100)*100
_y=floor(argument0/100)*100
_z=floor(argument0/100)*100
return string(x)+","+string(y)+","+string(z)+".txt"

Pour la gestion de fichier avec game maker,

Tu peut le faire en binaire, mais les fonctions file_bin de game maker sont très lente en comparaison des DLLs :
http://gmc.yoyogames.com/index.php?showtopic=311201
http://gmc.yoyogames.com/index.php?showtopic=393301
http://gmc.yoyogames.com/index.php?showtopic=359853
http://gmc.yoyogames.com/index.php?showtopic=405796

Pour minimiser la taille des fichier tu peut utiliser plusieurs sorte de compression, il y a longtemps j'avais fait un benchmark de toute les dll de compression compatible avec game maker et la plus rapide est Tar DLL de loin (du genre 78ms pour 10mb et le 2ème était a presque 400ms). Je me souvient aussi que l'exemple de cette dll avec un problème facilment corrigeable concernant une fonction (il on peut être corriger depuis)
Il y en a aussi plein d'autre tu peut faire un tour sur http://www.gmtoolbox.com/

Oula j'ai bien écrit moi --'
Bon je m’arrête là, bonne continuation.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8883
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 6 Mai 2011 - 15:58

A la place de floor(argument0/100) on peut directement faire argument0 div 100

En tout cas ouai je verrais les choses a peu prés de cette façon aussi, mais pas en gml par contre :p

_________________
                 
Revenir en haut Aller en bas
Fogiax
Très bonne participation
avatar

Messages : 159

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 6 Mai 2011 - 16:12

pas faut pour le div 100.
Si tu t'emmerde t'a cas faire la DLL xD
En ce qui me concerne, en application windows je connais que le gml *honte honte* (je sais c'est bon juste pour les noob parceque sa ram trop et que c'est super-megaèhyper assisté mais que voulez vous, j'aime game maker ^^)
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8883
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 6 Mai 2011 - 16:37

C'est juste que t'as eu la flemme de faire le premier pas. Perso j'avais la flemme de me mettre au C++ mais le jour ou j'ai commencé j'ai pas pu m’arrêter xD
Enfin un conseil, essaye le C++, et si tu aime vraiment le gml je suis en train de faire une librairie gml en C++, t'a qu'a faire un tour du coté de µDev++. D'ailleurs quand ce seras suffisamment avancé je mettrait tout en opensource

_________________
                 
Revenir en haut Aller en bas
Fogiax
Très bonne participation
avatar

Messages : 159

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 6 Mai 2011 - 17:03

(J'ai la flemme de faire le premier pas surtout parce que l’an prochain je vais voir sa en cour, 17h d'informatique par semaine xD )
Elle a l'aire sympa ton appli j’irais poster sur le topic mais cette discutions n'a pas trop sa place ici ^^


Quand au problème SQL je me suis planté, c'est facilement réalisable le problème va être le temp pour trouver un bloque ou en editer un vue la taille qu'auras la base, je me pencherais la dessus peut être ce soir ou demain.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8883
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 6 Mai 2011 - 17:08

oui.
En tout cas le problème de ce système ce seras pour l'affiche des 'blocs' de cube lointains.
Faudrait générer un modèle 3d quand on quitte un 'bloc' histoire d'optimiser. Par contre la génération du modèle ne seras pas une mince affaire, surtout que logiquement vaux mieux ne garder que ce qui est visible (genre si y a un trou a l’intérieur on s'en fou) et ne pas avoir deux vertex au même endroit quoi. De plus utiliser des quad au lieu de triangle serais plus rapide.

_________________
                 
Revenir en haut Aller en bas
Fogiax
Très bonne participation
avatar

Messages : 159

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 6 Mai 2011 - 18:10

http://gfrung4.webs.com/minecraft%20example%20gm7.gmk

Tu prend cette exemple, et comme tu l'a dit il faut enlever les faces objet cacher dans le model, je m'étais amuser a le faire et les fps reste correcte même avec de gros modèle.

En ligne la galère doit être le transfert de la carte.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8883
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 6 Mai 2011 - 18:15

Bah tu la compresse avant le transfert. Ce genre de structure a un bon taux de compression normalement.

_________________
                 
Revenir en haut Aller en bas
Fogiax
Très bonne participation
avatar

Messages : 159

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Lun 9 Mai 2011 - 20:08

Sa doit saturer rapidement au niveau du serveur, si chaque joueur doit rafraichair la carte dès qu'il change de position :/
Revenir en haut Aller en bas
Chulien
Utilisateur confirmé: Rang *****
avatar

Messages : 2202

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 13 Mai 2011 - 9:52

Salut,

j'avais pas vu que quelqu'un avait répondu !

Pour la lenteur de la base de données, en fait j'ai entendu dire, ce qui me semble évident, que SQL Server ou autre sont optimisés pour ça. C'est peut-être un veau en apparence, mais faut pas le prendre pour un ***. Après, optimisés jusqu'à quel point?.... je crois qu'il faut que j'essaie c'est tout. (La base serait locale au serveur)

Pour l'histoire des modèles d'objets distants, j'y ai réfléchi (en pensant à GTA et aussi Windwaker, quand on voit les iles au loin avec la lunette, mais bon, c'est une map prédéfinie après tout...). Mais à vrai dire je ne m'en soucie pas pour le moment, même si c'est très intéressant.

Pareil pour la compression des fichiers, j'ai l'impression que ça ralentirait l'exécution, sauf si je crée un dossier temp contenant tous les fichiers décompressés. M'enfin. Les dll qui accélèrent l'écriture en binaire, en revanche, ça m'intéresse.

_________________
anciens projets
Revenir en haut Aller en bas
http://sites.google.com/site/chuliendev
onilink_
Modérateur
avatar

Messages : 8883
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 13 Mai 2011 - 9:55

Y a certains algo de compression qui ne demandent aucun temps et on un taux assez bon pour ce genre de données.
Faudrait tester le RLE qui est très rapide.

_________________
                 
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
avatar

Messages : 7369
Localisation : Essonne

MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   Ven 13 Mai 2011 - 22:19

le RLE pour minecraft, à mon avis, ça reviendrait à rien si la map est bien construite (par contre, sur une terre vierge, ça compressera très bien).
Mais si tu essaye de compresser une colonnade, bin ça va pas être top.
Quoi que...

Mais le mieux, c'est un petit coup de 7Z, et hop, on envoie.

Par contre, je pense que sur ton serveur, il vaut mieux qu'elle soit décompressée.
Et compressée ou non, il te faut des "chuncks" pour éviter de charger toute la carte à chaque connexion.

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
l'antique http://www.membres.lycos.fr/thedarkminousite/
Bienvenue au 2509eme utilisateur : geantvert123 !
Revenir en haut Aller en bas
http://www.membres.lycos.fr/thedarkminousite/
Contenu sponsorisé




MessageSujet: Re: Minecraft-like - stocker les données - SQL ou autre   

Revenir en haut Aller en bas
 
Minecraft-like - stocker les données - SQL ou autre
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Minecraft-like - stocker les données - SQL ou autre
» Stocker des données sur le web?
» Comment récupérer base de données d'un autre hébergeur pour transférer mon forum sur forumactif?
» Perte de données
» acces et base de donnée works

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: