Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Réseau et multijoueurs
Réseau et multijoueurs Forum d'entraide pour le réseau et le multijoueur pour les jeux vidéo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 15/05/2012, 22h24   #1
Davidlouiz
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 64
Points : 36
Points : 36
Par défaut Envoyer des scores à un serveur web de façon sécurisé

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.
Davidlouiz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2012, 10h17   #2
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 467
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2008
Messages : 10 467
Points : 40 543
Points : 40 543
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.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2012, 19h53   #3
Djakisback
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 914
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 914
Points : 1 840
Points : 1 840
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
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2012, 20h57   #4
nouknouk
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 612
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 1 612
Points : 1 781
Points : 1 781
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.
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2012, 23h00   #5
Davidlouiz
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 64
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 64
Points : 36
Points : 36
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.
Davidlouiz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2012, 23h03   #6
nouknouk
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 612
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 1 612
Points : 1 781
Points : 1 781
Citation:
Envoyé par Davidlouiz Voir le message
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.
Je ne dis pas le contraire, mais cet idéal n'est pas toujours réalisable quand le calcul du deroulement du jeu en lui-même demande beaucoup de ressources (typiquement quand on commence à introduire de la physique), et que celles-ci sont limitées (notamment pour cause financière, dans le cas d'un développement amateur).

D'où les solutions alternatives.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h57.


 
 
 
 
Partenaires

Hébergement Web