+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    22 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mai 2008
    Messages : 22 046
    Points : 149 112
    Points
    149 112
    Billets dans le blog
    5

    Par défaut Le réseau dans les jeux vidéo : Approximation des nombres à virgule flottante

    Bonjour,

    Continuons d'étudier le réseau dans les jeux vidéo. Ce sixième article explore la réalisation d'un jeu totalement déterministe. Grâce à ce déterministe, vous pouvez alléger votre utilisation de la bande passante en envoyant que les actions du joueur et non plus l'état de tous les éléments du jeu.

    La rubrique 2D/3D/Jeux souhaite remercier Bousk pour son travail de traduction de l'article .

    Bonne lecture.
    Retrouvez les autres articles de cette série.
    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.

  2. #2
    Membre éprouvé
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : novembre 2003
    Messages : 768
    Points : 933
    Points
    933

    Par défaut

    Une solution que j'ai adopté consiste à se demander de quelle précision a t'on besoin. Actuellement je développe un jeu en Java dans lequel j'utilise des droites. J'avais notamment écrit une méthode qui permet de savoir si un point appartient ou non à la droite. Lors d'un test je me suis rendu compte que ça ne marchait pas car lors d'un test d'égalité je me suis aperçu que les nombres que je comparais différaient à la 10ème décimale. J'ai résolu le problème en considérant que je n'avais pas besoin des n décimales après la virgule. Je calcule la valeur absolue de la différence de mes deux nombre et si elle est inférieur à une certaine précision il y a égalité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (Math.abs(X1-X2)<0.001)
    return true;
    else
    return false;
    Il y a des jours où j'éprouve une haine profonde envers microsoft
    Venez vous défouler ici ou c'est amusant
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    4 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 4 410
    Points : 17 397
    Points
    17 397

    Par défaut

    Euuh ce que tu présentes c'est juste un problème qu'on voit passer tous les mois sur le forum C++ : "pourquoi quand je compare 2 floats égaux ça me retourne false ?"
    Le propos de l'article c'est comment produire les mêmes sorties, en exécutant une même simulation sur des machines différentes.
    C'est ce genre de problème : la désynchro totale lors de la toute première partie multi de Warcraft I où chaque joueur se voit anéantir l'adversaire (avant un crash^^)
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    22 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mai 2008
    Messages : 22 046
    Points : 149 112
    Points
    149 112
    Billets dans le blog
    5

    Par défaut

    Ce cas est d'ailleurs courant et ce type de comparaison doit toujours être fait avec un epsilon (d'ailleurs, cela doit être une constante accessible dans le langage et non déterminée à la main).
    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.

  5. #5
    Membre éprouvé
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : novembre 2003
    Messages : 768
    Points : 933
    Points
    933

    Par défaut

    Citation Envoyé par Bousk Voir le message
    Euuh ce que tu présentes c'est juste un problème qu'on voit passer tous les mois sur le forum C++ : "pourquoi quand je compare 2 floats égaux ça me retourne false ?"
    Le propos de l'article c'est comment produire les mêmes sorties, en exécutant une même simulation sur des machines différentes.
    C'est ce genre de problème : la désynchro totale lors de la toute première partie multi de Warcraft I où chaque joueur se voit anéantir l'adversaire (avant un crash^^)
    J'ai du mal lire l'article car il me semblais que ça parlais surtout de problème de calcul sur des réels qui pouvais avoir pour conséquence de désynchronisation.
    Il y a des jours où j'éprouve une haine profonde envers microsoft
    Venez vous défouler ici ou c'est amusant
    Mon modeste site et mes modestes oeuvres sont
    Rémi

Discussions similaires

  1. Le réseau dans les jeux vidéo : Débogage des jeux multijoueurs
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 04/08/2015, 21h03
  2. Le réseau dans les jeux vidéo : Fiabilité, ordonnancement et congestion
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 03/06/2015, 01h53
  3. Le réseau dans les jeux vidéo : Connexion virtuelle en UDP
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 17/05/2015, 17h59
  4. Le réseau dans les jeux vidéo : UDP vs TCP
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 43
    Dernier message: 04/05/2015, 23h18
  5. Le réseau dans les jeux vidéo : Envoyer et recevoir des paquets
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 03/05/2015, 19h10

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