CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] Sauvegardes

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
20 avril 2005 à 18:00:16

Salut,

voila, j´ai besoin de sauvegarder des infos à long terme ( pas dans le programme courant seulement).
Bien sûr, j´ai mon idée comment le faire ( on écrit dans un fichier text, et après on va lire le contenu).
Mais le problème est le fait que le fichier text est facilement accessible, ou même compréhensible; ce qui est génant pour un système de sauvegarde ( facilement modifiable).
Donc je désirais savoir comment en général, dans les jeux sur le commerce, les sauvegardes s´effectuent... Ont-ils des fichiers spéciaux pour ce genre de données?
En allant dans le rép de bf1942 je regarde les sauvegardes, elles sont au format . CON
L´intéret par rapport à un fichier txt?

Je me posait ensuite une autre question.
Par exemple je vais toujours dans le répertoire du Jeu battlefield 1942, et je vais sous movies.
( les vidéos du jeu si je comprend bien).
Je regarde: format inconnu ( .bik)
Y compris les musiques, . bik
Je me suis donc surtout intéressé aux musiques ( ben vi y a les droits d´auteur).
Comment est-ce possible de transformer ses musiques ( à l´origine en . mp3 ou limite en . wav dans ce genre de format illisible à l´extérieur du programme?)
Que doit-on utiliser pour lire ces formats de fichier?

Voila, qq questions auxquelles j´espère qq questions :)
Merci d´avance

[LoCkLeSs]
[LoCkLeSs]
Niveau 10
20 avril 2005 à 18:05:11

T´as essayé d´ouvrir le . CON avec le bloc note? S´il faut c´est un fichier texte, à laquelle ils sont donné l´extension . CON. Sinon pour te faire un format " perso" pas directement compréhensible à la lecture, tu peux te faire un petit syteme de cryptage, par exemple, pour toutes les lettres tu prend leur position dans l´alphabet et tu ajoutes 2...Donc au lieu d´avoir des lettres dans ton fichier texte tu as des chiffres, et ensuite tu fais le programme capable de déchiffrer le fichier encodé.

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
20 avril 2005 à 18:07:44

Oui en effet j´ai essayé de l´ouvrir et c´est pareil qu´un fichier text...
pour le cryptage oui ça peut être une bonne idée.

JeanYvesYves
JeanYvesYves
Niveau 10
20 avril 2005 à 18:12:47

il y a 2 façon de lire/écrire un fichier :

la façon " texte" que tu connais
la façon " binaire" qui est une façon + générale.
Note : la façon texte est juste un cas particulier de la façon binaire...

Pour lire ou écrire dans un fichier binaire, ouvre le et ferme le comme si tu faisais un fichier texte : rajoute " ios::binary" dans le constructeur de ton objet ifstream ou ofstream
( si tu utilises iostream)
jette ensuite un oeil sur les méthode ofstream::write et ifstream::read, qui permettent d´écrire un flux d´octets dans le fichier ou le relire.
Apres tu lis ou técris ce que tu veux : des int, des long, et char, des struct ce quetu veux...
et ça écrit tout ça en binaire...

Bref, tu fais ce que tu veux en mémoire, puis tu copie colle dans un fichier...

Apres, relire un fichier nécessite de connaitre son format...
Et ça, c´est une autre histoire :)

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
20 avril 2005 à 18:18:45

Apres, relire un fichier nécessite de connaitre son format...

Vi m´en doutais :)
Peut on écrire en binaire dans un fichier . txt?
Ca à l´air intéressant ( bien que compliqué).
Je vais voir ce que je peut faire!

Ensuite pour les zik, c´est donc aussi un format créer par les programmeurs du jeux? propre au jeu lui-même?
Merci pour vos deux réponses :)

[LoCkLeSs]
[LoCkLeSs]
Niveau 10
20 avril 2005 à 18:25:36

S´il faut c´est un simple mp3 qu´ils ont renommé, mais oui ça doit être un format perso sinon...

JeanYvesYves
JeanYvesYves
Niveau 10
20 avril 2005 à 18:30:47

Bien sur qu´on peut écrire un fichier texte au format binaire ( je te disais que le texte était juste un cas particulier d´une généralité) :
il suffit de mettre ta phrase dans un :
char table[] :
et tu fais un write de table, sur strlen(ta_chaine) octets.
Puis, avant d´écrire une autre phrase, il faut mettre le code de retour de ligne, qui, sous windows, fait 2 octets :
0D 0A.

Pour les formats, la musique MP3 a été créée par des physiciens spécialisés dans l´audio :
Ils compressent le flux wave en flux fréquentiel grace a la DCT ( theoreme des séries de Fourrier)
Puis utilisent le filtre " psycho" qui élimine tout ce que l´oreille n´entend pas
( ultrason, infrasons, petit bruit juste avant un tres gros, etc...)
puis font une égalisation binaire grace a la compression de Huffman
( pour la musique tu vois que c´est compliqué)

Pour le BMP, ça l´est moins :
le BMP, c´est 1078 octets :
4 octets pour la taille X
4 octets pour la taille Y
768 octets de palette
les autres, je ne sais pas
puis x*y des paquets de 3 octets qui représentent le codage de chaque couleur ( cas bmp 24 bits)
écrits en BGR ( blue, green, red) dans cet ordre, de gauche a droite, et de bas en haut ( et oui ! )

Le codage de fichier est qq chose de compliqué :)

Cependant, si tu veux faire un format simple, rien ne t´empeche par exemple de faire :

4 octets ( long) : nombre de joueurs :
pour chaque joueur :
{
2 octets ( short) : sa vie
2 octets ( short) : son attaque
2 octets ( short) : sa défense
}

Voila un codade simple :)

Enjoy !

fil_razorback
fil_razorback
Niveau 10
20 avril 2005 à 18:33:26

Merci, je vais en profiter aussi pour mon jeu en flash: je ferai un cryptage simple pour les saves :)

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
20 avril 2005 à 19:03:06

Hum, merci pour ces explications. :)
Je vais aller voir tout ça.
++

Lapintade
Lapintade
Niveau 30
20 avril 2005 à 19:13:10

Bik, ca serait ty pas des fichiers au format BINK ?

Sinon pour les sauvegarde, tu peux les faire en binaire et ajouter une checksum en fin de fichier, ou planqué ailleurs. Comme ca le petit malin qui modifie des données avec un editeur hexa, rends sa sauvegarde invalide.

Perdu_de_linfo
Perdu_de_linfo
Niveau 9
20 avril 2005 à 19:14:59

Si je comprend bien a chaque fois que tu modifie le fichier avec le programme, tu fais une " somme"?

Lapintade
Lapintade
Niveau 30
20 avril 2005 à 19:18:45

Yep.
Chaque fois que tu charge les données, tu verifie que cette " somme" est correcte.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment