将游戏数据保存在%UserProfile%\ Documents中而不是%AppData%中是否有实际原因?


33

我的文档文件夹中充斥着各种游戏的子文件夹,包括一些最近的A​​AA游戏的子文件夹。作为没有游戏行业经验的专业应用程序开发人员,这完全是错误的,这些文件属于%APPDATA%或%LOCALAPDATA%。

我的问题是,是否有意识地决定将这些文件放入%UserProfile%\ Documents中以获得某些特定的好处,或者这仅仅是Windows XP时代遗留下来的遗留行为?还是有更好的原因,例如Steam要求或推荐这样做,或者流行的引擎默认这样做?

相关:在哪个目录中编写游戏保存文件/数据?(以避免无意义的讨论)



4
@Loren不,保存游戏是特定于应用程序的文件/数据= APPDATA。用户文档是用户有意识地保存的文档。这就是这些地方的定义方式。
彼得

1
有人可以这样争论。我希望在文档中找到保存内容,并在AppData中进行配置。
罗兰·佩希特尔

2
游戏中的战役如何不“有意识地保存文档”?以及Photoshop文档(PSD)如何不是“特定于应用程序”的?
Damian Yerrick

4
这困扰了我很长一段时间。无论是否适合放置文档文件夹,都无法自动放置文件。“我的文档”文件夹应保留给明确选择放置在此处的我的文档,以便我可以跟踪自己的个人资料。没有与我系统上一半软件相关的数据。多么糟糕的一团糟!我什至不再使用Documents文件夹。我在单独的驱动器上使用自己的驱动器,然后在文档库中拥有该目录,并删除了默认目录。
Fuzzy Logic

Answers:


35

不,不是。

传统上,游戏开发人员并不擅长遵守操作系统建立的约定。公平地说,许多常规应用程序开发人员也不是。

%AppData%和文件夹是用于保存每个用户的数据。就此问题而言,它们之间的区别主要在于%AppData%用户不需要查看或与之交互的东西,而documents文件夹用于用户的文档:他们希望与之交互的东西。 。

游戏有时会存储它们的设置并将文件保存在documents文件夹中,因为它可以使它们可见,因此,技术含量较低的用户会看到它们并确信它们确实存在,或者如果他们的备份方法是Windows XP,则更有可能正确地备份它们粗糙,“将用户文件夹中的内容复制到另一个驱动器。”

游戏有时还会在其中存储文件,这是因为它们没有像您怀疑的那样改变了旧OS版本中相关代码的行为,或者仅仅是因为它们不太在乎这个问题。

这很愚蠢,通常是错误的,但这就是事实。


2
另一个优点是用户可以安装世界,纹理包等,而无需深入%APPDATA%。
Bardi Harborow 2015年

14
我记得SPORE将其数据保存到我的documents文件夹中,而不是保存到%appdata%背面。当我查看其文件夹时,我的所有生物都保存为png图像,这真是太了不起了,而且我认为它是故意放到documents文件夹中的,因此人们可以轻松共享和下载更多的生物和车辆。话虽如此,我不知道为什么只使用粗略游戏的人save.dat决定将自己的东西放在那里。
古斯塔沃·麦克尼尔

关于“孢子”如何脱落的好文章,希望我能找到。
TankorSmash

2
有人在这里的网站上问过这个问题 ; 答案之一引用了您可能正在考虑的文章(位于此处)。
乔什

6
从理论上讲,在Vista或更高版本上最好的做法是使用SHGetKnownFolderPath(FOLDERID_SavedGames, 0, NULL, &path),默认情况下为%UserProfile%\Saved Games。这样,用户可以轻松找到并备份已保存的游戏数据,但不会妨碍您。除了进度和/或配置以外的任何其他数据(例如,编译的着色器,平台优化的或下载的资产等)都应放入appdata中。
bcrist

18

看我的磁盘,我有

  • 1个可保存游戏存档的游戏 %APPDATA%
  • 1个可保存游戏存档的游戏 %LOCALAPPDATA%
  • 2个游戏中保存“其他东西” %APPDATA%
  • 3个游戏中保存“其他内容”的游戏 %LOCALAPPDATA%
  • 2个将SaveGames保存在的游戏 %UserProfile%\Saved Games
  • 21个游戏,可将保存游戏和其他内容保存在中%UserProfile%\Documents,不包括在内...
  • 15个游戏,用于保存存档和其他内容 %UserProfile%\Documents\My Games

这是比例为1:被存储在9游戏存档%APPDATA%%LOCALAPPDATA%%UserProfile%\Saved Games%UserProfile%\Documents\*。在我的示例中,所有没有保存游戏%UserProfile%\Documents\%UserProfile%\Documents\My Games\来自小型工作室的4种游戏。因此,我不得不假设开发费用高达数百万美元的大型工作室有理由将其所有文件(包括临时文件)放入%UserProfile%\Documents\*

尽管传统的行为可以解释其中的某些原因,但我认为这并不是说明每个主要工作室将其文件放置在错误位置的充分理由。因此,必须有更好的理由。

我能想到的最好的理由是降低客户支持成本。问题在于%APPDATA%%LOCALAPPDATA%是隐藏目录,似乎没人知道%UserProfile%\Saved Games。通过将文件放入Documents,工作室可以在要求如何备份保存游戏或如何将保存游戏从一台计算机迁移到另一台计算机的支持电话上节省资金。用户实例,因为它们位于%APPDATA% 这里这里这里这里而无法找到保存游戏。

另一个原因可能是因为用户要求这样做,如本例中所示


1
只是添加另一个数据点(并且因为我很好奇),我的PC的数量分别为19、10、10、17、6、45和31。还有50个带有保存游戏和/或其他数据的steam\userdata游戏以及5个游戏在中保存/数据%ProgramData%。这不包括将所有这些东西保留在其安装目录中或设法找到其他位置来存储数据或保存的游戏。
罗斯里奇(Ross Ridge)

@RossRidge谢谢,这很有用。在您的样本中,您看到关于独立游戏与大型工作室游戏的趋势吗?
彼得

独立游戏似乎更有可能进入前四个类别,即使仅仅是因为那是它们的运行时环境放置东西(例如Flash)的地方。
罗斯里奇(Ross Ridge)

4

我不在乎记得备份/还原或类似操作后必须重新开始玩的游戏次数,因为我从文档中移走了所有重要文件,但完全忘记了用户应用程序数据(例如保存文件),因为通常与程序文件或其他奇怪的地方一起使用(例如在诸如appdata之类的隐藏文件夹中)。

出于这个原因,我个人比较喜欢将其包含在文档中,尽管我确信有人会告诉我只是获得适当的备份系统,而不是手动进行备份。

保持一点一致性是很好的,甚至对于Steam之类的服务来说,将保存文件的副本保存在某个地方的网络上甚至会更好。


1
自2009年以来,Steam就拥有云存储。它确实需要开发人员选择使用它,并且只有在用户启用它后才能运行。现在,大多数较新的游戏都支持它,但是许多较旧的游戏仍然不支持。
bcrist 2015年

我会用任何借口告诉人们他们需要进行备份,我也喜欢一致性,但是应用程序数据目录不是存储应用程序数据的“怪异地方”,而documents文件夹却是。将文件存储在不属于它们的位置,这使我更难以管理备份。
马克·托马斯

0

根据我个人的经验,我选择保存到%UserProfile%中,因为用户始终可以对其进行读/写/修改访问,而无需更改任何权限。

对于%APPDATA%,情况并非如此。特别是在使用受限用户帐户时,您通常没有权限访问%APPDATA%中其他帐户创建的文件。我认为AAA冠军是出于与我们相同的原因做出选择的;我们不想头痛。


3
我很确定您得到的是用户可写的APPDATA(C:\ Users \ Username \ AppData)和通常不是用户可写的PROGRAMDATA(C:\ ProgramData)。 windows.microsoft.com/zh-CN/windows-8/what-appdata-folder
Patrick M

1
%APPDATA%的全部要点是它是用户可写的。专门存在该目录是因为C:\ Program Files不可被用户写入。
Bardi Harborow

@PatrickM您说得对,我说的是ProgramData。抱歉。删除答案的最佳方法是什么?
大卫,

0

从我作为用户的个人角度来看,我主要区分要备份的数据和我不关心的数据。

创建的增量备份%LOCALAPPDATA%很麻烦,因为它将使成千上万个临时文件(其中许多被后台服务锁定)使备份混乱。这使得备份速度很慢(许多小文件的开销很大),又不必要地大(经常更改临时文件破坏了“增量”部分)。要防止这种情况,需要手动维护排除列表。

%APPDATA%会稍微好一点,因为它不应该包含诸如高速缓存之类的临时文件-可悲的是它仍然可以,而且许多程序设置实际上都不需要备份。

归根结底,保存游戏是我作为用户与之交互的一种数据,并且%UserProfile%\AppData不适合这种情况。


-3

为什么不像以前的游戏那样使用/“游戏安装文件夹” / savegame /?我从来不明白为什么要将savegames放在隐藏的文件夹中,甚至放在系统驱动器上的文档中?

在过去,您总是知道保存游戏在哪里。


3
此文件夹是写保护的。您必须以管理员身份开始游戏。这很烦人,并非对所有用户都可用(例如,父母希望保护自己的计算机不受孩子安装的任何东西)。
Vaillancourt

1
"game installation folder"%ProgramFiles%\<gamename>%ProgramFiles%只能在安装/卸载程序期间进行修改。由于写入该目录的Windows XP / Vista应用程序需要以管理员身份运行,因此很难说,这种病毒用受感染的word.exe版本替换了word.exe。另一个原因是Microsoft希望多个用户能够使用相同的程序而不必共享他们的个人文件(在本例中为savegames)。还有其他/更好的方法来解决这些问题,但当时并未选择它们。
彼得
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.