2017-10-08 9 views
0

je travaille sur un jeu, le jeu a le serveur et les clients qui se connecte à des chambres à jouer, chaque pièce est un jeu, et est en cours d'exécution sur un fil,manipulation multiclient dans le jeu

maintenant i J'ai réfléchi et je sais que je vais devoir communiquer avec tous les joueurs pendant le jeu, je ne sais pas comment faire ça, j'ai pensé à créer un fil pour chaque joueur, ce qui signifie que je devrais ouvrir un fil pour la salle et 1-3 fils pour les joueurs!

pour un mini-projet, il est bien oui, mais en théorie si elle était un jeu avec des millions + joueurs, cela signifie quelque chose comme des fils minimum 1m,

est-il possible pour un serveur de gérer autant de fils? et est-ce la bonne/une bonne solution pour ce problème?

Répondre

0

Tout d'abord serait extrêmement difficile à synchroniser et est une façon très coûteuse d'aborder ce problème. Il serait préférable d'avoir un thread dans lequel vous gérez tout le traitement du joueur, de cette façon vous n'avez pas à vous soucier de la synchronisation des threads entre les joueurs. Pour être honnête, si votre jeu ne nécessite pas beaucoup de temps de traitement, vous pouvez être meilleur avec un seul thread sur lequel tout le traitement a lieu plutôt que de devoir vous soucier que tout soit thread-safe. Évidemment, ce ne serait pas une solution favorable si vous essayez d'apprendre le multithreading.

+0

mais est-il possible de gérer une pièce (1-3 joueurs) avec un seul fil? Je veux dire que j'ai besoin de lire une socket pour chaque joueur et je ne peux pas savoir l'ordre que les joueurs m'enverront des données, et jusqu'ici je n'ai vu que les sockets fonctionnent de manière synchrone. – likesLowLevel

+0

@likesLowLevel est certainement possible, mais cela dépend du traitement que prend une pièce pour savoir si c'est la solution la plus favorable. Des jeux tels que RuneScape sont également basés sur un seul thread et cette relation serveur-client semble similaire à ce que vous essayez d'obtenir. –