Serveur autoritaire et pathfinding

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
zebilamouche
Messages : 38
Inscription : 17 Juin 2016 20:34

Serveur autoritaire et pathfinding

Message par zebilamouche » 24 Août 2020 19:07

Hello !

Cela fait maintenant quelque temps que je développe des jeux online en suivant l'architecture suivante :
- Serveur TCP autoritaire (.NET Core)
- Client Unity
- Librairies partagées entre le client et le serveur (API du jeu, Pathfinding, etc ...)

Jusqu'à présent, en matière de Pathfinding, les jeux que j'ai développés étaient plutôt simples (petites maps, grille 2D, Dijkstra).
Aujourd'hui je souhaite développer un jeu avec une seule grande map et celle-ci serait idéalement générée directement sur Unity (Plane + objets 3D). En suivant ce principe, Dijsktra ne m'est plus d'aucune utilité puisque le nombre de nœuds est beaucoup trop élevé avec une grande map,

je veux avoir le même algorithme côté serveur et client, j'ai fait quelques recherches et j'ai trouvé 3 solutions :

- Hyerarchical Pathfinding Algorithm (HPA *)
http://webdocs.cs.ualberta.ca/~kulchits ... s/jogd.pdf
https://stackoverflow.com/questions/374 ... -large-map

Le but étant de découper la map en plusieurs chunks, et ainsi baisser drastiquement le nombre de nœuds parcourus.
Cette solution me plait moyennement, ça reste du déplacement 'case par case' et on perd donc en précision.


- NavMesh (SharpNav & co)
https://github.com/Robmaister/SharpNav
Le principe est le même que le Pathfinding sur Unity avec un NavmeshAgent.
Cette solution me semble être la meilleure, mais je me pose tout de même quelques questions :
- Est-ce suffisant avec une très grande map ? Ne devrais-je pas découper ma map en plusieurs parties ?
- Puis-je exporter mon terrain (plane + props) conçu sur Unity en .obj, ou autre structure de donnée que je pourrai réutiliser pour construire mon NavMesh ?

- Server Unity (command line)
Toute la physique et les déplacements seraient émulés sur un serveur (Moteur Unity) dédié à ces seules fonctionnalités.
Le moteur Unity est évidemment lancé en ligne de commande sans interface graphique.
Cette solution à l'air intéressante, mais j'ai peur qu'elle soit trop lourde.

J'ai fait pas mal de recherches, et j'ai remarqué que les avis divergent énormément, c'est pourquoi je me retourne vers vous.
Si vous avez déjà utilisé une de ces solutions (ou une autre), je serai ravi d'en savoir plus.

En vous remerciant.

Répondre

Revenir vers « Unity le logiciel »