[CF-RS] Recueil d'avis - Sauvegarde régulière et optimisée du Serveur vers la BDD
Publié : 02 Juil 2018 11:20
Bien le bonjour !
Dans le cadre d'un projet de MMORPG d'un studio sur lequel j'interviens, je voudrais collecter quelques avis sur une problématique particulière : Celle de la sauvegarde des données du serveur vers la base de données.
Tout d'abord, voici l'état du projet actuel :
Ce qui est actuellement fonctionnel
Actuellement, nous avons déja un serveur et un client fonctionnel : Les joueurs peuvent se connecter, se déplacer, voir les autres clients, s'equiper , se désequiper, voir les parties d'inventaires abandonnées par d'autres joueurs, ouvrir/fermer des portes...
Lorsqu'un joueur se déconnecte, et se reconnecte, il reviens dans l'état ou il était lors de sa dernière connexion, et vois le reste de la map a jour (les portes ouvertes sur le serveur sont bien ouvertes pour lui, les personnages sont équipés comme de leur côté, ect...)
Nous avons également déjà conçue et hébergé une base de donnée avec toutes les tables correspondant aux données que nous souhaitons sauvegarder.
La problématique
La problématique est la suivante : Une fois que le serveur est éteins, si on le rallume, tout est réinitialisé. Il nous faut donc envoyer régulièrement des informations vers cette base de donnée en question.
Cependant, je me vois mal requêter la base a chaque frame côté serveur chaque fois qu'un personnage bouge d'un millimétre, et ce multiplié par le nombre de joueur.
Il me faut donc trouver une solution pour mettre en place un système de sauvegarde régulier en sauvegardant le plus d'informations possibles, et ce de manière optimisé afin de ne pas bombarder continuellement la base de requêtes.
Pour cela, j'ai déjà envisagé quelques solutions
Les solutions envisagées
Ce que j'ai envisagé de mettre en place, c'est donc une API en PHP faisans le lien entre le serveur et la BDD, avec un cycle de sauvegarde régulier. Au moment de cette sauvegarde, toutes les infos necessaires sont envoyés sur cette API (Position des joueurs, leurs caracteristiques, des monstres, contenu des inventaires, items positionnés sur la Map ect...)
La ou j'ai besoin d'avis
- Pensez vous que cette première solution envisagée est viable ? Si oui, quelle fréquence serait adaptée ?
- Toujours concernant la solution envisagée, comment faire si jamais le serveur s'eteins pour X raison hors du temps de sauvegarde ? (c'est a dire, sauvegarder au moment de l'extinction, décidée ou non ).
- Avez vous en tête une meilleure solution à proposer plus adaptée à la situation ?
Voila, c'est a peu prés tout
Je remercie d'avance tous ceux qui voudront bien participer a cet échange d'avis !
Dans le cadre d'un projet de MMORPG d'un studio sur lequel j'interviens, je voudrais collecter quelques avis sur une problématique particulière : Celle de la sauvegarde des données du serveur vers la base de données.
Tout d'abord, voici l'état du projet actuel :
Ce qui est actuellement fonctionnel
Actuellement, nous avons déja un serveur et un client fonctionnel : Les joueurs peuvent se connecter, se déplacer, voir les autres clients, s'equiper , se désequiper, voir les parties d'inventaires abandonnées par d'autres joueurs, ouvrir/fermer des portes...
Lorsqu'un joueur se déconnecte, et se reconnecte, il reviens dans l'état ou il était lors de sa dernière connexion, et vois le reste de la map a jour (les portes ouvertes sur le serveur sont bien ouvertes pour lui, les personnages sont équipés comme de leur côté, ect...)
Nous avons également déjà conçue et hébergé une base de donnée avec toutes les tables correspondant aux données que nous souhaitons sauvegarder.
La problématique
La problématique est la suivante : Une fois que le serveur est éteins, si on le rallume, tout est réinitialisé. Il nous faut donc envoyer régulièrement des informations vers cette base de donnée en question.
Cependant, je me vois mal requêter la base a chaque frame côté serveur chaque fois qu'un personnage bouge d'un millimétre, et ce multiplié par le nombre de joueur.
Il me faut donc trouver une solution pour mettre en place un système de sauvegarde régulier en sauvegardant le plus d'informations possibles, et ce de manière optimisé afin de ne pas bombarder continuellement la base de requêtes.
Pour cela, j'ai déjà envisagé quelques solutions
Les solutions envisagées
Ce que j'ai envisagé de mettre en place, c'est donc une API en PHP faisans le lien entre le serveur et la BDD, avec un cycle de sauvegarde régulier. Au moment de cette sauvegarde, toutes les infos necessaires sont envoyés sur cette API (Position des joueurs, leurs caracteristiques, des monstres, contenu des inventaires, items positionnés sur la Map ect...)
La ou j'ai besoin d'avis
- Pensez vous que cette première solution envisagée est viable ? Si oui, quelle fréquence serait adaptée ?
- Toujours concernant la solution envisagée, comment faire si jamais le serveur s'eteins pour X raison hors du temps de sauvegarde ? (c'est a dire, sauvegarder au moment de l'extinction, décidée ou non ).
- Avez vous en tête une meilleure solution à proposer plus adaptée à la situation ?
Voila, c'est a peu prés tout
Je remercie d'avance tous ceux qui voudront bien participer a cet échange d'avis !