Есть ли практическая причина для сохранения игровых данных в% UserProfile% \ Documents вместо% AppData%?

33

Папка с моими документами заполнена подпапками различных игр, в том числе некоторых самых последних игр AAA. Как профессиональный разработчик приложений, не имеющий опыта работы в игровой индустрии, это просто неправильно, эти файлы принадлежат% APPDATA% или% LOCALAPDATA%.

У меня вопрос: есть ли сознательное решение поместить эти файлы в% UserProfile% \ Documents, чтобы получить некоторые конкретные преимущества, или это просто устаревшее поведение, перенесенное со времен Windows XP? Или есть еще лучшая причина, например, Steam, требующий или рекомендующий это, или популярный движок, делающий это по умолчанию?

Связанный: В какой директории записать игру, сохранить файлы / данные? (чтобы избежать бессмысленных дискуссий)

Питер
источник
4
@Loren Нет, игра сохранения - это файл / данные приложения = APPDATA. Пользовательские документы - это документы, сознательно сохраненные пользователем. Вот как эти места определены.
Питер
1
Можно спорить так или иначе. Я ожидаю найти сохранения в документах, конфигурации в AppData.
Лорен Печтел
2
Как кампании в игре не являются «документами, сохраненными сознательно»? И как документы Photoshop (PSD) не являются "конкретными для приложения"?
Дамиан Йеррик
4
Это раздражало меня в течение долгого времени. Папка «Документы» - плохое место для автоматического размещения файлов независимо от того, подходит ли это место для них или нет. Папка «Мои документы» должна быть зарезервирована для МОИХ документов, которые я явно выбрал для размещения там, чтобы я мог отслеживать свои личные вещи. Не части данных, связанных с половиной программного обеспечения в моей системе. Какой безбожный беспорядок! Я даже больше не использую папку «Документы». Я использую свой собственный, на отдельном диске, тогда у меня есть этот каталог в моей библиотеке документов и удален по умолчанию.
Нечеткая логика

Ответы:

35

Нет, не совсем.

Разработчики игр традиционно не были в состоянии соблюдать соглашения, установленные операционной системой. Хотя, честно говоря, многие обычные разработчики приложений тоже этого не делают.

В %AppData%и документах папки для сохранения каждого пользователя данных. Различие между ними для целей этого вопроса заключается, главным образом, в том, что %AppData%туда, куда пользователь не должен видеть или взаимодействовать, а папка документов предназначена для документов пользователя : вещи, которые он хотел бы видеть и взаимодействовать с ними. ,

Игры иногда сохраняют свои настройки и сохраняют файлы в папке документов, потому что это делает их видимыми, поэтому менее технические пользователи увидят их и будут уверены, что они существуют, или с большей вероятностью правильно их создадут, если их метод резервного копирования является сырой, "скопировать вещи из моей пользовательской папки на другой диск".

Игры также иногда хранят файлы там, потому что они не изменили поведение соответствующего кода по сравнению с более старыми версиями ОС, как вы подозреваете, или просто потому, что им не нужно слишком много думать о проблеме.

Это глупо и обычно неправильно, но это то, что есть.

мистифицировать
источник
2
Другое преимущество состоит в том, что пользователи могут устанавливать миры, пакеты текстур и т. Д. Без необходимости копать в% APPDATA%.
Барди Харбороу
14
Я помню, как SPORE сохранял свои данные в папке с документами, а не на %appdata%обратной стороне, когда я их получил. Когда я посмотрел в его папку, все мои существа были сохранены в виде изображений в формате png, это было довольно удивительно, и я думаю, что это было специально помещено в папку документов, чтобы люди могли легко делиться и загружать больше существ и транспортных средств. С учетом вышесказанного, я понятия не имею, почему игры, которые используют только сырую, save.datрешают поместить свои вещи туда.
Густаво Масиэль
Где-то есть хорошая статья о том, как Спора справилась, хотелось бы ее найти.
TankorSmash
2
Кто-то спросил об этом на этом сайте здесь ; один из ответов ссылается на рецензию, о которой вы, возможно, думаете (она находится здесь ).
Джош
6
Теоретически, лучший способ действий на Vista или новее - это использовать SHGetKnownFolderPath(FOLDERID_SavedGames, 0, NULL, &path)по умолчанию %UserProfile%\Saved Games. Таким образом, пользователь может легко найти и сохранить свои сохраненные игровые данные, но это не помешает. Любые данные, кроме хода выполнения и / или конфигурации (например, скомпилированные шейдеры, оптимизированные для платформы или загруженные ресурсы и т. Д.), Должны помещаться в appdata.
bcrist
18

Глядя на мой диск, у меня есть

  • 1 игра, которая сохраняет savegames в %APPDATA%
  • 1 игра, которая сохраняет savegames в %LOCALAPPDATA%
  • 2 игры, которые сохраняют "другие вещи" в %APPDATA%
  • 3 игры, которые сохраняют "другие вещи" в %LOCALAPPDATA%
  • 2 игры, которые сохраняют игры в %UserProfile%\Saved Games
  • 21 Игры, в которых сохраняются сохраненные игры и множество других вещей %UserProfile%\Documents, не считая ...
  • 15 игр, которые сохраняют игры и множество других вещей в %UserProfile%\Documents\My Games

Это соотношение 1: 9 для сохранений хранятся в %APPDATA%, %LOCALAPPDATA%, по %UserProfile%\Saved Gamesсравнению с %UserProfile%\Documents\*. В моем примере все 4 игры, в которых нет сохраненных игр, %UserProfile%\Documents\или %UserProfile%\Documents\My Games\из крошечных студий. Поэтому я должен предположить, что большие студии с многомиллионными затратами на разработку имеют причину для размещения всех своих файлов, включая временные файлы %UserProfile%\Documents\*.

Хотя устаревшее поведение может объяснить это, я не думаю, что это достаточно веская причина для учета того, что каждая крупная студия помещает свои файлы в неправильное место. Так что должна быть лучшая причина.

Лучшая причина, которую я могу придумать, - это снизить стоимость поддержки клиентов . Проблема в том, что %APPDATA%и %LOCALAPPDATA%скрытые каталоги, и никто, кажется, не знает %UserProfile%\Saved Games. Размещая файлы Documents, студии могут сэкономить деньги на звонках в службу поддержки, которые спрашивают, как сделать резервную копию сохраненных игр или как перенести сохраненные игры с одного компьютера на другой. Примеры пользователей, которые не смогли найти сохраненные игры, потому что они находились %APPDATA% здесь , здесь , здесь и здесь .

Другая причина может быть в том, что пользователи просят об этом , как это происходит в этом примере .

Питер
источник
1
Просто, чтобы добавить еще одну точку данных (и, как мне было любопытно), для моего ПК подсчитано 19, 10, 10, 17, 6, 45 и 31. Есть также 50 игр с сохранением игр и / или других данных в steam\userdata5 играх. с сохранениями / данными в %ProgramData%. Это не относится к играм, которые хранят все эти вещи в своем каталоге установки или сумели найти какое-то другое место для хранения данных или сохранений.
Росс Ридж
@RossRidge Спасибо, это полезно. В вашем примере вы видите какую-то тенденцию относительно инди-игр против больших студийных игр?
Питер
Кажется более вероятным, что инди-игры попадают в одну из первых четырех категорий, хотя бы потому, что именно в них находится среда выполнения (например, Flash).
Росс Ридж
4

Я не хочу вспоминать количество игр, которые мне пришлось запустить заново после резервного копирования / восстановления или тому подобного, потому что я переместил все свои важные файлы из своих документов, но совершенно забыл о данных пользовательских приложений, таких как файлы сохранения, потому что это часто в файлах программы или других странных местах (например, в скрытой папке, такой как appdata).

Лично по этой причине мне нравится иметь это в моих документах, хотя я уверен, что кто-то скажет мне просто получить надлежащую систему резервного копирования вместо того, чтобы делать это вручную.

Было бы неплохо немного согласоваться, и еще лучше было бы, чтобы такие сервисы, как Steam, хранили где-то копии сохраненных файлов в сети.

Патрик
источник
1
В Steam облачное хранилище существует с 2009 года. Однако оно требует от разработчиков выбора его использования, и оно работает только в том случае, если у пользователя оно включено. Большинство новых игр теперь поддерживают это, но многие старые все еще не поддерживают.
Рождество
Я буду использовать любое оправдание, чтобы сказать людям, что они должны делать резервные копии, и мне тоже нравится последовательность, но каталог данных приложения - не «странное место» для хранения данных приложения, папка документов - это. Хранение файлов там, где они не принадлежат, значительно усложняет мне управление резервными копиями.
отмечает Томас
0

Исходя из моего личного опыта, я решил сохранить в% UserProfile%, потому что пользователь всегда имел к нему доступ для чтения / записи / изменения без необходимости изменения каких-либо разрешений.

Это было не так с% APPDATA%. В частности, при использовании учетных записей с ограниченным доступом у вас часто нет прав на запись в файлы, созданные другими учетными записями в% APPDATA%. Я предполагаю, что названия AAA сделали выбор по той же причине, что и мы; мы не хотели головной боли.

Дэвид
источник
3
Я уверен, что вы получаете APPDATA (C: \ Users \ Username \ AppData), который доступен для записи пользователем, смешанный с PROGRAMDATA (C: \ ProgramData), который часто недоступен для записи пользователем. windows.microsoft.com/en-us/windows-8/what-appdata-folder
Патрик М
1
Весь смысл% APPDATA% в том, что он доступен для записи пользователем. Это именно там, потому что C: \ Program Files не доступен для записи пользователем.
Барди Харбороу
@PatrickM Вы правы, я говорил о ProgramData. Сожалею. Каков наилучший способ удалить ответ?
Дэвид
0

С моей личной точки зрения как пользователя, я в первую очередь различаю данные, для которых я хочу создать резервную копию, и данные, которые меня не волнуют.

Создание инкрементных резервных копий %LOCALAPPDATA%является беспорядком, поскольку оно будет загромождать резервные копии десятками тысяч временных файлов, многие из которых заблокированы фоновыми службами. Это делает резервное копирование медленным (большие издержки из-за большого количества маленьких файлов) и излишне большими (часто меняющиеся временные файлы саботируют «инкрементную» часть). Для предотвращения этого необходимо вручную вести список исключений.

%APPDATA%немного лучше, так как он не должен содержать временные файлы, такие как кэши - к сожалению, в любом случае, и многие настройки программы действительно не требуют резервного копирования.

В конечном счете, сохраненные игры - это тип данных, с которыми я хочу взаимодействовать как пользователь, и %UserProfile%\AppDataэто не поддается этому.

KDB
источник
-3

Почему бы не использовать / "папку установки игры" / savegame /, как это было в старых играх? Я никогда не понимал, зачем помещать savegames в скрытую папку или даже в мои документы на системный диск?

В старые времена вы всегда знали, где находятся игры.

Sektor
источник
3
Эта папка защищена от записи. Вы должны начать свою игру в качестве администратора. Это раздражает и не доступно для всех пользователей (например, родитель, желающий защитить свой компьютер от своих детей, устанавливая что угодно).
Vaillancourt
1
"game installation folder"есть %ProgramFiles%\<gamename>. %ProgramFiles%предполагается изменять только во время установки / удаления программ. Поскольку приложения Windows XP / Vista, выполняющие запись в этот каталог, необходимо запускать с правами администратора, скажем, вирусу трудно заменить word.exe на зараженную версию word.exe. Другая причина заключается в том, что Microsoft хотела, чтобы несколько пользователей могли использовать одни и те же программы без необходимости делиться своими личными файлами, в данном случае - с играми. Есть и другие / лучшие способы решения этих проблем, но они не были выбраны в то время.
Питер