Stokage des donnée des jeu MMORPG

Répondre
Partager Rechercher
Citation :
Provient du message de Moine Gourmand

Pour le format il y en a plein : odbc, mysql, oracle etc...
En général c'est sous Oracle ...... va savoir pourquoi
[XooM418 / Miyka`el > Veuillez tenter de répondre sérieusement à la question posée sur ce topic, ou ne floodez pas svp ...

Des sanctions pourraient être prises si cela continue comme c'est parti.]
Citation :
Provient du message de LoiczzZell
je voudrais connaitre l'interret de cette question si ce n'est pour pirater leur serveur et modifier les fiches persos ?
Je ne savais pas que tu avais certains talents de medium ?

Peut être le posteur l'a fait par simple curiosité de plus s'il avait l'intention de "pirater" un serveur il serait, à mon avis, au courant du format utilisé pour stocker les données !
Tutoriel sur MySQL avec Visual C++
Ca peut te donner une petite idée.

Dans DAoC, le code pour enregistrer que tu passes au niveau 50 ressemble à:
Code:
if (query.Format("UPDATE persos SET lvl='50' where perso_name='Zwein Heijar'") {
	message("DING !! Vous êtes au niveau 50 !");
} else {
	message("Erf !! Ya eu un merdouillage avec la bdd ! Vous retombez au niveau 0 :/");
}
Citation :
Provient du message de Zwein Heijar
lol qui est l'Elu alors ?
ce n'est pas une Blague
Oracle est le system de Base de Donné pouvant contenir le plus grande nombre d'entrée ..... et c'est l'un des plus fiable (voir le plus fiable).

En général de Grande Structure comme un MMORPG demande ce que l'on appelle des Table.. et en demande des énormes.....

Pour ma part une BDD de type Oracle me semble indispensable
moi je suis pas sur que cela fasse appel à une base de données classique de type oracle/mysql/sqlserver...

en effet, il y aurait tellement de requetes et autres...
à chaque fois qu'on se deplace, hop fo mettre à jour la ligne ?
pour le moindre truc fodrais faire des requetes de mises à jour, et ça, niveau performance, je ne pense pas que ce soit le pied

à mon avis, c'est géré de la meme façon que dans les jeux pas online, ils sont en mémoire ( Class Personnage ... ) et sont dans un gigantesque tableau /table de hashage

apres, sur le serveur, il y a ( au moins ) un thread par client, et du coup, dans ce thread il y a un pointeur vers l'objet personnage, et c'est donc tres facile et tres rapide de modifier des données dessus ( contrairement à un SGBD ou une mise à jour passerais par une recherche dans des milliers d'enregistrements, puis mise à jour, puis ecriture du nouveau fichier... )

ensuite, pour sauvegarder tout ça... ben comme tout, il y a la serialization... et c'est sauvegardé en binaire sur disque :-)
Citation :
Provient du message de XhaK

en effet, il y aurait tellement de requetes et autres...
à chaque fois qu'on se deplace, hop fo mettre à jour la ligne ?
La position du personnage doit être enregistrée lorsque l'on déco, sinon ça serait ingérable comme truc. (Enfin ce n'est que mon avis j'ai pas vérifié.)

Sinon pour des BDD comme DAoC je pense pas que Access soit assez puissant. Pourquoi pas un format propre à DAoC ?
XhaK a raison il est fort probable qu'il fasse tout maison et qu'il ce serve de Mysql ou de oracle pour une partie des donnés sinon je vous assure que sa fais des tonnes de requêtes pour pas grand chose foi de DEV...
Citation :
Provient du message de Lorim
ce n'est pas une Blague
Oracle est le system de Base de Donné pouvant contenir le plus grande nombre d'entrée ..... et c'est l'un des plus fiable (voir le plus fiable).


Oracle n'est pas fait pour traiter des tres grosses volumetries.
Quand au fait qu'il soit le plus fiable, ca c'ets leur pub à eux, pour bosser dans le domaine et avoir affaire a pas mal d'autres types de BDD, je peux t'affirmer que les bases oracles sont au moins aussi souvent down que les autres (et encore, on doit se limiter dans leur utilisation, car elles ne sont justement pas a meme de traiter des volumes de donnees auxquels on a affaire).


Pour en revenir au sujet, une base sous Oracle serait effectivement tout de meme plausible, meme si je pencherais plus pour une base sous SQL server, qui m'a l'air assez utilisé dans le domaine des jeux, a ce que j'ai pu voir a droite a gauche.
Enfin, pour ce qui est de la sauvegarde des donnees, elles ne sont pas constantes mais bien periodiques, toutes les X minutes on fait un dump dans la base des infos en memoire concernant le personnage, et pouf (il y a d'ailleurs un joli message "votre personnage a été sauvegardé" regulierement, a moins que ca aie sauté dans les ernieres versions, du moins ce message apparaissait quand je jouais encoe). Heureusement d'ailleurs

PS pour plus haut aussi : ODBC n'est pas un type ni un format de bases de donnees >_<
Objet perso le temps du jeu.

Je me connecte: on prend les infos dans la BDD et on construit l'objet perso.

Je bouge, je ding, je trouve un objet => on appelle la methode correspondante de l'objet perso.

Je deco: on rempli la BDD avec les infos du perso.

Ce qui explique qu'en cas de crash serveur il y'a des rollback, par securité toutes les 10-15-60 minutes on fait une sauvegarde de tout les persos. Mais c'est pas à jet continu.


Pour la BDD dans celles citées éliminez d'office Access et MySQL (nan mais serieusement vous y croyiez vraiment ?).
On peut garder Oracle, SQL server (seul bon produit sorti de MS) ou encore un AS400 qui est la base de données la plus solide au monde.

Après ça depend des boites: Les jeux etroitement liés à MS doivent probablement utiliser SQL server.

@Ameno
Citation :
if (query.Format("UPDATE persos SET lvl='50' where perso_name='Zwein Heijar'") {
UPDATE persos SET lvl='50' where perso_id='012015'
plutôt comme ça.

@Lorim
Citation :
En général de Grande Structure comme un MMORPG demande ce que l'on appelle des Table.. et en demande des énormes.....
Moui des tables pour gerer 5000 personnes c'est pas la fin du monde non plus.
Pour T4C c'est du .mdb donc de l'ACCESS.
Pour Ultima Online (émulateur Sphère) c'est du fichier texte structuré.

Mais ca reste des jeux à faible fréquentation ils peuvent donc ce permettre de la BDD bas de gamme de chez Mirosoft ou du fichier texte ...

A mon avis les jeux très fréquentés utilisent des bases bien robustes style Oracle ... Ca reste néamnoins de la supposition
Daoc utilise mysql pour la base de donnée.

Source : http://www.gamasutra.com/features/20020213/firor_02.htm


Extrait :

Citation :
5. The joys of open source software and stability. Long ago, during the development of our early titles, we decided to use Linux wherever possible as our server back-end OS, and we kept to this same practice when creating Dark Age of Camelot. We have extensive Linux experience in-house, and it made sense for us to stay with a platform that we knew could handle the task and also was, well, free.

Because running Camelot would require a considerable amount of data management, we initially planned on using Oracle to store account and character information. However, Oracle's quoted license fee of more than $900,000 quickly removed them from contention. Once we got over our shock and amusement at Oracle's pricing, we turned to a Linux-based freeware solution, MySQL, to manage Camelot's data storage, which so far has worked admirably.
Peu ceux ce demandant combien une base de donnée de mmorpg peut bien peser, turbine a publié cette information pour Asheron's Call 1

Chaque base (une base par monde) pese plus de 13GB

Source : http://forums.ac.turbinegames.com/showthread.php?&threadid=6692


Extrait :

Citation :
After 4 ½ years of operation, these databases are fairly huge, over 13 gigabytes each
Citation :
Provient du message de Roen
@Ameno

UPDATE persos SET lvl='50' where perso_id='012015'
plutôt comme ça.
Evidemment...

D'ailleurs si tu vas par là ça serait plutôt perso_id='12015' que perso_id='012015'.
A moins que ton id soit une chaîne de caractères et non un int
A ma connaissance, la pluspart des MMOs utilisent 3 niveaux pour leurs bases (au moins pour le contenu, peut-être seulement 2 pour les persos/guildes) : une BDD classique exportée vers un fichier "à plat"(reproduction de la structure mémoire vidée sur disque) lut/écrit directement dans la mémoire. Le fichier à plat permet des accès disques bien plus rapides que des requêtes SQL.
Ensuite, ben chaque MMO a ses propres variations et ça peut beaucoup varier. Mais pour tout les gros MMOs ça serait trop lent de faire des requêtes disques à chaque update de perso, la sauvegarde n'est faite que périodiquement et à chaque déconnection/changement majeur/chargement de zone, comme l'explique Roen (EQ fonctionne de la même façon).
Citation :
Provient du message de Ameno le gnome
Evidemment...

D'ailleurs si tu vas par là ça serait plutôt perso_id='12015' que perso_id='012015'.
A moins que ton id soit une chaîne de caractères et non un int
Correction: perso_id=12015 (sans les quotes )

Je pense pas que les dévs de mmo (actuels) aient le temps et les ressources nécessaires pour créer leur propre SGBD propriétaires. En même temps les prix des licenses gros SGBDR comme O. coûtent une fortune par license, ça plus la bande passante du jeu... Je penche donc pour des solutions SGBDR intermédaires (type postgreSQL ou autre). Faut voir qu'en général un "serveur" de jeu c'est plusieurs serveurs (de service): login, objets animés, chat, zones de jeu, persistence, sauvegarde temp ... qui peuvent se trouver ou pas sur la même machine (dans le bon vieux temps oui) ou bien être eux-même clusterisés. Ce n'est pas parce qu'il y a deux cents personnages dans une même zone qu'ils seront sauvegardés en même temps.

De plus en général c'est bien pensé, on ne sauvegarde que ce dont on a besoin au moment où on en a besoin, et ce n'est pas aussi souvent qu'on pourrait le croire, ave des sauvegardes intermédaires avant la sauvegarde définitive, accompagnée de purges régulières. Ce n'est jamais la taille de ce qui transite dans un SGBD mais le nombre de transactions qui importe, d'où optimisations.

Un MMo qui m'a fait me poser la question c'est SWG et son système de craft, de gestion des objets, je me demande..

Pour T4C oui il paraîtrait qu'il utilisait Access (donc en son temps NT4 comme OS ), et ça expliquerait bien des choses ( > dégoûté du wipe de Harn I, entre autre < )...
Daoc utilise MySQL comme BDD ? Etonnant, qu'ils aient envisagé de prendre du Oracle (ils savaient pas que c'étaient cher ? ils sont stupides ou quoi ?) pour finalement se rabattre la dessus me fait un peu tilter D'autant qu'il existe une foultitude de solutions intermédiaires.

Sinon 13Gb pour près de 5 ans d'utilisation, c'est tout petit. Ils doivent faire des purges régulières ou alors ils ne stockent pas grand chose.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés