JeuWeb - Crée ton jeu par navigateur
Bien le bon jour. Création d'un RPG par Naviguateur - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Bien le bon jour. Création d'un RPG par Naviguateur (/showthread.php?tid=3078)

Pages : 1 2 3 4 5 6 7 8


Bien le bon jour. Création d'un RPG par Naviguateur - Webcc - 22-09-2008

Bonjour, je me permet de vous contacter afin de vous poser une question, je suis actuellement en train de créer un jeu, et je me rends compte d'une chose :

Que mon cahier des charges n'est pas adaptable à mysql,

alors je me pose une question,comment puis-je faire pour gérer la quantité énorme de données que possède un membre, j'ai envisagé de mettre un membre par table, or cela ne suffit vraiment pas, je ne possède qu'un petit hébergement a 150 euros par ans j'ai déjà mis en place un moteur ajax ( tempes reel ) pour Postdater tous les membres ( tables ), or franchement, mysql ne me suffit pas, je pose alors la deuxième question,auxquels je l'espère vous saurez répondre :

Les comment font les sociétés telles que Gameforge pour stocker les membres, car vu la quantité de donnée par memrbes, cela me parait probable qu'une table par membre ne suffise pas, une base de donnée par membre?

Si des gens sont intéresses par la création d'un jeu sous Ajax
( Je suis autodiatcte, et capable de tout coté programmation
Php /Json / Ajax , il ne me manques que quelques lacunes en effets et design)

Je pensais :

Une table pour les membres (id ; pass; pseudo).
Une table pour les recherches ( Rechershe Vs Levels )
Une table pour les batiments. (Temps construction par defauls Vs Levels )
Une table pour la map (Coordonnées ; Nom_joueur ; Nom_ville )

Et une table pour chaque membre, contenant les ressources du membre, les temps de constructions restants et les lvl de ces batiments

Comme cela cela fonctionne bien, mais je trouves pas ça pratique

Cela fonctionne bien, coté serveur j'ai crée un moteur ajax d'actualisation, prenant en compte les ressources produites par le membre (Comparaison entre les lvls des batiments du membre et la table tabiments, ce qui fait une auto-incrémentassion des données produites par chaque membres.

Après cela, j'ai crée en javascript un petit moteur, qui fait croire coté client que c'est de l'ajax, mais c'est en fait, uniquement une simulation, pour éviter les requêtes serveur. La donnée augmente simulé, mais l'ajax fonctionnant, si il actualise, l'ajax fonctionnant derrière, bien on croit a du temps réel.

Je crée ce jeu dans le style de ceux de Gameforge, que j'ai connu, justement en cherchant si mon type de jeu existait déjà, et ma déception fut énorme, enfin bon, contactez moi sur mon site, je réponds rapidement grâce à Plugoo Msn

Ps : Envisage de monter ma société si projet démarrant rapidement.

Alors à votre avis qu'est le mieux ?

des tables in changeables et une table par membre, ou une base de donnée par membres ?

Merci d'avance

WebC&C.com


RE: Bien le bon jour. Création d'un RPG par Naviguateur - Cartman34 - 22-09-2008

Je ne pense pas que tu es besoin de faire une table par membre ou une base de données par membre, tu perdrais des ressources inutilement.
Généralement la carte est commune a tous les joueurs, alors il te faut mettre tout dans la même table.
Si tu fais un jeu où c'est "chacun pour sa poire", alors oui tu dois faire une table MAP par joueur mais pour la simple raison que ce sont des données ayant la même structure et que tu sais que tu en auras beaucoup, leur gestion devient plus pratique et rapide pour MySQL (qui gère bien les masses de données).
Faudrait que tu nous en dises un peu plus sur ça:
"Une table pour les recherches ( Rechershe Vs Levels )
Une table pour les bâtiments. (Temps construction par defauls Vs Levels )"

A mon avis, MySQL gère très bien ce que tu veux mais tu ne sais pas encore comment t'y prendre, ca arrive, on est aussi là pour te conseiller.
Mais perso, il me faut plus d'infos ! (Au lieu de papoter sur la GF...)

Et si tu as un hébergement mutualisé, 150euros c'est très cher !!! Le mien ne coûtant que 26 euros (18+8) et faisant parti des meilleurs mutualisés du marché(en fait j'ai pas trouvé mieux m'enfin...).


RE: Bien le bon jour. Création d'un RPG par Naviguateur - pascal - 22-09-2008

il y a probablement un problème dans le nombre d'accès à la base, à toi d'en dire un peu plus pour qu'on puisse t'aider...

une table par membre, bof bof, une table pour quelques centaines de membres, pourquoi pas, mais seulement si l'optimisation "normale" a déjà eu lieu. cf : http://nettuts.com/articles/10-principles-of-the-php-masters/ le point N°2

A+

Pascal


RE: Bien le bon jour. Création d'un RPG par Naviguateur - Webcc - 22-09-2008

Bien le bon jour du lundi ...

Pour vous expliquer, le jeu possédant une map, qui lirait dans quaque tables les coordonnées de tous les membres, cf un membre ayant
cood_x : 1
cood_y : 10
Autre chose, un membre possédant des vaisseaux spaciaux préalablement crées, pour éviter des débordements et / ou hacks ( comparé a une table par défault )

En fait, j'ai crée des modules,

Un pour l'actualisation des ressources en ajax coté serveur.
Un pour la simulation de production de ressources coté client.
Un précisant les consommations en ressources (les militaires consommant de la nourriture...

Autre chose : pour que le membre possède des vaisseaux, sois je les crée dans la table membre avec les coordonnées de chaque vaisseaux, sois simplement, je crée une table des vaisseaux, et le ne fais que préciser le nombre que possède le membre, le problème c'est qu'il y ait des délais de déplacement de vaisseaux, franchement, une table par membre, c'est beaucoup plus facilement gérables.

Voila un exemple, j'ai crée des relations entre chaque cellules, comme sa cela fonctionne assez bien, mais je ne pense pas que ce soit l'idéal, car des select, je commence a en avoir un peu trop pour chaque membres.


[Image: fond.JPG]

Les maximums des militaires par exemple étant calculés par comparaison d'une table par défaut de consommation de troupe, je sent que je vais etre obligé de les mettre dans les batiments, je suppose, et updatés quand le membre monte un batiment, enfin, simplement, si quelu'un pourrait me montrer un exemple de table sa serait super...

Et comment vous dire, plutot que faire une grande ligne pour le membre, j'ai trouvé plus pratique de corréler les donnes du haut du membre., car sinon citer nombre de vaisseaulvl 1 nombre de vso lvl 2 etc nombre de soldats 1 nombre de soldats 2 bref sa me ferait une grande ligne de disons 50 données, et je trouve cela trop important, et absolument pas pratique, enfin à vous de si possible me trouver meilleure solution.


RE: Bien le bon jour. Création d'un RPG par Naviguateur - Cartman34 - 22-09-2008

Webcc a écrit :[...] une table par membre, c'est beaucoup plus facilement gérables.[...]
:omg: Qu'est ce qu'il faut pas lire...Chui pas vache, je m'explique quand même ^^
Ca semble totalement inutile ici...Ce n'est vraiment que pour des cas particuliers...
Tu crois que c'est le seul jeu avec des déplacements d'unités, de flottes ou autres ?
Avec une table commune à tous, tu enregistres l'ID du propriétaire, les coordonnées de départ, de destination, l'heure de départ (ou d'arrivée), le temps de vol, les ID des unités et leur nombre et autres si besoin...

Je suis aussi choqué que tu enregistres la production des batiments !
C'est inutile et tu risques plein de failles !
Une fonction calculant la production en tant réelle est beaucoup mieux car en général ce n'est pas lourd(et puis même...).
Pour la conso, c'est pareil.

Quant à ta table membre, beaucoup sur ce forum plussoient ce système, personnellement je trouve ça très lourd vis à vis des UPDATE(il a été testé que ce système est plus lourd qu'une seule entrée avec énormément de champs). A mon avis avec des sessions, tu peux limiter énormément le nombre de tes requêtes (SELECT...)

N'oublies pas de jouer avec les différents moteurs MySQL (innoDB, MEMORY...etc)


RE: Bien le bon jour. Création d'un RPG par Naviguateur - Webcc - 22-09-2008

Merci de ta réponse, le souci étant que je souhaiterai simplement éviter une seule ligne, comment t'expliquer, la production des batiments est dans une autre table, je voulais pouvoir la modifier pour des comptes premiums, enfin comment dire, une ligne par membres, sa en fait des colonnes, c'est ainsi que font les grosses entreprises pour cela,

La production, tu te trompes, elle est calculé en temps reel et updaté en temps reel dans un petit moteur ajax, saches le, je débute,

et je suis seul ...

Je pense pas que même a Gameforge une seule personne puisse créer un jeu seul, mais je tente quand même...

Puis, pour la production des ressources le calcul est fait ainsi :
On va chercher
-- select dans table du membre {


$variable1 = le nombre de ressource actuelles
$variable2 = le level du batiment

select_interne dans le batiment concerné {

$variable3 = production au level trouvé du membre
$variable4 = lecture de la production a ajouter
}
$variable a updater = $variable1+$variable4
}

apres, c'est une lecture en boucle en ajax avec un setinterval

Du coté client par contre
c'est une simulation, donc les données ne sont pas mises a jour en temps reel, il afiche et simule, si il fait F5, il reprend les nouvelles données et simule, seul le moteur lui fonctionne, je pense que le seul moyen serait de vous le montrer, je vais le mettre en ligne


Voici le moteur ajax mis en affichage uniquement,
j'ai restreint pas mal de fonctions pur éviter des manipulations extérieures à moi-même.

Site Web

De plus, pour le moment,

Je suis chez 1 and 1, j'ai le pack Pro Standart a 11€95 par mois

Mon projet aboutira, Le mon but n'étant pas de le laisser dans l'oubliette, peut-ête que des droles d'oiseaux vous en voyez passer, à coté de ces oiseaux, je suis un aigle, pas royal, mais un aigle quand même
( Wink fallait que jfasse de l'ironie)
J'ai :
Espace disque :10 Go
Trafic/mois 1 000 Go
Sous domaines : 2 500
Bases de données : 20

Donc voila, je souhaitais savoir comment font les grosses entreprises, si c'est une table par membre, ou une base de donnée par membre, car quand je vois certains jeux, je me rends compte que une seule ligne, sa ne suffit pas, même avec 50 colonnes.

Et coté sécurisation et retouche du code php, j'ai un ami que je verrai à la fin, du projet car il est très occupé, et bosser avec lui qu'un jour par semaine m'intéresse pas, là je suis seul et c'est très bien, je retoucherai avec lui a la fin car il est disons nous, beaucoup plus doué que moi.


RE: Bien le bon jour. Création d'un RPG par Naviguateur - Zamentur - 22-09-2008

Bon j'ai comme l'impression que tu as besoin d'être guidé pour éviter que ta bdd soit complétement bizarre...

Pour la table batiments_prod, en fait ce contenue devrais faire l'objet d'un fichier de réglage et non d'une table. Un array pourrait par exemple faire l'affaire.
Sauf si les coef change fortment (toutes les heures par exemple), ou que tu as un nombre de level important (plus de 100)

Pour la table consommations_troupe, j'ai la forte impréssion que ce qui devrait être des collones et une ligne et inversement... Il faut "pivoter" cette table de 90°.
Ainsi tu aurais les collones: id, nom, attaque, defense, consommation etc...
Si certaine schoses sont particuliere à certaines unité rien ne t'empeche de faire une table annexe pour un type d'unité.

Mais là aussi j'ai l'impression que cette table est une table de réglage et qu'elle devrais etre en fichier en dehors des 2 conditions déjà cité sur la table précédente.


Pour la table membre pas le temps de commenter


RE: Bien le bon jour. Création d'un RPG par Naviguateur - Webcc - 22-09-2008

Zamentur a écrit :Bon j'ai comme l'impression que tu as besoin d'être guidé pour éviter que ta bdd soit complétement bizarre...

Pour la table batiments_prod, en fait ce contenue devrais faire l'objet d'un fichier de réglage et non d'une table. Un array pourrait par exemple faire l'affaire.
Sauf si les coef change fortment (toutes les heures par exemple), ou que tu as un nombre de level important (plus de 100)

Pour la table consommations_troupe, j'ai la forte impréssion que ce qui devrait être des collones et une ligne et inversement... Il faut "pivoter" cette table de 90°.
Ainsi tu aurais les collones: id, nom, attaque, defense, consommation etc...
Si certaine schoses sont particuliere à certaines unité rien ne t'empeche de faire une table annexe pour un type d'unité.

Mais là aussi j'ai l'impression que cette table est une table de réglage et qu'elle devrais etre en fichier en dehors des 2 conditions déjà cité sur la table précédente.


Pour la table membre pas le temps de commenter
J'ai pas compris grand chose mais ...
J'ai regroupé "ressources" pour les ressources produites et la consommation des soldats, pour éviter de répéter, sachant que je redevrai refaire un select de toute façon, de cette façon je fais autant de select, mais c'est plus lisible pour moi...

Comment t''expliquer plus CLAIREMENT, les données changent toutes les secondes ! les ressources sont faites par le moteur ajax, docn les données changent fortement, sinon pour les données, comment faire un tableau dans un fichier, j'ai envisagé le Xml coté client, mais cela ferait plus lourd non ?

Pour les colonnes / lignes, je préfere, j'envisage de rajouter des module plus tard avec des types de boucliers (coques ) etc ... donc rajouter en ligne c'est donc plus pratique, sachant que mon moteurfonctionnant ainsi il y a en tout 8 select 4 pour les ressources + 4 internes, disons qu'en ligne c'est plus pratique, pour le regroupent de "" ressources, ce n'est pas possible en ligne, alors qu'en colonne si, enfin mon système a besoin d'un cas particulier.

Puis j'aime bien le "type = consommation", cela me permet de parler francais (inversion de mots anglais francais
Do | you ?
|| | ||
Vous | voulez ?
).

Select table type = where
c'est bizarre, mais vu comme ça c'est plus hiérarchique.

Enfin, c'était juste pour savoir comment fonctionnaient les gros jeux, visiblement c'est en ligne... ?


RE: Bien le bon jour. Création d'un RPG par Naviguateur - pascal - 22-09-2008

tu devrais lire ce sujet :
http://www.jeuweb.org/board/grosse-s-table-s-nouveaux-elements-t-4476-3.html

en gros :
- tu charges en session les taux de productions et les stocks actuel du joueur, ainsi que l'heure de dernière mise à jour
- lorqu'il y a un refresh de la page, tu calcules les stocks via les données en session, sans faire de select ou d'update en base de données
- lorsqu'il y a une dépense de ressources ( achat, pillage ...) ou un changement de taux de production, tu recalcules et mets à jour les stocks en base de données

c'est l'idée de base, à adapter. ton serveur souffrira moins.

A+

Pascal


RE: Bien le bon jour. Création d'un RPG par Naviguateur - Webcc - 22-09-2008

Ce que tu n' as pas du comprendre, c'est que c'est pas le membre qui calcule ces ressources, mais mon moteur ajax, étant protégé, personne ne pourra tricher, simplement, et cela me permet de modifier des données rapidement, sans problèmes.

Le seul souci actuellement que je rencontre, c'est que je voulais savoir si je devrai toujours faire en ligne ?


Citation :Normalement, cela ne sert à rien de séparer une table en différentes tables plus petites, juste parce que vos lignes deviennent grosses. Pour accéder à une ligne, le plus long est le temps d'accès au premier octets de la ligne. Après cela, les disques modernes vont lire très rapidement la ligne, et suffisamment pour la plus par des applications. Le seul cas où cela peut être important est si vous êtes capables de dégager une table à format de ligne fixe (voir ci-dessus), ou si vous avez besoin de scanner régulièrement la table, mais que vous n'avez pas besoin de toutes les colonnes. See Chapitre 14, Moteurs de tables MySQL et types de table.

J'arrive a dégager en ligne, c'est ce que je fais, mais je suis aps sur que ce soit l'idéal, c'est pourquoi je demande, lol et on me dit qu'en ligne c'est mieux hum ..

A ce que je comprend, mon fonctionnement est le mieux, mais je lis pas toutes les lignes, puis je vais garder mon système, au lieu de lire deux lignes avec un select, je lis un select avec deux colonnes, sa ne change qu'une chose, je ferais plus d e select, enfin les connexions internet devenant plus stables et ayant de plus grands débits, je pense rester comme cela...

Mais j'ai pas eu trop ma réponse, les grands jeux sont faits comment à votre avis ?