La terminologie MMO pour «rester dans un monde de jeu unique» est un fragment unique . EVE en ligne est le seul MMO majeur à tenter de bourrer chaque joueur en un seul fragment.
Heureusement pour vous, ils ont publié un article très instructif sur la façon dont ils le font.
(source: gamasutra.com )
Les mauvaises nouvelles. Vous ne pouvez pas appliquer les techniques d'EVE en ligne en général. Leurs solutions sont absolument adaptées à leur genre et à leur mise en œuvre.
REMARQUE : pour tout le réseau de tesson unique super sophistiqué d'EVE Online, ils utilisent une seule base de données. Ils n'ont pas été en mesure de concevoir une solution évolutive, cohérente et modérément en temps réel pour les bases de données distribuées.
Dans tous les cas, lire comment ils l'ont fait devrait vous aider à concevoir votre propre solution. Attention cependant, vous essayez de résoudre un problème très difficile.
Au lieu de distribuer votre serveur de jeu, je suggère d'explorer d'abord vos autres avenues.
- Profilez votre serveur de jeux.
- Optimisez le code de votre serveur pour réduire la charge du processeur en cas de problème.
- Optimisez le protocole de communication entre les clients et le serveur pour réduire les bavardages réseau.
- Optimisez les communications entre le serveur gamer et la base de données.
- exécutez un optimiseur de requête, puis apportez les modifications appropriées.
- réduire l'interaction DB au strict minimum
- Déplacez la base de données vers une machine distincte.
Cela aide souvent une tonne. Gardez la base de données sur le même réseau local si possible, mais cela devrait aider votre serveur de jeu à être beaucoup plus dynamique quand c'est la seule chose qui fonctionne sur le matériel du serveur.
Votre premier mouvement devrait être de découpler l'accès direct à la base de données du serveur de jeu et d'utiliser un middleware spécifique à l'utilisation pour préparer les données pour votre serveur (par exemple XML, JSON). Ceux-ci seraient capables de gérer n'importe quel nombre de bases de données et, plus important encore, de vous fournir des options de mise en cache spécifiques à l'application. Mettez tout ce que vous pouvez en cache et lancez la base de données uniquement lorsque vous le devez. Effectuez de grandes récupérations et rarement au lieu de nombreuses petites requêtes pour obtenir les meilleures performances possibles dans votre scénario.
La base de données de votre choix peut également vous permettre d'exploiter des clusters qui vous permettent d'étendre facilement les ressources de base de données disponibles et de fournir vos résultats plus rapidement, mais c'est un sujet qui nécessite beaucoup d'expérience et un administrateur de base de données dédié pour configurer et maintenir - et pas tout à fait pour le budget indépendant non plus.
la source
Concernant le serveur de jeu: Une stratégie courante consiste à utiliser plusieurs serveurs où chaque serveur gère une partie du monde du jeu. Chaque utilisateur n'a généralement besoin que de savoir ce qui se passe autour de lui, il est donc logique de diviser le monde par localité. Cela devient malheureusement beaucoup plus compliqué lorsque vous avez un monde ouvert sans frontières au lieu d'un monde qui se compose de zones fermées et de téléporteurs entre eux. Lorsque vous avez un monde ouvert, vous avez besoin d'un moyen de transférer les joueurs entre les zones de manière transparente et d'un moyen de synchroniser les zones proches des frontières entre les serveurs. C'est un problème délicat.
Concernant la base de données: les bases de données SQL évoluent généralement mal. Ils ne sont pas conçus pour être distribués. Mais il existe actuellement une tendance plutôt nouvelle des bases de données NoSQL comme MongoDB ou Cassandra qui ont été conçues pour être distribuées sur plusieurs serveurs. Ils facilitent considérablement l'ajout de capacité en ajoutant simplement plus de serveurs. Alors pourquoi tous les grands jeux ne passent-ils pas à eux? Parce que:
Ainsi, lorsque votre projet est déjà très avancé, le passage à une autre solution de base de données peut représenter un risque important et un très gros investissement en temps et en énergie.
la source
Non. C'est un domaine incroyablement difficile qui n'a pas encore été résolu.
la source
Je sais que c'est vieux mais ...
Il y a en fait deux domaines sur lesquels se concentrer.
Vous devez distribuer votre application sur plusieurs serveurs. Vous devez distribuer votre base de données sur plusieurs serveurs.
Et vous devez disposer d'une redondance pour les deux.
Il existe des solutions open source pour cela. Farmville est un bon exemple d'utilisation de MemSQL / Couchbase.
la source