Constitution d'une équipe

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

Re: Constitution d'une équipe

Message par zugsoft » 19 Sep 2016 13:39

Le plus grand probleme à résoudre sur un MMO c'est l'utilisation de la bande passante.
Unity, Java, C, C++ ne résoudra pas ce probleme, c'est un probleme complexe avec plusieurs solution possible.
Un grand nombre de MMO utilise un découpage de l'univers par serveur, ou chaque serveur s'occupe de traiter une zone de ton univers.
Ensuite tu peux utiliser le système de snapshot par client, pour stoker les dernières informations envoyés a un client, pour lui envoyer uniquement le delta afin de réduire la bande passante, mais ta charge CPU et mémoire va augmenter très rapidement.

Si tu n'appliques aucun découpage de zone et aucun système de snapshot, si tu envoies position,rotation,vitesse,commande,vie... tu arriveras rapidement a 100Mbits/s avec un petit nombre de joueurs(120-150).

Pour 100-150 joueurs concurents, tu peux utiliser un seul serveur VPS à 5$ par mois
Si tu vises 500 joueurs tu vas devoir découper ton univers et prévoir 1 serveur physique avec une ligne 1Gbits, 40euros par mois.
Si tu vises plus de 1000 joueurs concurrents, les prix s'envolent et ne sont pas pour des amateurs comme nous sommes, tu devrais compter sur des milliers d'euros par jours.
World Of Warcraft disposaient en 2013 de 13'000servers, 75'000 CPU pour 135'000$ par jour.

Ensuite entre Unity, C, C++, Java chacun a son avantage.
Unity : Permet d'utiliser simplement la physique coté serveur, mais consomme beaucoup de CPU si on utilise ou non la physique.
Java : Consomme peu de CPU, mais plus de RAM que Unity et ne gère pas la physique sauf si tu la codes.
C++ et C, c'est le top des solutions pour CPU et RAM, mais très compliqué à tout mettre en place.

Unity reste a mon avis le meilleur compromis, c'est simple à déployer, facile a maintenir, la physique est déjà intégré si tu comptes l'utiliser.
Moon RTS

Avatar de l’utilisateur
NDrew
Messages : 581
Inscription : 25 Oct 2013 15:14
Localisation : Clermont-Ferrand

Re: Constitution d'une équipe

Message par NDrew » 19 Sep 2016 13:53

l'intégration d'un moteur physique dans du code c++ n'est pas la mort non plus, je n'ai pas testé physx mais j'avais mis en place ODE dans une appli faite avec Ogre3D a l'epoque et c'est assez simple. Perso j'ai du mal a recommander de choisir Unity comme serveur quand même...

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

Re: Constitution d'une équipe

Message par zugsoft » 19 Sep 2016 14:35

Je pensais la même chose avant d'avoir essayé :D

C++ et C reste le top comme je l'ai indiqué, mais Unity permet de créer un serveur en C# rapidement, qui fonctionne aussi bien sous Windows lors du développement, que sous Linux si on veux utiliser un VPS a 5$ par mois.
C'est stable
Facile a débugger sous Windows, j'utilise une interface UI avec des valeurs afficher en temps réel sur l'écran Unity.
La physique est déjà présente et identique a la physique des clients
Tu peux créer une interface graphique de suivi si tu le souhaite en 10 minutes au lieu de lire des logs générés ou lire dans la database.

Je n'ai peut être pas été assez précis dans mes messages, mais je n'utilise aucun composant réseau Unity, uniquement du System.IO.Socket C#, Unity étant juste la pour la physique et compiler le code.
Moon RTS

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

Re: Constitution d'une équipe

Message par zugsoft » 19 Sep 2016 14:50

Concernant ta règle Joueurs contre Joueurs :
Si un joueur niveau 40 avec sa vie au maximum et équipé des meilleurs armes veux tuer un joueur niveau 46 avec 1 point de vie, il ne pourra pas, je trouve ça vraiment dommage.
Il ne faut jamais limiter le joueur, sinon il se sentira frustré et tu auras des mauvais avis.
Moon RTS

Avatar de l’utilisateur
NDrew
Messages : 581
Inscription : 25 Oct 2013 15:14
Localisation : Clermont-Ferrand

Re: Constitution d'une équipe

Message par NDrew » 19 Sep 2016 14:56

mais dans l'autre sens elle est nécessaire, un lvl qui se fait battre pas un gros va s'enerver. Il faut donc pas de gain pour quelqu'un qui tue un lvl plus bas.

Sa règle est probablement mise en place pour éviter qu'un LVL99 se fasse tuer en série par un lvl1 pour lui faire gagner un max d'XP

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

Re: Constitution d'une équipe

Message par zugsoft » 19 Sep 2016 16:08

Ton cas extrême lvl1 Vs lvl99 est très intéressant :hehe:
Un lvl99 a quand même un fort niveau de vie, et une défense très élevé, un lvl1 devra sans doute le cogner pendant 1 jour avant de le tuer.

La bonne règle a appliquer est juste de limiter l’expérience gagner par rapport a la différence de level et a son level.
Mais toujours laissé au joueur la possibilité de tuer l'adversaire qu'il désire.

Ceci est juste un example, mais montre le peu d’intérêt de vouloir tuer un adversaire très différent.

Un lvl1 qui tue un lvl99 gagnera(lvl joueur*10*5 maxi) 50 points, mais il lui faudra 1 jour pour le tuer.
Un lvl1 qui tue un lvl1 gagnera (lvl joueur * 10) 10 point, il pourra gagner 50 points en quelques minutes de jeu.

Un lvl99 qui tue un lvl98 gagnera (lvl adverse * 10) 9800 points
Un lvl99 qui tue un lvl1 gagnera (lvl adverse * 10) 10 points, il faudra 980 adversaires a tuer pour gagner 9800 points.
Moon RTS

Folei
Messages : 16
Inscription : 18 Sep 2016 17:10

Re: Constitution d'une équipe

Message par Folei » 19 Sep 2016 19:20

C'est une question épineuse cette histoire de Pvp ! Je tire un peu le trait, mais il y a autant de possibilité / d'envie que de joueurs.

Sur ce point, je souhaite que l'écart "joueur haut level attaque joueur petit level" ainsi que l'écart "joueur petit level attaque joueur haut level" soit 2 variables différentes définis via l'éditeur afin que chacun puisse faire le serveur qui lui ressemble.

Cela implique également que si la configuration permet qu'un joueur level 1 attaque un joueur level 90 : Il doit être possible qu'un joueur level 90 puisse donner le second coup au level 1.

C'est également un casse tête au niveau game play : Si un joueur level 90 laisse volontairement un level 1 le tuer (car ami IRL par exemple), il fera bénéficier d'un certain avantage (la récompense restant à définir) à ce joueur.

C'est pour cela que je souhaite mettre un maximum de paramètres gérés via l'éditeur. Chacun construira le serveur qui lui ressemble.

Folei
Messages : 16
Inscription : 18 Sep 2016 17:10

Re: Constitution d'une équipe

Message par Folei » 19 Sep 2016 22:19

Pour en revenir à cette problématique de serveur autoritaire.

Au niveau documentation de Photon, j'ai trouvé ça : https://doc.photonengine.com/en/onpremi ... ive-server.

Ca me laisse septique. Quand je vois la quantité de documentation fournie par Photon, et que je ne trouve qu'une petite page qui traite du sujet, j'ai envie de dire : "Mouais".

J'ai également trouvé un tutorial Youtube sur le sujet : ici.

Ma conclusion : La théorie c'est bien, il est temps de mettre les mains dans le cambouis afin d'en avoir le cœur net. Je vais donc installer tout ce qu'il faut et essayer de dompter la bête. Si un camarade veut se joindre à moi, ça sera avec grand plaisir !

Je vous tiens au courant.

PS : Les liens sont en anglais.

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

Re: Constitution d'une équipe

Message par zugsoft » 20 Sep 2016 07:33

Tiens nous au courant de tes tests avec Photon, si tu peux faire un build pour Windows avec un affichage du ping ça m'interesse.
Je pourrai lancer 20 clients depuis mon PC et mesurer le débit réseau et le ping.
Il y à des serveurs Photon en France?
Moon RTS

Avatar de l’utilisateur
NDrew
Messages : 581
Inscription : 25 Oct 2013 15:14
Localisation : Clermont-Ferrand

Re: Constitution d'une équipe

Message par NDrew » 20 Sep 2016 07:59

Les serveurs photons sont la que pour le matchmaking et la gestion de room, apres quand une room créées les communications passent directement entre les clients de cette room sans passer par les serveurs photon? C'est ce que j'ai compris dans la doc quand il disent entre autre qu'on doit nous même gérer l'instanciation d'un serveur autoritaire en automatique lors de la création d'une room.

Répondre

Revenir vers « Collaboration pour projets »