Partage
  • Partager sur Facebook
  • Partager sur Twitter

[(M)MORPG/TPS] Projet Yotta (nom temporaire)

    25 décembre 2014 à 17:47:26

    Lors de ton MMO, il se passera forcément des tas d'actions entre la connexion et la déconnexion, qui impliqueront une modification de datas, si tu stockes tout en local pour en suite envoyer le tout à la déconnexion, cela ne fonctionnera pas, puisque tu ne pourras pas croire les données que le client fournit à la déconnexion, alors que si tu gères les données dès qu'il le faut, tu seras forcément dans des conditions spécifiques et donc tu pourras être certain de la véracité des données.

    De plus imaginons qu'un joueur ait un souci de connexion, si tu gères les données à la déconnexion, il faut d'abord que le client t'envoie les données; hors il n'a plus de connexion, que se passe-t-il ?

    • Partager sur Facebook
    • Partager sur Twitter
      25 décembre 2014 à 18:00:11

      Ca marche absolument pas comme ça chez moi ^^ .

      Les seuls données envoyer au serveur sont des appuies sur des touches, etc... c'est le serveur qui possèdent toute les données à enregistrer, le client reçoit les données pour l'affichage et envoie les demande d'action (avec prédiction quand même pour donner un semblant d'instantanée).

      Il n'y a donc besoin d'aucune donnée de la part du client à la déconnexion, juste des donnée du serveur.

      Si le client a sa connexion qui crash c'est perçu comme une déconnexion et enregistré.

      • Partager sur Facebook
      • Partager sur Twitter
        25 décembre 2014 à 19:02:49

        Toggy a écrit:

        aucune données ne peut être changer par le client, pas de triche possible je ne le crois jamais.


        Si seulement ça pouvait être vrai... Je suppose que tu n'as aucune idée de comment fonctionne les différents hack et autre au vu de ta réponse, et ce n'est pas un mal ^^ Après... si t'as trouvé un moyen d'éviter à 100% toute forme de piraterie, tu devrais contacter les plus grosses boites de jeux vidéos, il t'achèteraient sûrement ton idée pour des millions, mais je doute que ce soit ce que tu veuille dire.

        Les données qui se trouvent sur ton pc peuvent être modifiées comme tu veux si tu en a les outils, et ces outils se trouvent très facilement, suffit de savoir quoi chercher. Une bonne solution pour éviter une bonne partie des hacks existant serait de centraliser l'intégralité des calculs sur le serveur en lui même, on n'enverrait alors qu'au serveur les commandes de bases (déplacements, attaques....) et tout le reste (dégats, vie perdue/gagnée, argent...) serait tout fait la le serveur. On comprends très bien ici que quand il y a plusieurs milliers de joueurs connectés en simultané sur le serveur, imagine un peu la puissance qu'il faudrait pour gérer 10 000 joueurs se tapant dessus en même temps... Du coup on choisit la solution de la facilité d'utiliser les PCs des joueurs pour faire des calculs (ça va plus vite aussi, pas de latence...), en dépis des risques de hack.

        Ce que veut dire Auryn, c'est qu'il faut essayer au maximum de centraliser les données sur le serveur sans le surcharger, les bases de données noSQL permettant, d'après ce que j'ai compris de votre discussion, de le faire assez rapidement et facilement en simultané pour plusieurs connections. Il faut essayer de synchroniser les données le plus régulièrement possible entre le client et le serveur.  Tout simplement un exemple tout bête : deux joueurs A et B se connectent. A se bat contre un monstre et perd 1HP. Si le serveur n'est pas au courant du fait que A a perdu un HP (et donc a mis à jour sa base de donnée sous quelque forme qu'elle soit), il serait incapable de dire à B que A a perdu 1HP... Et si B veut heal A, comment il fait s'il ne voit pas que A perd sa vie ??

        Bref, je sais pas trop pourquoi j'interviens dans cette conversation ^^ Bonne continuation tout de même :)

        • Partager sur Facebook
        • Partager sur Twitter
          25 décembre 2014 à 19:55:48

          @Bertrand38: Je parlais de se coté là, par rapport à sa remarque, je sais bien que ça n'évite pas les hacks. Je voulais dire plutot "pas de triche à ce niveau là", mais ça évite une bonne partie des hacks. Je sais bien que pour le reste, c'est pas évitable comme ça, maintenant je ne m'y connais pas de je ne connais pas le fonctionnement.

          Par contre je ne savais pas que les clients faisaient des calculs à la place des serveurs, en général en centralise tout sur le serveur et le client ne fait que des prédictions qui ne sont jamais cru par le serveur. J'aimerai savoir où tu as lu ça car ça m'intéresse je n'ai jamais trouvé rien de tel en cherchant :) .

          Par contre ta discussion sur la base de donnée n'a pas de sens. On ne passe jamais par les base de données (NoSQL ou SQL peu importe) pour ce genre d'échange. La je suis formel, jamais de chez jamais, c'est incohérent, lent et bouffre trop de ressources.

          Le serveur partage les données dans ce cas, mais ça ne passe pas par l'intermédiaire d'un système NoSQL...

          • Partager sur Facebook
          • Partager sur Twitter
            27 décembre 2014 à 23:46:26

            Design basé sur l'overpaint de l'armure, voici le blueprint de l'armure ! :)
            • Partager sur Facebook
            • Partager sur Twitter
            Galerie : Artstation  ~  Contactez moi pour vos projet (mp)
              28 décembre 2014 à 11:07:04

              Bertrand a assez bien résumé, tout ce qui peut être fait par le client niveau calcul doit être fait par le client, dans le cas contraire, ton serveur ne tiendra pas la charge.

              De plus il y a des tas de raisons pour lesquelles la conservation des données est importante, et en général c'est des surtout dans le situations critiques, que cela devient crucial.

              Prenons un joueur, qui disons n'a pas vraiment de vie, et qui est connecté depuis 2 jours non stop, la deconnection n'a donc jamais été appelée, aucune donnée n'a été sauvegardée et pourtant, ton jeu devient subitement populaire à cause d'une pub, ton serveur surcharge puis fini pas crash, qu'en est-il des données de se joueur ? (Là y a plus de déconnexion possible, le serveur a crash...)

              Pour ce genre de jeu crois moi il faut absolument gérer les données au fur et à mesure, tu y perdra peut-être quelques performances mais ce sera beaucoup plus gérable comme jeu. De plus si tu t'y prends bien les pertes de performance ne seront même pas notable. ;)

              • Partager sur Facebook
              • Partager sur Twitter
                28 décembre 2014 à 12:03:58

                Je veux bien croire ce que vous me racontez si vous me donnez des sources. En attendant, à chaque fois que j'ai lu des informations sur les jeux en lignes MMO ou non, il ne fallait jamais croire le client, le serveur faisait tout les calculs et il en est capable d'après mes recherches.

                Après, comme je l'ai dis, je serai très content d'en apprendre plus et de changer d'avis, mais pour cela j'aimerai tes sources, car moi je n'ai jamais entendu rien de tel.

                Rien ne m'empêche de faire des sauvegardes à chaque lvl up ou étape importante et c'est vrai que avec ce point de vue mieux vaut que je fasse des sauvegardes aux étapes importante du joueur. Mais on ne fais pas des sauvegardes tout le temps, ça ça bouffe beaucoup de performances également (que ce soit cpu ou disque).

                 EDIT Tu peux même faire le test en faite, joue à wow, lance un sort où il faut un chargement et déconnecte ta connexion, tu verras que le chargement fini mais que le sort ne part pas et que donc rien n'est calculé. Tu peux toujours te déplacer mais cela interrompra pas l'incantation, le déplacement qui est lieu est du aux prédictions (rebranche ta connexion et si le jeu arrive à se reconnecter à chaud tu te retrouveras au même endroit qu'avant un avec un ennemi qui t'attaque). Si tu continue ton déplacement contre un obstacle genre une porte que tu peux ouvrir, même si elle est fermé, ton personnage passera à travers. Ce qui est une preuve que à se niveau là, par exemple mais pas seulement, c'est le serveur qui calcul ta collision.

                Il y a donc peu de chance que ce que tu me racontes est vrai, mais si tu as un lien pertinent à partager je veux bien admettre que j'ai tort.

                EDIT2 en sachant qu'un simple core i7 (qui est loin d'un "vrai" processeur de serveur dédié) peut exécuter 82 300 MIPS, je ne crois pas que le calcul des dégats, vie, etc... soit un problème vu que cela ne relève que d'instructions de base. Après pour les collisions avec la 3D c'est sure que c'est plus complexe, mais après m'être renseigner sur ce point auprès de la communauté qui maintient le moteur 3D il n'y a pas de souci à ce niveau là.

                Le gros problème est la complexité qu'atteigne les boucles du serveurs vu qu'elles sont généralement de complexité exponentiel, c'est là où tout le travail d'optimisation est à faire, même si je l'ai travaillé il faudra que je le revois encore surement.

                S'appuyer sur ce que Bertrand a dit ne t'aide pas au niveau crédibilité, car on ne fait jamais une synchro comme lui semblait le penser, ça je pense que tu le sais.

                -
                Edité par Toggy 28 décembre 2014 à 12:17:26

                • Partager sur Facebook
                • Partager sur Twitter
                  28 décembre 2014 à 12:44:16

                  Je n'ai jamais dit, en aucun cas, qu'il fallait tout décentralisé, j'ai bien dit que tout ce qui peut être fait par le client doit être fait par le client. Et bien entendu il ne faut en aucun cas croire le client, je n'ai jamais dit le contraire. ;)

                  Ce qui m'inquiète le plus dans ce que tu racontes, c'est surtout la gestion des données, il faut absolument que tu gères tes données au fur et à mesure et non seulement à la déconnexion, sinon tu risques d'avoir de gros souci, notamment comme je te le disais lors d'un crash.

                  Sinon niveau crédibilité, je n'ai aucunement besoin de m'appuyer sur quelqu'un d'autre, j'ai réalisé un MMO Pokémon par navigateur qui fonctionnait parfaitement bien (si ce n'est que l'affichage côté client était un peu trop gourmand mais ce n'est pas le sujet ici), et je n'ai jamais eu de souci. Alors certes ce n'est pas un rendu 3D mais bon tu me diras la 3D ce n'est que l'affichage qui doit être gérer par le client normalement, mais sur le reste ce n'est pas si différent que ça au niveau de la gestion des données ou encore des calculs. ;)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 décembre 2014 à 12:50:55

                    Ben du coup, on s'est mal compris tout simplement :p .

                    Pour le client, il fait de la prédiction, j'évite donc énormément de dépendance du serveur quand à l'affichage en évitant en bonne partie la triche.

                    Je comprends ce que tu veux dire pour la gestion des données, ça à l'air de te gêné.

                    Du coup, j'aimerai bien savoir comment tu as fais et discuter avec toi de ce que j'ai prévu, je vais donc t'envoyer un MP comme ça on pourra discuter et je pourrai profiter de tes connaissances déjà acquise :) . En attendant j'avais prévu de faire des sauvegardes à chaque étapes importantes mais tu as peut-être mieux.

                    Non je sais que tu en as pas besoin pour la crédibilité, j'ai vu tes projets :p , mais tu disais juste "Bertrand a tout résumé" alors qu'il s'est un peu perdu dans ses explications alors je disais que y avait une baisse en disant ça, alors que je sais que tu as, toi, une vrai connaissance :)

                    Toute mes excuses alors pour le mal entendu.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 décembre 2014 à 13:53:52

                      Oui je me suis rendu compte qu'après relecture du post, la fin de son second paragraphe n'est pas juste, il ne faut en aucun cas tout décentraliser sur les clients. ^^

                      Sinon la prédiction est en effet obligatoire pour un MMO, même si tu parviens à obtenir un excellent ping permettant au jeu de tourner sans prédiction,  tu auras toujours des joueurs avec des ping bon mais pas suffisant, voire mauvais ou très mauvais. Ensuite si y a effectivement eu mauvaise prédiction (triche par exemple), il suffit d'avoir un rollback. ;)

                      J'ai répondu à ton MP. ^^

                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 août 2015 à 20:01:10

                        Bonjour,

                        l'idée est supère intéressante! Y a t-il du nouveau? (en espérant que oui)

                        Cdt, Mattis

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          8 août 2015 à 21:36:35

                          Après huit mois sans mises à jour...

                          • Partager sur Facebook
                          • Partager sur Twitter

                          [(M)MORPG/TPS] Projet Yotta (nom temporaire)

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown