TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +

Flux RSS des discussions du forum : pour les joueurs, et pour les créateurs et MJ
  Reply to this topicStart new topicStart Poll

> Map Bdd Ou Gd ?, information sur les 2 modéles
Tatan
Ecrit le : Jeudi 23 Décembre 2004 à 18h52
Quote Post


Unregistered






D'abord bonjour a tous,



En parcourant les forums je me suis aperçu que les codeurs de jeux php utilisaient 2 technique pour leurs maps : la map BDD et la map GD

La map BDD consiste a enter case par case la map dans sa base de donnée, tandis que la GD si j'ai bien compris nous implique a crée une image qui sera notre map, pour aprés grace a des codes php annexer a chaque couleur une valeur (en bref 1 pixel serait une case de tel type en fonction de sa couleur).


J'ai bien compris le systéme de la map BDD, mais je voudrais que vous m'éclairiez un peut plus sur la seconde technique : comment l'utiliser ?


Je vous remerci d'avance pour vos prochaines réponses


Tatan
Top
zumba
Ecrit le : Jeudi 23 Décembre 2004 à 20h52
Quote Post


Ouf
*

Groupe : Membre
Messages : 496


A mon avis tu confonds 2 choses pour la map. Son stockage et son rendu.

- pour le stockage 2 techniques : en BDD ou en fichier binaire, le choix dépend de la valeur logique de chaque case. Si la carte est principalement visuelle, cad utilisée à + de 80% (on va dire) pour re présenter, dans ce cas choisis de la stocker dans un binaire, et tu ne crées des tables que pour stocker les éléments qui ont un intérêt au sens logique (bâtiment, unité). Plus rapide, plus économique, mais ca obblige à maintenir une corerspondance de tous les instants entre le stockage visuel (les binaires) et le stockage logique (bd). par exemple si une unité bougeil faut le répercuter dans la table et dans la carte. En revanche si a chaque case tu associes des valeurs logiques (quantité de ressources dessus par exemple), alors là stocke là entièrement en BD. (dans ce cas, j'ai vu un autre post qui discute de quel est le shéma de BD, mono ou multitable, le plus approprié selon ce que tu veux).

- pour le rendu : serverside (GDlib), ca veut dire que c'est le serveur qui fabrique une image repprésentant une partie de la carte à partir des données de la base ou du binaire, ces données sont associées à des sprites (=cases élémentaires composant la map) et ces sprites sont assemblés en une seule image grâce à la GDlib. Puis l'image est envoyée par le serveur au client qui l'affiche comme une image normale. L'autre technique c'est client side : là le puzzle est recomposé par le navigateur, grâce à flash ou javascript/css. C'est plus light pour le serveur, et ca peut limiterénormément les dialogues client/serveur si tu mets la carte en buffer côté client, par contre là aussi ca demande de bien synchroniser la carte côté client avec celle côté serveur, et c'est inadapté au temps réel (enfin pour autant qu'on puisse en faire), nécéssaire par exemple à un JDR.

sachant ca, à toi de voir le couple (stockage/rendu) qu'il te faut .
Hope it helps !


--------------------
Z
PMEmail Poster
Top
khiguard
Ecrit le : Jeudi 23 Décembre 2004 à 21h43
Quote Post


Ouf
*

Groupe : Membre
Messages : 732


non, je pense qu'il confond, mais il ne parle pas du binaire (pas utiliser comme toi) il parle d'utiliser une image pour sélectionner le terrain choisi.

3 facon de stocker ta carte :
-Il y a la base de donnée, qui te permet de changer le terrain a tout moment ou même par tes joueurs (c'est ce que j'utilise pour mon jeu)
- La manière d'une image, en sélectionnant une couleur qui determinera le terrain. Inconvéniant, les joueurs ne pourront pas changer quoi que ce soit, seul toi et en uploadant l'image modifier pourra changer qq chose. Son avantage: ca prend peut de place (juste celle de l'image). Je te conseil de contacter des WB utilisant ce genre de procéder pour en savoir plus. (perso j'aime pas car j'aime avoir un editeur online pour modifier directement une map)
- Le fichier binaire comme parle zumba. Il l'explique mieux que je pourrais le faire smile.gif

puis tu a 2 facon d'afficher ta carte:
-L'HTML tu fait des tableaux (ou des divs si tu veut poussez un peu le moteur) pour faire afficher la carte. Ca prend de la bande passante car il charge chaque image.
-LE GD, qui produit des image à la volée (la je peut te conseillé de trouver smiley war pour son moteur simple a comprendre). avec plusieur images tu créer ta carte suivant les informations de ta base de donnée. c'est lourd pour le serveur ce genre de procéder, et je te conseil de bien optimiser ton code sinon tu va ramer avec 3 joueurs sur ton jeu smile.gif

Voila, maintenant c'est a toi de choisir, si tu souhaite un stocage peut important, tu peut le fairte par une image, si tu te sens d'attaque par le binaire. Si tu veut imprimer ta carte en html ou avec la librairie GD qui la créera pour toi.
A toi de jouer.
@+
PS: oui il y a d'autre facon d'afficher (le flash) et certainement de le stocker (fichier) mais je reste centraliser pour ne pas le perdre smile.gif


--------------------
Alonya : Jeu de gestion/stratégie par partie.
Sombre Destin : Jeu de gestion/stratégie massivement multi joueur.
Antre du Cercle des Dragons Noirs: portail jdr | G-nerik: Système générique de jdr
PMEmail PosterUsers Website
Top
askywhale
Ecrit le : Vendredi 24 Décembre 2004 à 15h03
Quote Post


Pro
*

Groupe : Membre
Messages : 170


QUOTE
iconvéniant, les joueurs ne pourront pas changer quoi que ce soit, seul toi et en uploadant l'image modifier pourra changer qq chose.


Je ne suis pas d'accord (même si moi je passe par bd), une image est aussi facile à écrire qu'à lire. Elle a de plus l'avantage d'être très facile à créer au début. A mon sens là on a pour une fois une structure de donnée représentable très exactement dans la vie réelle, autant en profiter.
La méthode est donc :
- choisir les différents types de terrains (et autres : là il y a un mur, une ville, que sais-je)
- choisir les codes couleur correspondant (exemple complexe : le bleu de 0 à 255 représente l'altitude de 0 à 2550 mètres par tranche de dix mètres, le rouge sert à distinguer 256 types différents de terrain, et le vert je le garde au cas où)
- faire une carte sous psp / photoshop / gimp...
- creer l'interface entre le reste du code et la carte, pour cela le plus évident est l'utiliser la lib php gd qui peut lire et écrire une image (c'est à dire : transformer un fichier en tableau à 2 dimensions de valeurs et inversement)

on avait pas dit qu'on arreter de parler de dev sur ce forum ? laugh.gif


--------------------
PMEmail Poster
Top
Nonothehobbit
Ecrit le : Vendredi 24 Décembre 2004 à 17h34
Quote Post


Alien
*

Groupe : Moderateurs
Messages : 1298


Attention, si vous voulez jouer sur des nuances de 256 niveaux pour chaque couleur, il vous faudra utiliser des "gros" format. Du png 24 bit quoi (le jpg n'est pas utilisable à cause de la compression qui génère les erreurs et les autres formats sont trop lourd). Donc qui dit gros format, dit gros poids. Si vous gérez une grosse map ce n'est donc pas forcément la meilleure solution...


--------------------
user posted image
PMEmail PosterUsers Website
Top
Magauss
Ecrit le : Vendredi 24 Décembre 2004 à 18h27
Quote Post


Kid
*

Groupe : Membre
Messages : 12


et pourquoi pas du SVG(compressé) pour le rendu d'une carte?
PMEmail Poster
Top
gorgu
Ecrit le : Vendredi 24 Décembre 2004 à 18h40
Quote Post


Ouf
*

Groupe : Membre
Messages : 417


l'avantage de l'image est qu'elle permets de créer un rendu plus rapide si on utilises que GD... mais consomme enormement de memoire.

C'est une technique TRES utilisée pou les jeux en C ou C++, la carte est alors telechargée chez le client et c'est le client qui rends la scene.

Pour un serveur php cela est trés lourd (sisi j'ai testé) et limite rapidement les possiblités du jeu.

pour les scripts qui permettent d'utiliser cela, c'est assez simple, l'image représente ta carte tu a des getcolor(x,y) pour retrouver la case que tu cherches.

je penses que c un poil plus petit en taille de carte sur le disque du serveur mais beaucoup plus gourmand en ressources car tu chargera a chaque fois toute l'image.

ou bien il faut découper en images plus petites... mais bon... c'est bricolo je trouve.

Pour un jeu classique en ligne je penses que la bdd reste de loin la solution la plus stable, même si l'idée d'un terrain en image est seduisante (il est possible de sortir les joueurs et batiments a conserver en bdd et n'utiliser l'image que pour le terrain).



--------------------
enfin je crois ...
Adept JDR
PMEmail PosterUsers Website
Top
Tatan
Ecrit le : Samedi 25 Décembre 2004 à 19h27
Quote Post


Unregistered






Merci a vous tous pour vos réponses



Je vis pouvoir continuer ^^
Top
« Sujets + anciens | Programmer | Sujets + récents »

Reply to this topicStart new topicStart Poll