Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 69
    Points : 47
    Points
    47

    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.

  2. #2
    Responsable 2D/3D/Jeux

    Avatar de LittleWhite
    Homme Profil pro Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    16 493
    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 : 16 493
    Points : 84 580
    Points
    84 580

    Par défaut

    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.

  3. #3
    Membre Expert Avatar de Djakisback
    Inscrit en
    février 2005
    Messages
    1 974
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 1 974
    Points : 2 106
    Points
    2 106

    Par défaut

    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

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    décembre 2006
    Messages
    1 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 622
    Points : 1 951
    Points
    1 951

    Par défaut

    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.

  5. #5
    Membre du Club
    Inscrit en
    avril 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 69
    Points : 47
    Points
    47

    Par défaut

    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.

  6. #6
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    décembre 2006
    Messages
    1 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 622
    Points : 1 951
    Points
    1 951

    Par défaut

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •