À quelle fréquence les grands MMORPG mettent-ils à jour la physique? [fermé]

12

Pour autant que je sache, la plupart des grands jeux utilisent un pas de temps fixe pour avoir une simulation stable.

Concernant le serveur de jeu , quelle "cadence" imposent-ils? Ou dit autrement, quel pas de temps fixe ont-ils tendance à utiliser?

Je sais que beaucoup diraient: "Aussi vite qu'ils peuvent s'en tirer". J'aimerais savoir à quelle vitesse est-ce possible, si vous avez une expérience directe d'un MMORPG établi.

Fabio
la source
Vous ne devriez pas faire trop attention à ce que font les autres. Ce qui fonctionne pour quelqu'un d'autre n'a pas nécessairement besoin de travailler pour vous.
Philipp
6
EVE Online met à jour sa simulation une fois par seconde, mais son système est inhabituel. Voir la première partie de cet article pour plus de détails: themittani.com/features/understanding-eve-online-server-tick
Ross Ridge
1
Il s'agit donc d'une question "demander des anecdotes sur les jeux d'autres personnes qui existent déjà" par opposition à une question sur le développement d'un jeu?
Trevor Powell
2
Je n'appellerais pas cela un jeu-questionnaire - c'est assez important. Le fait que certains jeux puissent utiliser des ticks d'une seconde, que je ne connaissais pas ou qui n'utilisent pas du tout la physique, c'est très important pour moi (et cela devrait l'être pour tout développeur). En même temps, ma réponse à Philipp était due à son implication tacite que je demandais cela parce que je voulais décider de mes FPS. Cela n'aurait pas de sens car mon moteur a de nombreuses limitations et je connais déjà la limite FPS que je peux utiliser (bornes inférieure et supérieure).
Fabio
1
Je me souviens avoir lu un article sur Blizzard changeant la vitesse de traitement du serveur WoW pour les événements de combat d'une fois tous les 400 MS à "chaque fois qu'ils arrivent". Cependant, ce n'est pas lié à la physique, car WoW n'a pas vraiment beaucoup de physique en raison de son âge. Je ne trouve pas non plus de source pour cela.
Nzall

Réponses:

7

Second Life implémente la physique côté serveur à l'aide de Havok et verrouille les mises à jour à 45 par seconde.

https://community.secondlife.com/t5/General-Discussions/SIM-FPS-is-maxed-out-at-45/td-p/181120

Les versions antérieures vers 2005-2006 permettaient aux mises à jour physiques de flotter aussi haut que le serveur le permettait. Une région simple avec peu d'objets scriptés pourrait s'exécuter à 800 mises à jour par seconde ... Pour une meilleure efficacité et cohérence, ils l'ont ensuite verrouillée à 45.

(Dans Second Life, la fréquence d'images dépend du processeur et de la puissance graphique de chaque client. La précision mondiale dépend des performances du réseau.)

david van brink
la source
En effet, cela semble raisonnable. J'ai trouvé même aussi bas que 30 FPS pour faire un travail décent si l'intégrateur est bon et la détection de collision assez intelligente. Connaissez-vous d'autres MMO avec une physique appropriée, et leurs étapes temporelles?
Fabio
2
Accepté comme le seul à fournir un exemple concret, mais tous étaient bons à réfléchir. Merci les gars.
Fabio
24

J'ai travaillé sur quelques serveurs de jeux, dont une suite pour un MMO.

En général, ils n'ont pas du tout de physique. Dans les quelques situations où la physique est nécessaire (sauter, principalement), nous laissons les clients calculer leur propre physique, et nous refusons tout ce qui est trop bizarre (les joueurs se déplaçant trop vite pendant trop longtemps, allant beaucoup plus haut qu'ils n'auraient dû être capables de sauter, etc).

Les serveurs n'ont généralement pas non plus de «pas de temps». Ils ne pensent pas du tout en "images par seconde". Au lieu de cela, nous savons quand nous avons entendu pour la dernière fois quelqu'un et ce qu'il faisait à l'époque, puis quand nous entendons à nouveau un peu plus tard, nous entendons parler de ce qu'il fait maintenant, et donc nous mettons à jour notre état interne pour qu'il corresponde . Il n'est pas nécessaire de tout simuler rigoureusement côté serveur; nous pouvons simplement enregistrer les choses que les clients nous disent et faire quelques vérifications pour nous assurer que ce que les clients disent s'est passé nous semble plausible.

Trevor Powell
la source
4
Cela ne fonctionnerait que si l'environnement ne faisait aucune simulation sans que les joueurs soient connectés, non? Je supposais en fait que c'était généralement le cas , mais ce n'est probablement pas important pour la plupart des MMO car ce n'est pas vraiment "vivant". Merci, c'était une réponse inattendue.
Fabio
2
@Fabio La plupart des MMO ne font rien quand il n'y a pas d'observateur - même Ultima Online, qui avait une véritable économie vivante (et écologie), a laissé aller avant d'être publié (mais pas pour des raisons techniques). Il y a des jeux où des choses se produisent même lorsque vous ne jouez pas (par exemple, Haven and Hearth), mais l'astuce est que rien ne se produit jusqu'à ce qu'il soit observé - chaque élément actif se souvient de la dernière fois qu'il a été observé et calcule ce qui s'est passé dans en attendant le moment où vous le revoyez. Ainsi, au lieu d'une valeur mettant à jour chaque tick, vous le faites perTick * ticksSinceLastUpdated- simple, efficace.
Luaan
1
Ne vous méprenez pas; Les serveurs MMO auront souvent des tâches périodiques qu'ils exécutent. Recherchez les monstres qui doivent être réapparus, envisagez de générer des nœuds de ressources, sauvegardez l'état du jeu. Peut-être même quelque chose de plus sophistiqué si votre jeu a une activité procédurale. Mais ce n'est pas comme la physique où vous exécutez «x» fois par seconde, même lorsque personne n'est là. Vous pouvez vérifier la génération de monstres quelques fois par minute, en haut (ou plus probablement, avoir un programme externe qui fait cela, et simplement pousser le serveur pour lui faire savoir qu'il est temps, afin que le serveur lui-même puisse se concentrer sur la gestion des demandes des clients) .
Trevor Powell
11

Outre les autres bonnes réponses données, je veux ajouter le fait que la physique n'est généralement pas pilotée par le serveur ou même connue par le serveur et est une astuce courante pour rendre le monde plus riche sans ajouter de surcharge au réseau ou au serveur traitement latéral.

Par exemple, il peut y avoir des débris que vous pouvez balancer au sol ou souffler dans le vent qui interagissent avec d'autres objets, ou peut-être que vous pouvez pousser des cadavres.

Si la physique est purement décorative et n'affecte en rien le mouvement ou le gameplay, vous pouvez le faire complètement du côté client.

Différents joueurs verront les choses différemment (par exemple, si vous tirez une canette au sol et qu'elle s'envole, d'autres joueurs peuvent ne pas voir que cela peut s'envoler) mais il y a beaucoup de cas où cela n'a pas d'importance que l'expérience ne soit pas '' t la même chose pour tous les joueurs, et avoir des simulations physiques côté client peut vraiment améliorer l'apparence du jeu en ligne.

Alan Wolfe
la source
Dans certains jeux, si cela peut s'envoler assez rapidement, cela peut tuer quelqu'un. J'ai vu des vidéos de jeux Halo où quelqu'un est tué par un cône de signalisation propulsé sur eux par une explosion.
Random832
Si vous voulez que la boîte affecte le gameplay, vous pouvez l'ajouter au monde physique synchronisé, mais vous pouvez également avoir un monde physique non synchronisé dans le même espace! Fondamentalement, le monde physique non synchronisé peut être affecté par le joueur et le monde physique synchronisé, mais il ne peut pas les affecter en retour (:
Alan Wolfe
3

EVE Online, un MMO avec un seul fragment et jusqu'à plusieurs milliers de plaers dans de grandes batailles spatiales, exécute sa physique sur une tique de 1 Hz, appelée la tique "destin".

http://community.eveonline.com/news/dev-blogs/fixing-lag-drakes-of-destiny-part-1-1/

Le soi-disant "Bloodbath of B-R5RB" est le plus grand combat de joueurs émergents jamais arrivé dans un jeu en ligne à ce jour ("le conflit de 21 heures a impliqué plus de 7 548 personnages-joueurs au total et un maximum de 2 670 joueurs dans le système B-R5RB"). à la fois ", selon https://en.wikipedia.org/wiki/Bloodbath_of_B-R5RB ).

Polygnome
la source