Jeu de baston multijoueur pour Mobile

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: Jeu de baston multijoueur pour Mobile

Message par zugsoft » 04 Juil 2016 20:38

Je pensais galerer quelques heures pour arriver a faire fonctionner un simple projet sur mon serveur Linux, mais il suffit de 2minutes :| , meme pas besoin de faire le build depuis Linux, tout se fait directement sous Windows, il y a juste a envoyer le repertoire sur le serveur Linux , passer le ficher en executable avec chmod, et ca fonctionne :|
Je n'aurai jamais fait mes serveur en Java ou en C en connaissant la facilité de compilation de d'installation sur du Linux, et de plus je vais pouvoir utiliser Physx3.3 sur mes serveurs :super:

Niveau memoire ca consomme moins qu'une JVM, je vais commencer par fair un simple serveur udp dans un seul Thread pour voir de quoi il est capable, et si il n'y a pas trop de memory leak, car il y a souvent des bugs chez Unity a ce sujet.
Moon RTS

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: Jeu de baston multijoueur pour Mobile

Message par zugsoft » 05 Juil 2016 16:34

Le serveur développé en C# sous Unity à l'identique de celui en Java fonctionne très bien sous Linux, vraiment content de Unity.
Niveau consommation mémoire je suis 42Mo de RAM, et niveau CPU par contre je suis 2x fois plus haut qu'en Java 8|
Ce qui consomme quasi toute la puissance du CPU c'est de jouer avec les string, j'utilise pourtant StringBuilder que j'ai mesuré 100fois plus rapide que les + et concat, mais c'est toujours beaucoup trop consommateur.

Maintenant que Client et Serveur sont programmés en C# sous Unity, je vais utiliser directement des objets serialisés , je devrais passé de 4500Bytes pour 100 joueurs à environ 3000Bytes, de quoi monter a 300 joueurs par serveur.
Moon RTS

Avatar de l’utilisateur
ZJP
Messages : 5720
Inscription : 15 Déc 2009 06:00

Re: Jeu de baston multijoueur pour Mobile

Message par ZJP » 05 Juil 2016 17:20

Merci pour les retours. C'est très instructif. 8-)
Cela valide (pour moi) le choix de VPSs sous Linux au lieu de Windows. Moins chers... :mrgreen:

Pour la consommation du CPU, une "pause" dans ta boucle d'Update principale même d'une milliseconde (genre "Thread.Sleep") peut solutionner le souci. C'est une astuce que j'utilise ailleurs qu'Unity pour faire "chuter" la charge.
Pour triompher, le mal n’a besoin que de l’inaction des gens de bien.Edmund Burke (1729-1797)

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: Jeu de baston multijoueur pour Mobile

Message par zugsoft » 06 Juil 2016 13:16

Salut, mettre un Sleep fera baisser un peu la charge CPU, mais ralentira obligatoirement le nombre de requete traité par le serveur.
Il ne s'agit pas d'une boucle qui consomme sans rien faire, mais d'une boucle qui attend sans consommer de CPU si il n'y a aucun paquet UDP à traiter, et qui calcul un maximum quand un paquet est a traiter.

Hier j'ai passé 4heures à tout re-coder pour Serialiser ma structure des joueurs, et le résultat n'est vraiment pas terrible, trop dégouté, le serveur ne tient que 70 joueurs avant d'avoir son CPU a 100%

Du coup ce matin j'ai fais ce que j'aurai du faire hier, une simple boucle pour connaitre les performances des 2 systemes.
-50ms pour traiter mes paquets(50000 * 6 string) avec StringBuilder
-83ms pour traiter mes paquets(50000 * 1 struct de 6 int32) avec un Serialiser
-Plusieurs secondes en utilisant un Stream
-Plusieurs secondes en utilisant Concat de string

J'ai essayé de travailler sur un snapshot par client, pour envoyer uniquement les clients qui ont bougé depuis le dernier paquet envoyé et diminuer en meme temps le calcul du paquet
=> Le CPU consomme environ 10% de plus, +20% d'utilisation de RAM , mais la taille des paquets dimuent un poil.
Donc résultat très médiocre.

Je vais en rester la concernant le serveur, et me concentrer maintenant sur le jeu, 100 joueurs par serveur sur une meme partie c'est déjà correcte
Moon RTS

Avatar de l’utilisateur
ZJP
Messages : 5720
Inscription : 15 Déc 2009 06:00

Re: Jeu de baston multijoueur pour Mobile

Message par ZJP » 06 Juil 2016 14:18

menfou a écrit :... mais d'une boucle qui attend sans consommer de CPU..
? :-D C'est possible ça?
Pour triompher, le mal n’a besoin que de l’inaction des gens de bien.Edmund Burke (1729-1797)

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: Jeu de baston multijoueur pour Mobile

Message par zugsoft » 06 Juil 2016 14:47

Oui, quand tu as une boucle infinie pour lire tes paquets UDP, tant que tu ne recois rien, ca ne consomme rien niveau CPU
Avec mes 100Threads, j'ai 0% de consommation CPU sur mon serveur si aucun paquet ne se présente, pourtant il y a bien 100 boucles infinies qui sont démarrées.
Moon RTS

Avatar de l’utilisateur
ZJP
Messages : 5720
Inscription : 15 Déc 2009 06:00

Re: Jeu de baston multijoueur pour Mobile

Message par ZJP » 08 Juil 2016 15:28

;-)
Quelle Distribution Linux est installée sur ton VPS?
Pour triompher, le mal n’a besoin que de l’inaction des gens de bien.Edmund Burke (1729-1797)

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: Jeu de baston multijoueur pour Mobile

Message par zugsoft » 08 Juil 2016 21:42

J'installe que des Debian.
Je n'ai pas encore testé mon dédié physique avec 2x1Gbits et Xeon 4 core.
Moon RTS

Avatar de l’utilisateur
ZJP
Messages : 5720
Inscription : 15 Déc 2009 06:00

Re: Jeu de baston multijoueur pour Mobile

Message par ZJP » 11 Juil 2016 23:53

menfou a écrit :J'installe que des Debian..
Merci. ;-)
Désolé de la réponse tardive :(
Pour triompher, le mal n’a besoin que de l’inaction des gens de bien.Edmund Burke (1729-1797)

Vinchont
Messages : 62
Inscription : 18 Sep 2014 14:48

Re: Jeu de baston multijoueur pour Mobile

Message par Vinchont » 25 Juil 2016 16:18

OK, je prends le risque de passer pour le débile de service:

Dans tes vidéos, à aucun moment depuis l'introduction de la gestion des coups portés, je n'ai vu testé que tous les joueurs tapent avec contact. Je ne sais pas si je suis clair dans ma formulation, mais: vu le fonctionnement de ton serveur, es-tu sur qu'il ne lag pas si, disons, 50 persos tapent un adversaire dans le même frame? (je ne parle même pas encore de l'ajout éventuel de particules).

Répondre

Revenir vers « Vos créations, jeux, démos... »