Existe um motivo prático para salvar os dados do jogo em% UserProfile% \ Documents em vez de% AppData%?


33

Minha pasta de documentos está cheia de subpastas de vários jogos, incluindo os de alguns títulos AAA muito recentes. Como desenvolvedor de aplicativos profissional, sem experiência no setor de jogos, isso está totalmente errado, esses arquivos pertencem a% APPDATA% ou% LOCALAPDATA%.

Minha pergunta é: existe uma decisão consciente de colocar esses arquivos em% UserProfile% \ Documents para obter alguns benefícios específicos ou esse é apenas um comportamento herdado herdado dos dias do Windows XP? Ou existe uma razão ainda melhor como, por exemplo, o Steam exigindo ou recomendando isso ou um mecanismo popular fazendo isso por padrão?

Relacionado: Em qual diretório escrever o jogo, salvar arquivos / dados? (para evitar discussões inúteis)



4
@ Loren Não, um jogo salvo é um arquivo / dados específico do aplicativo = APPDATA. Documentos do usuário são documentos salvos conscientemente pelo usuário. É assim que esses lugares são definidos.
Peter Peter

1
Alguém poderia argumentar isso de qualquer maneira. Eu esperaria encontrar salvamentos em documentos, configuração no AppData.
Loren Pechtel 12/09

2
Como as campanhas em um jogo não são "documentos salvos conscientemente"? E como os documentos do Photoshop (PSD) não são "específicos para aplicativos"?
Damian Yerrick

4
Isso me irritou por um longo tempo. A pasta Documentos é um local ruim para colocar arquivos automaticamente, seja um local adequado para eles ou não. A pasta 'Meus documentos' deve ser reservada para os MEUS documentos que eu escolhi explicitamente para colocar lá, para que eu possa acompanhar minhas próprias coisas pessoais. Não são pedaços de dados relacionados à metade do software no meu sistema. Que bagunça ímpia! Eu nem uso mais a pasta Documentos. Eu uso o meu próprio, em uma unidade separada, então tenho esse diretório na minha biblioteca de Documentos e o padrão foi removido.
Fuzzy Logic

Respostas:


35

Não, não mesmo.

Tradicionalmente, os desenvolvedores de jogos não são bons em respeitar as convenções estabelecidas por um sistema operacional. Embora seja justo, muitos desenvolvedores de aplicativos regulares também não.

As %AppData%pastas e documents são para salvar dados por usuário. A diferença entre eles, para os fins desta pergunta, é principalmente o local %AppData%onde o usuário não precisa ver ou interagir, e a pasta de documentos é o documento do usuário : o material com o qual eles gostariam de ver e interagir. .

Às vezes, os jogos armazenam suas configurações e salvam arquivos na pasta de documentos, porque os tornam visíveis, para que menos usuários técnicos os vejam e tenham a certeza de que eles existem, ou terão maior probabilidade de fazer backup deles corretamente se o método de backup for um bruto ", copie as coisas na minha pasta de usuário para outra unidade."

Às vezes, os jogos também armazenam arquivos lá porque eles não alteraram o comportamento do código relevante das versões mais antigas do sistema operacional, como você suspeita, ou simplesmente porque eles não se importam em pensar muito no problema.

É bobagem e geralmente errada, mas é o que é.


2
Outra vantagem é que os usuários podem instalar mundos, pacotes de textura etc. sem precisar cavar% APPDATA%.
Bardi Harborow 12/09

14
Lembro-me de que o SPORE salvou seus dados na minha pasta de documentos, e não na %appdata%parte de trás quando o recebi. Quando olhei para a pasta, todas as minhas criaturas foram salvas como imagens png, o que foi incrível, e acho que foi colocado na pasta de documentos de propósito, para que as pessoas pudessem compartilhar e baixar mais criaturas e veículos com facilidade. Com isso dito, não tenho idéia de por que os jogos que usam apenas um produto bruto save.datdecidem colocar suas coisas lá.
Gustavo Maciel

Há um bom artigo sobre como Spore conseguiu, gostaria de poder encontrá-lo.
TankorSmash 13/09/2015

2
Alguém perguntou sobre isso neste site aqui ; uma das respostas faz referência a um artigo em que você possa estar pensando (que está localizado aqui ).
Josh

6
Teoricamente, o melhor curso de ação no Vista ou mais recente é usar o SHGetKnownFolderPath(FOLDERID_SavedGames, 0, NULL, &path)que por padrão é %UserProfile%\Saved Games. Dessa forma, o usuário pode encontrar e fazer backup de seus dados de jogos salvos facilmente, mas eles não atrapalham. Quaisquer outros dados que não sejam progresso e / ou configuração (por exemplo, sombreadores compilados, ativos baixados ou otimizados por plataforma, etc.) devem entrar em appdata.
bcrist

18

Olhando para o meu disco, eu tenho

  • 1 jogo que salva savegames em %APPDATA%
  • 1 jogo que salva savegames em %LOCALAPPDATA%
  • 2 jogos que salvam "outras coisas" em %APPDATA%
  • 3 jogos que salvam "outras coisas" em %LOCALAPPDATA%
  • 2 jogos que salvam savegames em %UserProfile%\Saved Games
  • 21 jogos que salvam savegames e muitas outras coisas %UserProfile%\Documents, sem contar ...
  • 15 jogos que salvam savegames e muitas outras coisas em %UserProfile%\Documents\My Games

Essa é uma proporção de 1: 9 para savegames sendo armazenados em %APPDATA%, %LOCALAPPDATA%, %UserProfile%\Saved Gamescontra %UserProfile%\Documents\*. Na minha amostra, todos os 4 jogos que não colocam savegames %UserProfile%\Documents\ou%UserProfile%\Documents\My Games\ são de pequenos estúdios. Portanto, devo presumir que os grandes estúdios com milhões de custos de desenvolvimento têm uma razão para colocar todos os seus arquivos - incluindo arquivos temporários - %UserProfile%\Documents\*.

Embora o comportamento herdado possa explicar um pouco disso, não acho que seja uma razão suficientemente forte para explicar todos os grandes estúdios colocam seus arquivos no lugar errado. Então, tem que haver uma razão melhor.

A melhor razão pela qual consigo pensar é reduzir o custo do suporte ao cliente . O problema é que %APPDATA%e %LOCALAPPDATA%são diretórios ocultos, e ninguém parece saber %UserProfile%\Saved Games. Ao colocar os arquivos Documents, os estúdios podem economizar dinheiro em chamadas de suporte que perguntam como fazer backup de jogos de saves ou como migrar os jogos de uma máquina para outra. Exemplos de usuários que não conseguiram encontrar savegames porque estavam localizados %APPDATA% aqui , aqui , aqui e aqui .

Outro motivo pode ser porque os usuários solicitam , como acontece neste exemplo .


1
Apenas para adicionar outro ponto de dados (e porque eu estava curioso), as contagens para o meu PC são 19, 10, 10, 17, 6, 45 e 31. Há também 50 jogos com jogos salvos e / ou outros dados em steam\userdatae 5 jogos com salva / dados em %ProgramData%. Isso não conta com nenhum jogo que mantenha tudo isso em seu diretório de instalação ou tenha conseguido encontrar outro local para armazenar dados ou salvar.
Ross cume

@RossRidge Obrigado, isso é útil. Na sua amostra, você vê alguma tendência em relação aos jogos independentes ou aos grandes jogos de estúdio?
Peter

Parece mais provável que os jogos independentes estejam em uma das quatro primeiras categorias, mesmo porque é aí que o ambiente de tempo de execução deles coloca coisas (por exemplo, Flash).
Ross Ridge

4

Não lembro o número de jogos que tive que recomeçar após um backup / restauração ou algo semelhante, porque movi todos os meus arquivos importantes dos meus documentos, mas esqueci completamente os dados de aplicativos do usuário, como salvar arquivos, porque geralmente com arquivos de programa ou outros lugares estranhos (como em uma pasta oculta, como appdata).

Pessoalmente, por esse motivo, gosto de tê-lo em meus documentos, embora tenha certeza de que alguém me dirá para obter um sistema de backup adequado em vez de fazê-lo manualmente.

Um pouco de consistência seria bom e ainda melhor para serviços como o Steam manter cópias de arquivos salvos em uma rede em algum lugar.


1
O Steam possui armazenamento em nuvem desde 2009. No entanto, exige que os desenvolvedores escolham usá-lo e só funciona se o usuário o tiver ativado. A maioria dos jogos mais novos agora suporta, mas muitos outros ainda não.
bcrist 14/09/15

Usarei qualquer desculpa para dizer às pessoas que eles precisam fazer backups e também gosto de consistência, mas o diretório de dados do aplicativo não é um 'lugar estranho' para armazenar dados do aplicativo, é a pasta de documentos. Armazenar arquivos onde eles não pertencem torna muito mais difícil para mim gerenciar meus backups.
Marcks Thomas

0

De minha própria experiência pessoal, escolhi salvar no% UserProfile% porque o usuário sempre teve acesso de leitura / gravação / modificação a ele, sem precisar alterar nenhuma das permissões.

Isso não era verdade com% APPDATA%. Principalmente ao usar contas de usuário restritas, geralmente você não tem acesso de gravação a arquivos criados por outras contas dentro de% APPDATA%. Eu imagino que os títulos AAA fizeram a escolha pelo mesmo motivo que nós; nós não queremos a dor de cabeça.


3
Tenho certeza de que você está recebendo o APPDATA (C: \ Users \ Nome de usuário \ AppData), que é gravável pelo usuário, misturado com PROGRAMDATA (C: \ ProgramData), que geralmente não é gravável pelo usuário. windows.microsoft.com/en-us/windows-8/what-appdata-folder
Patrick M

1
O ponto principal de% APPDATA% é que é gravável pelo usuário. Está especificamente lá porque C: \ Arquivos de Programas não pode ser gravado pelo usuário.
Bardi Harborow

@PatrickM Você está certo, eu estava falando sobre ProgramData. Desculpe. Qual é a melhor maneira de excluir a resposta?
David

0

Da minha perspectiva pessoal como usuário, eu distingo principalmente entre os dados dos quais eu quero backups e os que não me interessam.

Criando backups incrementais de %LOCALAPPDATA% é uma bagunça, porque sobrecarregará o backup com dezenas de milhares de arquivos temporários, muitos dos quais são bloqueados por serviços em segundo plano. Isso faz com que os backups sejam lentos (sobrecarga alta de muitos arquivos pequenos) e desnecessariamente grandes (os arquivos temporários que mudam frequentemente sabotam a parte "incremental"). Para evitar isso, é necessário manter manualmente uma lista de exclusão.

%APPDATA%é um pouco melhor, pois não deve conter arquivos temporários , como caches - infelizmente, de qualquer maneira, e muitas das configurações do programa realmente não justificam um backup.

Por fim, os jogos salvos são um tipo de dados com o qual quero interagir como usuário, e eles %UserProfile%\AppDatanão se prestam a isso.


-3

Por que não usar / "pasta de instalação do jogo" / savegame / como os jogos mais antigos? Eu nunca entendi por que colocar savegames na pasta oculta ou mesmo nos meus documentos na unidade do sistema?

Antigamente, você sempre sabia onde estavam os jogos de saves.


3
Esta pasta está protegida contra gravação. Você teria que começar o seu jogo como administrador. Isso é irritante e não está disponível para todos os usuários (um pai que deseja proteger seu computador de seus filhos instalando o que for, por exemplo).
Vaillancourt

1
"game installation folder" is %ProgramFiles%\<gamename>. %ProgramFiles% is meant to be modified only during installation/deinstallation of programs. Since Windows XP/Vista applications writing to that directory need to be run as administrator, to make it harder for say, a virus to replace word.exe with an infected version of word.exe. Another reason is that Microsoft wanted multiple users to be able to use the same programs without having to share their personal files, in this case savegames. There are other/better ways to address these issues, but they were not chosen at the time.
Peter
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.