IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau et multijoueurs Discussion :

Envoyer des scores à un serveur web de façon sécurisé


Sujet :

Réseau et multijoueurs

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Points : 80
    Points
    80
    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
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    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

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    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 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    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 régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Points : 80
    Points
    80
    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 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    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.

Discussions similaires

  1. [AJAX] Envoyer des requêtes à un serveur
    Par Qapoka dans le forum AJAX
    Réponses: 3
    Dernier message: 24/09/2009, 12h33
  2. cookie client envoyant des credentials au serveur
    Par nicorama dans le forum Sécurité
    Réponses: 0
    Dernier message: 19/06/2008, 11h46
  3. [Prototype] Utiliser Json pour envoyer des données au serveur
    Par GandalfZeGrey dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 14/02/2008, 17h16
  4. [Web Service][SOAP] Envoyer des fichiers volumineux via web services
    Par kaboume dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 06/12/2007, 11h06
  5. Envoyer des informations à un service Web en javascript
    Par gingman dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/03/2006, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo