Messagerie


Matrice, Octet, Sauvegarde, Fichier...

Monos
2713 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur Android Exporteur HTML5
lundi 26 janvier 2015 à 06:35
Aller petit récit théorique sur les sauvegardes de donnée et d'utilisation de base !

Les sauvegardes de donnée sur un fichier pour les retravailler. Sur Fusion il y a plusieurs manière de faire tout ça.
Le plus simple à mon sens c'est l'option sauvegarde et chargement de l'objet tableau. C'est simple et rapide car une fois le fichier recharger dans un tableau, il y a rien à refaire, le tableau se re paramètre tout seul avec les données dedans. En plus c'est portable sur tout les exporters. Sauf que ça un prix, cela peut vite être lourd en poids quand il y a beaucoup de X,Y et surtout de Z.

L'autre méthode c'est les chaines à découper avec séparateur et tout ça. Je prend exemple sur un lecteur/editeur de niveau.

Nomdutile,Nomdutile,Nomdutile... (Le nombre de fois qu'il y a de case dans votre niveau)
Utile à mon sens quand la dimension des niveaux sont fixes
Nom du tile,X,Y#Nom du tile,X,Y... Permet de positionner un Tiles à l'endroit X et Y en analysant chaque partie des sous groupes.

Les chaines sont sauvegardé dans les fichiers pour être relus plus tard !

Il faut savoir que dans un fichier, un caractère vaut le plus souvent 1 Octet. (Ce n'est pas une science exacte cela peut varier suivant le format encodage du fichier mais jusque la avec l'enregistrement du fichier via String Parser, une lettre est bien un Octet sur mon PC.)

Donc naturellement on recherche à gagner de la place et du poids.
Dans l'exemple plus haut, Nom du tiles, on peux placer un Nombre. Que d'écrire Sol1 (4 Octets) on peux écrire 1 qui va renvoyer au Sol1. De 0à 9 ça vaut un Octet, mais après on va passer à 2 Octets de 10 à 99. Et votre jeux possède plus de 100 tiles, on passe dans la tranches des trois octets. Dans la majeur partie c'est toujours un gain de place par apport au nom donnée, mais nous pouvons faire mieux. La Base 36 !

Une fois 9 passé on utilise une lettre de l'alphabet. Ce qui  nous donne 26 possibilité de plus et avec le 0 à 9 cela nous fait 36 tiles codé sur une seule lettre.
Fusion est capable de reconnaître les minuscules et les majuscules dans un test de chaîne. Donc la valeur a et A peuvent être dans l'exemple deux tiles différent ce qui r'ajoute 26 possibilités de plus soit  62 possibilités codé sur un seul Octet au lieu de 10 en utilisant un chiffre. En général à moins d'une 60en de tiles on divise par deux la taille du fichier. 

Voulou. C'était l'idée du matin.

Vous avez peut être des moyent encore de compresser tout ça ?

Edit :
Sting Parser encode le fichier en Ainsi donc Une lettre est bien un octet.
Si on passe par l'objet Fichier, ça encode en UTF-16LE le fichier de 300 octets se retrouve en 602 octets
Modifié le vendredi 23 août 2019 à 14:39 par Monos
Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
jeudi 5 février 2015 à 11:29
Salut salut,

Et si 62 tiles différentes n'est toujours par assez, on peut utiliser des lettre accentuées, lettres grecques, symboles monétaires...
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 23 visiteurs au total

Derniers messages