Je travaille actuellement sur un jeu orienté physique en solo où j'aimerais que la physique soit simulée côté serveur. Cela parce que le jeu aura des classements, une progression persistante des joueurs, etc. et je veux empêcher tout type de tricherie - essentiellement une architecture client-serveur pure, le client est "stupide" et n'affiche que ce que le serveur veut que vous affichiez.
Le problème est cependant que le jeu sera probablement joué par des centaines (voire des milliers) de personnes en même temps. Cela me préoccupe, car cela va probablement tuer la puissance de traitement du serveur si je dois faire et maintenir des centaines d'états en même temps.
Je n'aurais aucun problème à déplacer toutes les simulations physiques du côté client, mais j'aurais alors vraiment besoin d'un moyen de valider si le résultat d'une simulation client est valide. Cependant, je ne peux pas comprendre comment.
J'ai pensé à exécuter la simulation côté serveur de temps en temps pour valider si le client joue toujours correctement, mais je veux vraiment que le serveur ait le moins de tension possible.
La physique deviendra à peu près aussi complexe que la démo GDC 2011 de Glenn Fiedler , peut-être même plus simple. Cependant, beaucoup de corps rigides toujours en collision seront dans une seule scène et ils seront tous visibles à la fois.
J'ai du mal à obtenir une réponse à ce cas particulier, car la plupart des ressources sur le Web - encore une fois, le site de Glenn Fiedlers étant génial - parlent de physique en réseau à petite échelle (par exemple, un FPS avec 30 joueurs, comme Halo).
Tout conseil, site Web, article ou autre sur le sujet sera très apprécié.
Un récapitulatif des questions auxquelles je voudrais une réponse:
- Quelle est la faisabilité d'un modèle client-serveur? Ma préoccupation de puissance de traitement de serveur est-elle légitime et fondée?
- Est-il possible de valider de manière fiable une simulation physique exécutée par le client sur le serveur? Si c'est le cas, comment?