Citation:
Envoyé par
alpha_one_x86
Aucune idée, c'est pour ça que les socket QSslSocket de Qt me semble plus plus sécurisé.
Après je doit rafraîchir mes connaissances sur le sujet.
En fait, soit elles requièrent un certificat SSL valide (peu probable), et alors il faut en payer un ; soit il faut les informer de la clef publique du serveur. Ce cas est plus probable.
Mais là, ça va être compliqué, si tu veux pouvoir monter plus d'un serveur. Ou alors créer une CA ? Complexe aussi.
En même temps, il n'est pas forcément nécessaire de sortir carrément du SSL.
Citation:
Oui, bench biaisé, les bots ne font que marché, sans utilisé le chat, ni combattre, ...
Donc dans certaines conditions c'est le cpu limitant, dans d'autre condition non.
Ah, d'accord.
Après, il faudrait que tes bots agissent vraiment aléatoirement, style balancer des messages aléatoires sur le chat à des intervalles de temps aléatoires, et trucs du genre.
Comme ça, ça serait plus réaliste.
Et vu que ça modifiera l'utilisation du cache, il est possible que ça fasse encore ralentir le serveur, même si la complexité asymptotique descend.
Citation:
J'ai justement bien profiler, j'ai des complexité linéaire/fix, partout, avec de bonne optimisation, c'est juste sur l'envoie des déplacements sur les autres joueurs que ça monte vite (complexité carré).
Donc il faut (probablement) trouver un moyen d'optimiser ça. Enfin, je vois que tu y travailles, donc tout va bien.
Citation:
Par contre optimiser dès le départ en bien structurant le code, et fessant quelque profiling pour ce rendre compte de comment marche la base, ou sont les lenteurs, comment les isolés, ... Ça m'as toujours réussi. Je profile régulièrement, par contre rien de poussé avant d'avoir presque fini les fonctionnalités.
faisant*
Sinon, +1.
Citation:
Le client synchronise sont datapack locale sur celui du serveur. C'est pour les éléments majoritairement static.
Donc le client fait la même chose qu'un rsync, envoie de la liste de fichier qu'il as, le serveur il réponds les fichiers à gardé, ceux à supprimé, et ceux à mettre à jour.
Mais ce n'est pas le protocole de jeu en soi, plutôt celui de l'updater.
Du coup, oui, ces données ont intérêt à être compressées. Après, le serveur n'a aucun calcul à faire dessus : il peut tout pré-compresser.
Mais le reste, inutile.
Citation:
Je part du principe que les joueurs font en moyenne 2 pas avant de changer de direction. J'envois 1Byte pour le nombre de pas fait, et 1Bytes pour la nouvelle direction prise. Et les clients font avancé les autres joueurs dans la direction qu'il ont prise. (Biensur avec une syncro quand de nouvelle info arrive).
Je penses que tu sous-estimes le nombre de 2 pas, hein.
Citation:
Après je peu changer simplement, je doit justement voir quel lib utilisé, ou, comment... par exemple QML2 avec Qt5 me permet une gestion des animations, sans que j'ai à changer les trames avec un timer... Il supporte aussi les widgets (liste, bouton, input, ...). D'autre lib sont peu étre mieux pour le client comme pour le serveur. Mais je le fait dans le langage que je connait, comme ça au lieu de perdre du temps à apprendre et avoir un jeu qui ne sortira jamais, j'avance. Une grosse fonctionnalité qui me le fait fortement préféré coté serveur, c'est les threads et les signaux/slots (event) avec Qt. Ca me permet de ne jamais bloquer sur les packet à complexité fixe et qui doivent étre traité rapidement, et de faire ça sur toutes les Voila
Côté serveur particulièrement, je conseillerais d'éviter l'hippopotame !
boost.thread ; boost.signal ; boost.asio ... tout ça sera plus fonctionnel, en plus de ne pas nécessiter de changer la toolchain de compilation.
Citation:
Voila, ça fait un truc plus complexe coté client... je préfère le géré de façon + intelligente coté client (mettre les objets visibles mais non utilisable tant que le serveur n'as pas validé).
Et si il marche sur les murs... je le remet à sa place et ont en parle plus? Idem si il essaye d'avoir un max d'argent, ... si ça marcher comme ça, le pirate peu essayer toutes les failles sans être embêté, et l'admin n'en ai jamais informé.
Exactement !
A la limite, tu peux conserver côté serveur un compteur nbFail ; et arrivé à 3 (avec une recharge de 1 par heure), il est déco/ban tmp et l'admin est mailé, ou un truc du genre.
Citation:
Pour les applications oui, pour les serveurs non car tu pénalise tout les autres clients.
L'autre client est content de voir ton serveur crasher ? Et puis, tu n'as rien à perdre à donner une chance au client de se rattraper.
Citation:
Le client n'est pas de confiance, c'est uniquement le serveur qui l'est... mais je comprends le principe.
Sauf que le serveur ne prend, bien sûr, en compte aucun paquet venant du client qui soit invalide !
Citation:
Ça veux dire re-synchronisé le client partiellement ou totalement, ... je préfère le re-connecter dans un 1er temps. Ça implique faire quitter/venir dans un combat, la position, l'inventaire, ...
Ca implique simplement un state = packet.state.
Citation:
Coupure + anti brute force + login que toutes les minutes, ... mais l'important c'est qu'il coupe et qu'il post sur le chat un message pour tout le monde, pour dire que le compte XXXXX à été couper pour possible piratage.
Ca force aussi le client à ne pas envoyé des conneries, et au dev du client d’être coupé avec une erreur qui n'est pas silencieuse.
=> Pas compris le rapport avec un bot.