Mode Step sur démo

Mode Step sur démo

by Lionel Isoz -
Number of replies: 1

Bonjour,

Voulant utiliser la version démo pour comparer les déplacements de mes joueurs, j'ai remarqué que le fichier de sortie par la démo diffère selon la simulation normale et le mode ./projet Step

Par exemple avec ce fichier basique, le nombre de touche du joueur varie selon les deux méthodes, est-ce normal ? 

état initial (Step 0)


Step n°14 visualisé à l'aide de l'interface en appuyant 14x sur Step


Fichier produit par enchaînement de Step (Step n° 14) à l'aide de du mode Step (./projet Step ...) et affiché une fois le processus terminé :



Le programme utilisé pour produire les enchaînements de Step et comparer les sorties


(diff :    -w skip whitespace  -B skip \n     -I skip comments)

Affichage du script comparateur :

Les 13 premiers steps retournent aucune différences or au step n°14

Problème de comparaison au niveau de nbt, or je ne comprend pas pourquoi la démo produit cette différence. Alors qu'en simulation normale cela se passe "normalement".


Deuxièmement, comme déjà répondu sur ce post , vous dites que l'ordre des éléments lors de la sauvegarde du fichier est libre. Cependant, vous m'aviez confirmé sur ce post, que l'ordre des éléments du fichier d'entrée joue un rôle important dans la simulation. Par conséquent, comment allez-vous évaluer le projet avec un enchaînement de step, donc en utilisant le fichier de sortie du dernier step en entrée du suivant ? Car suivant l'ordre des éléments de sauvegarde d'un projet, le déroulement de simulation d'un prochain step comparée à celui de la démo peut totalement différer...


Une dernière question : quelle précision d'affichage ( setprecision() de iomanip) devions-nous mettre lors de la sauvegarde des données dans un fichier texte ? En effet, en utilisant l’enchaînement de Step, les positions des éléments sont lues dans le fichier alors qu'en simulation normale, la précision des positions est celle stockée en mémoire (du type double).


Merci de votre réponse


PS : Le fichier de test utilisé est en pièce jointe


In reply to Lionel Isoz

Re: Mode Step sur démo

by Ronan Boulic -
Merci pour votre question très bien documentée et argumentée.

Votre expérience est une bonne illustration du point faible de l'écriture de fichiers formatés car en faisant une telle écriture formatée (lisible pour nous autres les humains) on sacrifie la précision du motif binaire du type double. A la place on récupére la précision de l'écriture formatée qui est de 6 chiffres à droite de la virgule. Selon le nombre sauvegardé on a entre 6 et 9 chiffre significatifs en fichier à comparer aux 15 chiffres significatifs pour un double en mémoire. Bilan: un facteur minimum de 10^6 de différence de qualité de précision.

Cela explique que des arrondis sont faits et une erreur s'accumule à chaque étape de mode "Step" = celui qui passe par une sauvegarde de fichier à chaque mise à jour. Au bout du compte cela va conduire à la différence de touche (de collision ou pas) entre les joueurs quand vous comparez à l'utilisation de la touche Step (sans sauvegarde de fichier).

On peut explicitement utiliser iomanip pour demander un nombre plus grands de chiffres à droite de la virgule, par exemple 15, et cela va certainment réduire les différences que vous observez.

Il n'est pas du tout dans notre intention d'utiliser le mode Step/avec fichier/ de cette manière, en le répétant N fois.

Tout au plus il sera utilisé sur des cas très simples avec une seule itération et probablement sans usage d'autograder.

Au stade actuel les scénarios d'évaluations du dernier rendu ne sont pas encore finalisés.