Cette question est un peu délicate, mais je vais essayer de la clarifier.
Disons que je construis un jeu en ligne (pas à l'échelle MMO), mais qui prend en charge autant de joueurs que possible, dans une approche de serveur faisant autorité. Je veux de très grands mondes avec beaucoup d'ennemis simulés par l'IA.
Je connais quelques stratégies pour économiser le processeur du serveur en subdivisant l'espace et en ne traitant pas ce qui n'a pas besoin d'être traité. J'ai déjà divisé le monde par régions, ce qui nécessitera des temps de chargement et de petites transitions, ce qui, selon moi, est important pour maintenir la qualité du gameplay lorsque vous jouez localement (seul ou même avec quelques amis). Je ne m'attends pas à ce que les joueurs soient dans plus d'une ou deux régions.
Le problème est qu'une région peut devenir assez grande et avoir beaucoup de PNJ simulant à la fois. Comment gérer cela sans affecter l'expérience des joueurs? Des approches comme un serveur par région et similaires ne sont pas dans le tableau.
Je recherche principalement des structures de données pour contenir des hordes d'ennemis, et même des PNJ pacifiques. Pour finaliser la question, veuillez noter que les véhicules existent, donc son considérablement rapide pour voyager dans une région, influençant le "quand" pour abattre les zones.
Réponses:
D'après ce que je comprends, vous aurez une sorte de physique en cours d'exécution sur votre serveur.
Si tel est le cas, il existe également d'autres techniques disponibles pour l'IA / la physique autres que le partitionnement d'espace. Du plus évident au moins évident:
Une fois que vous avez mis en place ces mécanismes, vous pouvez décider combien et à quelle fréquence vous en avez besoin. La grande chose à ce sujet est que plus tard, vous pouvez ajouter quelques serveurs qui pourront prendre en charge certaines des tâches au lieu des applications clientes.
Bien sûr, la détection de collision approximative créera des aberrations, mais vous pourrez les résoudre en ajoutant de temps en temps plus de précision.
En ce qui concerne également la physique, vous devriez jeter un œil aux bibliothèques qui prennent en charge une sorte de système GPGPU comme OpenCL ou CUDA si vous avez accès à un serveur qui prend en charge l'une ou l'autre.
la source