Nan, dans ce jeu, le problème ce n'est pas le serveur, qui est stable, les plantages de zones sont rares.
Nan, dans ce jeu, le problème c'est le client.
Les LD par OOM, ou par gel sont le fait du client, pas du serveur ou de la connexion.
Et ce depuis le LU19, le LU qui a doublé la vitesse de déplacement, j'explique.
Dans ce client, vous avez une grande zone, découpées en milliers de mini-zones, parfois limitées à une seule salle ou un bout de couloir, quand la zone est un donjon, par exemple.
Quand le client zone, il charge une partie commune de données à toute la zone, histoire de simplifier les choses.
Puis, en estimant les déplacements, il va charger et décharger les mini-zones, par anticipation, histoire d'éviter les 'chargement en cours' qui résulteraient d'un chargement au moment d'y être, et pour éviter d'être à court de données à afficher, le chargement est prioritaire sur le déchargement des données.
Quand on se déplace à une vitesse (arbitraire) de 1, on va charger 1 zone à l'avance dans les 8 directions, de fait, il va y avoir 9 mini-zones en mémoire en permanence, et les plus gros transferts, quand l'avatar se déplace en diagonale relativement aux mini-zones, seront de 5 mini-zones.
Donc quand on programme le client, on fait un beau mélange entre taille des mini-zones, vitesse de déplacement maximale, et bande passante disque afin d'avoir un tout équilibré, tant en chargement, qu'en déchargement.
Quand on double la vitesse de déplacement sans modifier la gestion mémoire et la mécanique, ce qui a été fait par SoE, on double mécaniquement la bande passante requise et, surtout, on double la vitesse d'accès nécessaire, puisqu'il faut que les données soient chargées 2 fois plus vite pour respecter l'anticipation.
Au final, entre Windaube, DX9, le C Microsoft, le doublement de la vitesse a eu pour effet de pousser le système dans ses limites en terme de traitement et de bande passante, tant disque que mémoire, et le système se retrouve à ne pas avoir le temps de décharger les données, et ça plante par OOM, en plus de geler régulièrement.
PS: et augmenter la mémoire, les bandes passantes, et la puissance processeur ne sert à rien, tant que le système passe 25 à 30% de son temps à se gérer lui-même, et que les latences entre actions et affichage sont multipliées par l'abus de middleware en tout genre.
Exemple, j'appuie sur une touche pour faire avancer mon avatar.
La touche est traitée par Windows, driver clavier, puis par Windows, gestion d'interface, puis par l'ui du jeu, puis par le moteur réseau du jeu, puis par le moteur physique du jeu, puis par le moteur d'animation du jeu, puis par Windows, DX9, encore Windows, driver de carte graphique, puis par Windows, driver de carte-mère, puis enfin par la carte graphique.
bref, taper sur une touche impose 5 traitements gérés par Windows directement, et 4 par le jeu, avec tout ce qu'implique la programmation Microsoft en terme de latence, bugs, ralentissement en tout genre, on peut estimer à la louche que ça fait 20 à 30% du traitement globale juste à gérer la lourdeur de Windows, et surtout, surtout, ses DLLs.
|