|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : avril 2007 Messages : 64 ![]() |
Bonjour,
J'aimerais connaitre les méthodes utilisées pour envoyer un score de jeu vidéo depuis une application PC vers un serveur web. La difficulté que je rencontré se situe au niveau de la tricherie. En effet, le jeu est open source et je veux une solution qui ne permette pas à un tricheur de créer un programme similaire au jeu, qui lui permette d'envoyer un score frauduleux. A vrai dire, je ne pense pas qu'il y ai de solution. Merci. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() ![]() Alexandre LaurentIngénieur développement logiciels Inscription : mai 2008 Messages : 10 467 ![]() |
Bonjour,
Il doit y avoir un moyen en envoyant assez d'informations sur la partie pour que le serveur calcul une estimation du score final. En passant, ces données doivent être chiffrées.
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 914 ![]() |
Salut,
quelques pistes : - obfusquer au max les parties sensibles du code open source. Voir ne pas donner telle ou telle lib - fonctionner par sessions authentifiées ; ça protège rien mais tu peux conserver des logs - comme le dit LittleWhite tu peux aussi envoyer des informations ponctuelles lors de la partie et calculer/estimer sur le serveur à la fin
__________________
Vive les roues en pierre |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : décembre 2006 Messages : 1 612 ![]() |
Salut,
une idée que j'avais eue fut un temps mais que j'ai jamais mise en pratique dans sa totalité est de calquer en quelque sorte le fonctionnement sur le serveur sur celui de la justice. A la fin de chaque partie, chaque client envoie ce qu'il estime être les 'bons' résultats au serveur, qui va les stocker et les transmettre à l'identique à l'ensemble des autres participants. Si l'ensemble des participants est d'accord avec les résultats publiés par les autres joueurs, tout va bien. Si par contre un participant s'estime lésé, il pourra 'porter plainte' auprès du serveur pour signifier qu'il estime que tel autre joueur ne respecte pas 'les règles'. A charge alors pour le serveur de stocker cette réclamation, les résultats envoyés par chacun et les logs de la partie pour constituer le 'dossier' de la plainte. Le serveur met alors la partie de côté et ne le prend pas en compte l'impact du résultat dans le classement général pour le moment. Quand le serveur a un peu de temps libre (= que la faible charge du serveur pour gérer les joueurs connectés lui permet de faire autre chose en tâche de fond), il réouvre le dossier et 'rejoue' la partie grâce aux logs qu'ils aura gardés (genre l'ensemble des communications échangées pendant la partie qu'il sauvegarde en cas de plainte pour alimenter le 'dossier'). Une fois la partie rejouée par ses soins et son résultat 'objectif' calculé, le serveur émet alors un jugement en faveur du plaignant ou de la défense, et statue sur le résultat de la partie qu'il peut ensuite réintégrer et comptabiliser dans le classement général (et éventuellement réprimander le joueur de mauvaise foi, genre malus de points voir ban du compte). Cela me semble plutôt robuste et ne nécessite pas de mécanisme d'obfuscation qui -par nature- ne pourra finir par être déplombé tôt ou tard. Par contre, ça laisse encore le champ libre à un cas particulier: si deux joueurs qui sont de connivence s'accordent pour faire exprès de laisser gagner systématiquement un des deux joueurs. Mais: 1- à la limite ce n'est pas mieux pas pire que le joueur qui lance deux clients et qui fait exprès de laisser perdre son joueur 1 et gagner son joueur 2. 2- ce genre de problématique est minimisable si tu proposes un double système: 2.1- les parties classées seront uniquement celles ou le serveur choisira au hasard les joueurs qui s'affrontent. Cela fait que la possibilité d'utiliser le biais des joueurs 'connivents' diminue d'autant que le nombre de joueurs connectés au serveur augmente. 2.2- les autres parties sont celles ou les joueurs sont libre de choisir leurs adversaires et les parties ou le serveur suspecte un risque de connivence (par exemple parce que deux clients distincts ont la même IP). Ces parties sont déclarées comme étant des parties amicales (ou d'entraînement) et ne comptent tout simplement pas dans le classement.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android. |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : avril 2007 Messages : 64 ![]() |
Dans le cas du système de justice et du système d'estimation du résultat, on est obligé d'inventer une solution individuelle pour chaque jeu. C'est embêtant.
J'ai l'impression que la solution la plus fiable, dans un jeu vidéo multijoueur, serait de faire en sorte que le serveur sur lequel sont connectés les joueurs soit un serveur de confiance. Tout les calcules seraient fait sur celui-ci. Idéalement, il serait hébergé sur la machine sur laquelle est hébergé le serveur Web, ce qui n'est pas toujours possible. Si par exemple je veux faire un jeu bidon qui consiste à cliquer le plus grand nombre de fois sur un bouton en une minute, et que le score du joueur soit publié. Ça me parait très difficile de vérifier que le joueur n'ai pas triché sur le message envoyé au serveur. |
|
|
00
|
|
|
#6 | |
![]() ![]() Inscription : décembre 2006 Messages : 1 612 ![]() |
Citation:
D'où les solutions alternatives.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com