Question:
L'utilisation de ALT + F4 pour fermer un jeu pourrait-elle corrompre les données de sauvegarde?
Haider
2016-01-14 23:23:00 UTC
view on stackexchange narkive permalink

Je suis assez nouveau dans le jeu sur PC après avoir eu une PS3.Je ne suis pas passé à la PS4, mais je suis plutôt allé au jeu sur PC.Jusqu'à présent, tout est génial.

Cependant, il y a une chose qui m'inquiète;en quittant un jeu en utilisant alt + F4 sous Windows, cela pourrait-il corrompre le fichier de sauvegarde, en particulier pendant la sauvegarde automatique?


Attention. Ces réponses sont générales et peuvent ne pas s'appliquer à votre jeu spécifique et dans certaines circonstances inhabituelles, appuyer sur Alt-F4 peut corrompre votre fichier de sauvegarde de toute façon.(Exemple: le jeu s'exécute dans Dosbox, ou un émulateur, ou un terminal, ou vous appuyez sur Alt-F4 sur une fenêtre qui est bloquée et confirmez ensuite que vous voulez tuer le processus.)

Utilisation de ALT-F4 pour quitter un jeu est à vos risques et périls.

J'imagine que cela n'affecte les données de sauvegarde que si vous Alt + F4 pendant que le jeu enregistre votre fichier.Je ne peux pas imaginer pourquoi cela aurait un effet sur la sauvegarde des données autrement, cela n'a tout simplement aucun sens.
Six réponses:
Mason Wheeler
2016-01-15 02:02:53 UTC
view on stackexchange narkive permalink

En tant que programmeur, les deux réponses publiées jusqu'à présent sont incorrectes. S'il est possible de trouver une situation hypothétique dans laquelle appuyer sur Alt + F4 corromprait une sauvegarde en cours, le faire nécessiterait les développeurs doivent délibérément faire tout leur possible pour bousiller le système de sauvegarde.

Du point de vue du codage, l'utilisateur qui appuie sur Alt + F4 ne le fait pas «ferme la fenêtre active», ni «n'interrompt le programme». Ce qu'il fait, c'est que Windows place un message WM_CLOSE dans la file d'attente d'événements du programme. C'est tout.

La file d'attente d'événements, comme son nom l'indique, est une file d'attente d'événements que le programme doit traiter; cela consiste principalement en une entrée de l'utilisateur. Au cœur du code de pratiquement tous les programmes pilotés par des entrées externes, y compris les jeux, se trouve ce que l'on appelle une boucle d'événements , qui vérifie les entrées dans la file d'attente d'événements, les traite, puis répète les deux dernières étapes dans une boucle pour toujours jusqu'à ce qu'il soit temps d'arrêter.

Il y a deux choses à garder à l'esprit ici. Le premier est que la boucle d'événements est une chose linéaire: vous ne traitez pas l'événement n ° 2 tant que vous n'avez pas terminé le traitement de l'événement n ° 1.

Et le second est qu'un code WM_CLOSE > le message ne "quitte pas le programme". C'est un type d'entrée spécial, rien de plus. Il indique au programme que l'utilisateur a demandé que le programme ferme la fenêtre courante. Le programme est libre de répondre à cela de la manière dont son code l'indique, y compris l'ignorer complètement. (C'est une chose très grossière à faire, mais les développeurs le font parfois.) L'une des réponses les plus courantes est de demander à l'utilisateur "Voulez-vous enregistrer avant de quitter?" et / ou de fournir un moyen d'annuler la demande de fermeture.

Que se passe-t-il donc si l'utilisateur appuie sur Alt + F4 alors que le jeu est en cours de sauvegarde? Gardez à l'esprit le premier point: le traitement est linéaire. En supposant que la sauvegarde a lieu dans le thread principal - que je couvrirai un peu plus loin - le code ne peut même pas vérifier la file d'attente d'événements pour voir qu'il a reçu un message WM_CLOSE jusqu'à ce l'enregistrement est terminé. Il n'y a donc rien à interrompre.

Il est toujours possible qu'un programme informatique fasse deux choses à la fois. Ceci est connu sous le nom de multithreading , exécutant au moins deux "threads" linéaires d'exécution de code en même temps. Quelqu'un pourrait donc demander: "Que se passe-t-il s'il est enregistré dans un fil de discussion différent pendant que le message WM_CLOSE arrive et est traité?" La réponse à cette question est que tous les développeurs qui font cela, leur code est susceptible de corrompre les fichiers de sauvegarde à gauche, à droite et au centre même sans que l'utilisateur ne demande à quitter à un moment inopportun. En effet, sauvegarder signifie écrire sur disque une copie de l'état du jeu en ce moment. Si vous faites cela sans interrompre le jeu, il est possible que quelque chose puisse changer entre le moment où vous commencez à enregistrer et lorsque vous avez terminé, puis le fichier de sauvegarde se termine par des données qui se réfèrent à l'ancien état du jeu et d'autres qui font référence. au nouvel état, qui n'a aucun sens ensemble, et vous avez maintenant un fichier de sauvegarde corrompu.

C'est en fait l'une des premières choses que l'on apprend sur le multi-threading: ne laissez jamais deux threads toucher les mêmes données en même temps si l'un d'entre eux (ou les deux) va les changer. Ne pas suivre ce principe crée des conditions de compétition où les données sont corrompues et les choses échouent de manière bizarre. Tout développeur compétent fera tout son possible pour éviter les scénarios dans lesquels une condition de concurrence apparaîtrait. Donc, un développeur enregistrant du code qui effectue une sauvegarde sur un thread séparé serait très probablement regardé avec horreur par le reste de l'équipe de développement!

TL; DR: Si votre Le jeu effectue déjà des sauvegardes automatiques sans se corrompre, il est prudent de supposer qu'il n'y a aucun risque de corruption en demandant poliment au jeu de s'arrêter, (c'est ce que fait Alt + F4 ,) même si vous le faites au milieu d'une sauvegarde. Lorsque les écrans d'avertissement vous indiquent de ne pas arrêter le jeu pendant la sauvegarde, cela signifie la mise hors tension ou d'autres moyens plus drastiques de mettre fin au jeu.

Les commentaires ne sont pas destinés à une discussion approfondie;cette conversation a été [déplacée vers le chat] (http://chat.stackexchange.com/rooms/34387/discussion-on-answer-by-mason-wheeler-could-using-alt-f4-to-close-saints-rangée-4).
** Arrêtez ** la discussion ici.Une nouvelle discussion a lieu dans [chat] (http://chat.stackexchange.com/rooms/34387/discussion-on-answer-by-mason-wheeler-could-using-alt-f4-to-close-saints-row-4).
Cette réponse a [un message Meta] (http://meta.gaming.stackexchange.com/questions/11216/what-do-we-do-with-highly-upvoted-accepted-wrong-answers).Veuillez faire part de vos réflexions.
Ryan
2016-01-14 23:28:22 UTC
view on stackexchange narkive permalink

Tout ce qui interrompt le programme pendant son écriture peut corrompre le fichier de sauvegarde.Si vous voulez éviter de corrompre les sauvegardes, utilisez la séquence intégrée du jeu pour quitter le programme.

Arrêtez la discussion ici.Si vous avez quelque chose à discuter, veuillez le faire dans [chat] (http://chat.stackexchange.com/rooms/34387/discussion-on-answer-by-mason-wheeler-could-using-alt-f4-to-close-saints-row-4).
jimmyplaysdrums
2016-01-15 00:16:06 UTC
view on stackexchange narkive permalink

ALT + F4 est généralement correct pour arrêter un jeu. Le problème principal est que cela indiquera au jeu que vous souhaitez qu'il s'arrête et cela dépend de la façon dont le programmeur a décidé de gérer lorsqu'un utilisateur appuie sur ALT + F4 alors que le jeu n'a pas été enregistré.

Ce n'est pas vraiment un problème pour le jeu que vous enregistrez vous-même en faisant une pause et en sélectionnant "enregistrer" dans le menu. Mais certains jeux ont une "sauvegarde automatique". Ils enregistreront automatiquement votre partie pendant que vous jouez. Si vous ALT-F4 pendant l'un de ces processus de sauvegarde, vous risquez très bien de corrompre vos données de sauvegarde si le jeu a été mal programmé.

Si vous ajoutez, demandez-lui de quitter le jeu pendant qu'il est en cours de sauvegarde, il devrait techniquement terminer la sauvegarde avant de passer à votre commande de quitter mais il y a (pas souvent mais cela arrive) des moments où un jeu a été programmé si mal, il pourrait utiliser le multithreading pour enregistrer tout en traitant également votre commande quit.

Habituellement, les jeux qui ont une "sauvegarde automatique" auront une icône qui apparaîtra quelque part dans le coin de l'écran pour vous faire savoir qu'il est en cours de sauvegarde. La plupart des écrans de chargement vous indiqueront "Ne pas éteindre ou quitter le jeu lorsque vous voyez cette icône".

Voici quelques exemples de jeux vous parlant de leurs icônes de sauvegarde automatique: Autosave Loading Screen 1

Autosave Loading Screen 2

TL; DR: Il est généralement acceptable d'utiliser ALT + F4 pour fermer une partie. Il y a des moments improbables mais possibles où cela pourrait corrompre les données de sauvegarde, mais ce ne sera probablement pas le cas. Si vous voulez être en sécurité, utilisez le menu du jeu pour quitter le jeu.

Arrêtez la discussion ici.Si vous avez quelque chose à discuter, veuillez le faire dans [chat] (http://chat.stackexchange.com/rooms/34387/discussion-on-answer-by-mason-wheeler-could-using-alt-f4-to-close-saints-row-4).
Kevin
2016-01-16 22:50:51 UTC
view on stackexchange narkive permalink

Si l'application plante lorsqu'elle se ferme (ce qui est un problème connu dans Undertale , Cities: Skylines , Dragon Age: Origins , et beaucoup d'autres jeux), alors vous ne devriez pas le quitter au milieu de la sauvegarde. La réponse de @ MasonWheeler suppose que le jeu ne plante pas. Crashing annule tout, met fin à tous les threads et est généralement un moyen très brusque de quitter un programme.

Bien qu'il soit possible que toutes les écritures aient déjà été transmises au noyau (et seront complétées automatiquement) , il est également possible que le jeu effectue plusieurs écritures (par exemple, Minecraft en fait utilise plusieurs fichiers de sauvegarde et doit utiliser une technique d'écriture multiple), auquel cas une interruption au mauvais moment pourrait ne laisser que certaines de ces écritures complètes. De plus, Linux (et peut-être Mac OS X, je n'ai pas étudié) ne dispose pas de véritables écritures asynchrones (les fonctions aio_ * ne sont en fait que des écritures synchrones exécutées par-dessus un pool de threads de l’espace utilisateur), ce qui signifie qu’il n’est pas vraiment possible d’effectuer une «écriture manuelle sur le noyau» en premier lieu sur cette plate-forme.

Puisque vous ne pouvez pas savoir que votre jeu n’a pas un bug qui plante , vous ne devriez pas du tout Alt + F4 sauf si vous aimez vivre dangereusement.

juste point mais je ne suis pas d'accord avec votre conclusion.Votre conclusion est applicable à tout, donc cela conduirait à: N'utilisez aucune fonctionnalité d'un logiciel à source fermée car vous ne pouvez pas savoir qu'il n'a pas de bogues.Et c'est ridicule!
@Zaibis: Il y a peu ou pas d'avantages à utiliser Alt + F4.Pourquoi prendre des risques inutiles?
Je ne discute pas des avantages du raccourci alt f4.Je suis même avec toi ici.mais la base des arguments à ce sujet est quelque chose que je ne vois vraiment pas de cette façon.
Pour mémoire, il ne s'agit pas d'open source ou de source fermée.Tout logiciel peut avoir des bogues.Vous devez juger les avantages et les risques au cas par cas.Je juge que Alt + F4 n'en vaut pas la peine.C'est tout ce que ma réponse dit.
Ok, mais vous devez vous rappeler qu'il y a une différence entre expliquer quelque chose tel qu'il est et expliquer quelque chose comme vous le vivez.votre réponse me semble être la seconde alors qu'elle devrait être la première (puisque nous ne pouvons pas juger ici).Rien d'autre n'est ce que j'essaie de clarifier.
@Zaibis: J'ai * deux paragraphes entiers * du premier et * une phrase * du second (qui, soit dit en passant, quelqu'un a édité d'une manière que j'ai depuis partiellement annulée - voir l'historique des modifications pour plus de détails).
Je suis désolé, j'ai lu votre réponse au mauvais moment et je vous ai fait du tort.
Problème connu dans Undertale?L'enregistrement est à peu près instantané dans Undertale, et même dans ce cas, le jeu ne vous permettra pas de quitter pendant l'enregistrement.
Hagen von Eitzen
2016-01-15 02:26:21 UTC
view on stackexchange narkive permalink

Conformément aux Consignes de Microsoft pour l'interface utilisateur du clavier, Alt + F4 devrait "Fermer l'élément actif ou quitter l'application active".

Au niveau de l'application, cela devrait diffuser un message WM_QUIT .Pour les applications avec des "documents" non enregistrés ou sales ouverts, cela devrait à nouveau présenter à l'utilisateur un message demandant s'il faut ou non enregistrer les modifications.Par conséquent, si les programmeurs se sont souciés de respecter toutes ces spécifications, Alt + F4 devrait vous demander si vous souhaitez sauvegarder l'état du jeu.Cependant, tout le monde ne se soucie pas des spécifications, donc cela peut être sûr sur certains jeux et non sûr sur certains.

"_qui devrait diffuser un message WM_QUIT_", non, il met en file d'attente un `WM_CLOSE`, qui par défaut fermera la fenêtre, mais pas quitter le programme.`WM_CLOSE` doit être manipulé par le programme pour appeler` PostQuitMessage () `, qui, lorsqu'il est géré correctement, doit quitter la boucle principale du programme.
user101016
2016-01-26 20:20:04 UTC
view on stackexchange narkive permalink

Cependant, il y a une chose qui m'inquiète; en quittant un jeu en utilisant alt + F4 sous Windows, est-ce que cela pourrait corrompre le fichier de sauvegarde du jeu, en particulier pendant la sauvegarde automatique?

La réponse courte

Cela dépend du jeu, et j'ai trouvé que ALT + F4 est généralement un moyen sûr de fermer une partie. La corruption n'est jamais voulue, elle est donc mieux expliquée par des bogues ou une mauvaise conception du code.

La réponse longue:

Selon la documentation officielle de Microsoft:

L'utilisateur peut fermer une fenêtre d'application en cliquant sur le bouton Fermer ou en utilisant un raccourci clavier tel que ALT + F4. L'une de ces actions entraîne la réception d'un message WM_CLOSE par la fenêtre. Le message WM_CLOSE vous donne la possibilité d'inviter l'utilisateur avant de fermer la fenêtre.

Par conséquent, l'utilisation de ALT + F4 dépend de la façon dont le jeu a été programmé pour gérer WM_CLOSE messages. Cependant, il y a d'autres facteurs à prendre en compte:

  • Quels autres processus sont en cours d'exécution (par exemple, sauvegarde automatique)
  • Qualité du code (c'est-à-dire potentiel de bogues)

Par expérience personnelle, je n'ai jamais vu de corruption de jeu en utilisant ALT + F4 en milieu de partie. Le seul effet que j'ai remarqué est que vous revenez à votre dernier point de contrôle / fichier de sauvegarde enregistré (dépend du jeu). En fait, j'utilise souvent ALT + F4, préférant cliquer pendant 2 minutes pour essayer de quitter un jeu via les menus.

Vous devriez constater que tout jeu qui offre une fonction de sauvegarde fera une copie du monde du jeu à un moment précis. Tant qu'il est possible de charger la sauvegarde (normalement via une option Charger dans le menu, mais peut également s'appliquer à vous placer automatiquement à votre dernier point de contrôle enregistré dans certains jeux), vous devriez être confiant que ALT + F4 en milieu de partie est sûr. En fait, vous trouvez des jeux qui proposent de sauvegarder lorsque vous utilisez ALT + F4.

Cependant, ALT + F4 pendant le processus de sauvegarde peut comporter un risque. Le code devrait gérer ce scénario spécifiquement. Il s'agit essentiellement de permettre à la fonctionnalité de sauvegarde automatique de se terminer une fois qu'un message WM_CLOSE est reçu.

Je dis en gros, mais il peut être difficile de trouver le bon code. Encore plus si vous tenez compte du fait que le jeu utilise probablement des threads. Les threads critiques pour la sauvegarde du jeu doivent pouvoir se terminer avant de fermer l'application. Différentes versions de Windows ont également des différences subtiles dans la façon dont elles implémentent les threads (tout comme la bibliothèque que vous utilisez, même la bibliothèque standard C ++ change entre les versions).

En ce qui concerne les threads, tant de choses peuvent mal tourner . Le code du buggy et une mauvaise conception sont deux facteurs. Il est également possible que des choses légèrement différentes puissent se produire selon le moment où (pendant le processus) vous appuyez sur ALT + F4. Vous pouvez obtenir un comportement différent si vous appuyez dessus avant que TOUT fichier de sauvegarde n'ait été écrit.

De nombreux jeux qui proposent une sauvegarde automatique ont un message d'avertissement vous demandant de ne pas éteindre la machine pendant une sauvegarde automatique . Je ne considérerais jamais que ALT + F4 est une bonne idée à mi-sauvegarde. Cela peut être sûr, mais il n'y a aucune garantie. Techniquement, les messages d'avertissement parlent de scénarios dans lesquels un fichier de sauvegarde peut être partiellement écrit parce que l'alimentation a été perdue en cours de processus, mais j'aime être prudent. Perdre des heures que vous consacrez à un jeu est très frustrant. Pourquoi le risquer?

Un autre point à considérer est la destination de sauvegarde des "fichiers". De plus en plus de jeux s'éloignent des fichiers locaux pour se tourner vers des services basés sur le Cloud et d'autres services Web. ALT + F4 pendant un tel processus de sauvegarde pourrait potentiellement écrire partiellement les données (et donc créer une corruption).



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...