Je me suis surtout planté dans ma phrase. J'ai parlé du moteur graphique, alors que le jeu a toujours tourné correctement chez moi sur mon ancienne config à 300€ vieille de 4 ans (quitte à rester en qualité 2/6). Sur ma nouvelle machine, je joue tout à fond sans soucis, et ce n'est pourtant pas le top de ce qui se fait actuellement. C'est juste une "bonne config".
En fait je pensais plutôt aux serveurs, et à la gestion de tous ces coups "sans ciblage". J'imagine que ça doit être plus compliqué à calculer que dans le cas d'un jeu "avec ciblage", qui ignore purement et simplement de l'équation tous les personnages "non ciblés" à l'instant T où le coup part.
Prenons un coup simple. Sur un jeu avec ciblage, si la cible est à distance, le reste du calcul se fait sans nouveau facteur à prendre en compte à partir de l'instant où le coup est déclenché. Dans les grandes lignes, le coup part et porte systématiquement, le serveur teste s'il y a parade ou esquive d'après des stats (et non d'après une action du joueur pendant que le coup est porté), puis calcule les éventuels dégâts en fonction de divers paramètres connus à l'avance tels que l'arme de l'attaquant, la défense et la résistance de la cible, s'il est de face ou de dos...
Sur un jeu sans ciblage comme Tera, le serveur doit déterminer en plus si au moment de l'impact le joueur s'est mis en posture défense, ou s'il a lancé une esquive avant que le coup finisse sa trajectoire. Ça encore, ça doit pas être trop gênant, vu que l'animation ne colle pas forcément au calcul (j'imagine que tout le monde a déjà remarqué que parfois une quête se valide une fraction de seconde avant que le monstre ne soit mort).
Ce qui doit bouffer le plus de ressources, et qui doit entre autre expliquer pourquoi les archers et mages ont un range si court, c'est la possibilité "d'intercepter une trajectoire de projectile". Sur Lineage II, jeu avec ciblage, il peut y avoir 10 personnages dans l'axe du tir, s'il est à porté de flèche, la flèche touchera systématiquement la cible et personne d'autre. Dès l'instant où le projectile est lancé, le serveur sait où il va atterrir (quitte à ce qu'après calculs, le projectile ne fasse pas de dégâts face à la résistance, l'esquive auto et la défense, etc. de la cible).
Sur Tera, pendant toute le temps qui' s'écoule entre le départ et l'arrivée du projectile, le serveur doit déterminer si le projectile est intercepté par une autre cible : un lancier qui s'interpose avec son bouclier, un autre joueur qui fait marche arrière et qui est touché alors qu'il n'aurait pas dû être sur la trajectoire, ... Le serveur ne peut pas savoir non plus à l'avance si le projectile touchera quelque chose, la cible pouvant bouger ou esquiver avant l'impact.
Donc tant que le projectile n'a pas terminé sa course, le serveur ne sait pas ce que le projectile va toucher, ni même s'il va toucher quelque chose. Forcément, ça multiplie les calculs. J'imagine qu'il doit y avoir de multiples manières d'optimiser tout ça, mais ça fait obligatoirement beaucoup plus de calculs qu'avec un système avec ciblage, d'autant plus que ce nombre de calcul augmente avec la distance parcourue par le projectile.
Et c'est exponentiel avec le nombre de joueurs ou de monstres "à portée de tir", puisque que chacun d'entre eux est à la fois un obstacle potentiel et la source éventuelle d'un nouveau projectile qui lui même devra trouver son chemin parmi tout ce beau monde.
Sans parler des sorts de zones.
Je pense d'ailleurs que l'existence de projectiles à tête chercheuse dans Tera s'explique plus par une volonté d'optimisation des performances que par une volonté de "faire un sort qui suit le joueur même quand il sort de la trajectoire de tir du monstre".
|