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

Développement 2D, 3D et Jeux Discussion :

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


Sujet :

Développement 2D, 3D et Jeux

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    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 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    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 expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    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 et Apple c'est pas mieux
    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
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    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
    26 859
    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 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    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 expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    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 et Apple c'est pas mieux
    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