게임 데이터를 % AppData % 대신 % UserProfile % \ Documents에 저장해야하는 실질적인 이유가 있습니까?


33

내 문서 폴더에는 최신 AAA 타이틀을 포함하여 다양한 게임의 하위 폴더가 넘칩니다. 게임 업계에서 경험이없는 전문 응용 프로그램 개발자로서 이것은 잘못된 것입니다. 이러한 파일은 % APPDATA % 또는 % LOCALAPDATA %에 속합니다.

내 질문은 % UserProfile % \ Documents에 이러한 파일을 넣어 특정 이점을 얻 겠다는 의식적인 결정이 있습니까? 아니면 Windows XP 시절부터 이뤄진 레거시 동작입니까? 또는 Steam이 요구하거나 권장하는 것과 같은 더 좋은 이유가 있습니까, 아니면 기본적으로 인기있는 엔진입니까?

관련 : 파일 / 데이터 저장 쓰기 게임에서 어떤 디렉토리? (무의미한 토론을 피하기 위해)



4
@Loren 아니요, 저장 게임은 응용 프로그램 특정 파일 / 데이터 = APPDATA입니다. 사용자 문서는 사용자가 의식적으로 저장 한 문서입니다. 이것이이 장소들이 정의 된 방식입니다.
Peter

1
어느 쪽이든이 방법으로 논쟁 할 수 있습니다. AppData에서 문서, 구성을 저장할 수 있습니다.
Loren Pechtel

2
게임의 캠페인은 어떻게 "의식적으로 문서를 저장"하지 않습니까? 그리고 Photoshop 문서 (PSD)는 어떻게 "응용 프로그램에만 국한되지 않습니까?"
Damian Yerrick

4
이것은 오랫동안 저를 엿 보았습니다. 문서 폴더는 파일의 위치에 상관없이 파일을 자동으로 저장하기에 좋지 않은 위치입니다. '내 문서'폴더는 내가 명시 적으로 선택한 문서를 위해 예약되어 있어야 하므로 내 개인 정보를 추적 할 수 있습니다. 내 시스템의 소프트웨어 절반과 관련된 데이터가 아닙니다. 참으로 엉망입니다! 더 이상 Documents 폴더를 사용하지 않습니다. 별도의 드라이브에서 내 자신을 사용하고 문서 라이브러리에 해당 디렉토리가 있으며 기본값을 제거했습니다.
퍼지 로직

답변:


35

아니 정말.

게임 개발자는 전통적으로 운영 체제에서 설정 한 규칙을 존중하지 않았습니다. 공평하지만, 많은 정규 애플리케이션 개발자들도 그렇지 않습니다.

%AppData%및 문서 폴더는 사용자 별 데이터를 저장할 수 있습니다. 이 질문의 목적 상 이들의 차이점은 주로 %AppData%사용자가 보거나 상호 작용할 필요가없는 문서가있는 곳이며 문서 폴더는 사용자의 문서를 위한 것입니다. 것입니다. .

게임은 때때로 설정을 저장하고 파일을 문서 폴더에 저장하기 때문에 파일을 볼 수 있기 때문에 기술적 인 사용자가 볼 수없고 파일이 존재한다고 확신 할 수 없으며 백업 방법이 원유, "사용자 폴더에있는 내용을 다른 드라이브에 복사하십시오."

게임은 파일이 이전 OS 버전에서 관련 코드의 동작을 변경하지 않았거나 의심 할 때 파일을 저장하거나 문제에 대해 크게 신경 쓰지 않기 때문에 때로는 파일을 저장합니다.

그것은 어리 석고 일반적으로 잘못이지만 그것이 무엇인지입니다.


2
또 다른 장점은 사용자가 % APPDATA %를 파지 않고도 월드, 텍스처 팩 등을 설치할 수 있다는 것입니다.
Bardi Harborow

14
SPORE는 데이터를 %appdata%받았을 때 데이터를 백업하는 대신 문서 폴더에 저장하는 것을 기억 합니다. 폴더를 살펴보면 내 생물은 모두 PNG 이미지로 저장되어 매우 놀랍습니다. 문서 폴더에 의도적으로 배치되어 사람들이 더 많은 생물과 차량을 쉽게 공유하고 다운로드 할 수 있다고 생각합니다. 그 말로, 나는 원유만을 사용하는 게임이 왜 save.dat그 물건을 거기에 넣기로 결정 했는지 전혀 모른다 .
Gustavo Maciel

Spore가 어떻게 풀 렸는지에 대한 좋은 글이 있습니다.
TankorSmash

2
누군가이 사이트 에서 그것에 대해 물었 습니다 . 답변 중 하나는 당신이 생각할 수있는 글을 참조합니다 ( 여기 위치 ).
Josh

6
이론적으로 Vista 이상의 최신 작업 방법은 SHGetKnownFolderPath(FOLDERID_SavedGames, 0, NULL, &path)기본적으로 를 사용 하는 것입니다 %UserProfile%\Saved Games. 그렇게하면 사용자는 저장된 게임 데이터를 쉽게 찾아 백업 할 수 있지만 방해가되지 않습니다. 진행률 및 / 또는 구성 이외의 모든 데이터 (예 : 컴파일 된 셰이더, 플랫폼 최적화 또는 다운로드 된 자산 등)는 appdata에 있어야합니다.
bcrist

18

내 디스크를 보면

  • savegames를 저장하는 1 개의 게임 %APPDATA%
  • savegames를 저장하는 1 개의 게임 %LOCALAPPDATA%
  • "기타 물건"을 저장하는 2 개의 게임 %APPDATA%
  • "기타 물건"을 저장하는 3 개의 게임 %LOCALAPPDATA%
  • 세이브 게임을 저장하는 2 개의 게임 %UserProfile%\Saved Games
  • 세이브 게임 및 기타 많은 것들을 저장하는 21 게임 %UserProfile%\Documents .
  • 세이브 게임과 다른 것들을 저장하는 15 가지 게임 %UserProfile%\Documents\My Games

저장되지으로 savegames 9 : 즉, 1의 비의 %APPDATA%, %LOCALAPPDATA%, %UserProfile%\Saved Games%UserProfile%\Documents\*. 내 샘플에서 할 4 개 게임은하지에으로 savegames을 넣어 %UserProfile%\Documents\또는 %UserProfile%\Documents\My Games\작은 스튜디오에서입니다. 따라서 수백만 개의 개발 비용을 가진 대규모 스튜디오가 임시 파일을 포함한 모든 파일을 넣을 이유가 있다고 가정해야합니다 %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 감사합니다. 유용합니다. 샘플에서 인디 게임과 큰 스튜디오 게임에 대한 경향이 있습니까?
피터

인디 게임은 런타임 환경이 물건을 두는 장소 (예 : 플래시)이기 때문에 처음 네 가지 범주 중 하나 일 가능성이 높습니다.
Ross Ridge

4

문서에서 중요한 파일을 모두 이동했기 때문에 백업 / 복원 또는 이와 유사한 작업을 시작한 후 다시 시작해야했던 게임 수를 기억하지 않아도됩니다. 종종 프로그램 파일이나 다른 이상한 장소 (appdata와 같은 숨겨진 폴더와 같은)와 함께합니다.

이런 이유로 개인적으로 문서에 넣는 것을 좋아하지만 수동으로 수행하는 대신 적절한 백업 시스템을 얻도록 지시 할 것입니다.

약간의 일관성은 좋으며 Steam과 같은 서비스가 저장 파일의 사본을 네트워크에 보관하는 것이 더 좋습니다.


1
Steam은 2009 년 이후 클라우드 스토리지를 보유하고 있습니다. 그러나 개발자가이를 사용하도록 선택해야하며 사용자가 활성화 한 경우에만 작동합니다. 대부분의 최신 게임은 현재 지원하지만 많은 오래된 게임은 여전히 ​​지원하지 않습니다.
bcrist

나는 사람들에게 백업을해야한다는 사실을 변명 할 것이며, 일관성도 좋아하지만, 애플리케이션 데이터 디렉토리는 애플리케이션 데이터를 저장하는 '이상한 장소'가 아니라 문서 폴더입니다. 소속되지 않은 곳에 파일을 저장하면 백업을 관리하기가 훨씬 어려워집니다.
Marcks Thomas

0

내 개인적인 경험을 통해 사용자는 권한을 변경하지 않고도 항상 읽기 / 쓰기 / 수정 액세스 권한을 가지기 때문에 % UserProfile %에 저장하기로했습니다.

% APPDATA %에서는 그렇지 않습니다. 특히 제한된 사용자 계정을 사용할 때 종종 % APPDATA % 내의 다른 계정으로 작성된 파일에 대한 쓰기 권한이 없습니다. AAA 타이틀이 우리와 같은 이유로 선택했다고 생각합니다. 우리는 두통을 원하지 않았습니다.


3
사용자가 쓸 수 있고 종종 사용자가 쓸 수없는 PROGRAMDATA (C : \ ProgramData)와 혼합 된 APPDATA (C : \ Users \ Username \ AppData)를 얻는 것이 확실합니다. windows.microsoft.com/ko-kr/windows-8/what-appdata-folder
Patrick M

1
% APPDATA %의 요점은 사용자가 쓸 수 있다는 것입니다. C : \ Program Files는 사용자가 쓸 수 없기 때문에 특히 있습니다.
Bardi Harborow

@PatrickM 네가 맞아, 나는 ProgramData에 대해 이야기하고 있었다. 죄송합니다. 답변을 삭제하는 가장 좋은 방법은 무엇입니까?
David

0

사용자로서의 개인적 관점에서, 나는 백업을 원하는 데이터와 내가 신경 쓰지 않는 데이터를 주로 구별합니다.

의 증분 백업 생성 %LOCALAPPDATA% 것은 수만 개의 임시 파일로 백업을 복잡하게 만들며, 그 중 많은 파일은 백그라운드 서비스에 의해 잠겨 있기 때문에 엉망입니다. 이로 인해 백업이 느려지고 (많은 작은 파일로 인한 오버 헤드가 높고) 불필요하게 커집니다 (임시 파일을 자주 변경하면 "증분"부분이 손상됩니다). 이를 방지하려면 제외 목록을 수동으로 유지 보수해야합니다.

%APPDATA%캐시와 같은 임시 파일 을 포함하지 않아야하기 때문에 약간 더 좋습니다. 슬프게도 그렇게하고 많은 프로그램 설정은 실제로 백업을 보증하지 않습니다.

궁극적으로 저장 게임은 사용자와 상호 작용 하고 싶은 데이터 유형이며 %UserProfile%\AppData그 자체로는 적합하지 않습니다.


-3

왜 오래된 게임처럼 / "게임 설치 폴더"/ savegame /을 사용하지 않습니까? 숨겨진 게임이나 시스템 드라이브의 문서에 저장 게임을 넣는 이유를 이해하지 못했습니다.

옛날에는 세이브 게임이 어디에 있는지 항상 알고있었습니다.


3
이 폴더는 쓰기 방지되어 있습니다. 게임을 관리자로 시작해야합니다. 이것은 성가신 일이며 모든 사용자가 사용할 수있는 것은 아닙니다 (예 : 부모가 컴퓨터를 보호하기를 원하는 부모).
Vaillancourt

1
"game installation folder"입니다 %ProgramFiles%\<gamename>. %ProgramFiles%프로그램을 설치 / 제거하는 동안에 만 수정해야합니다. 해당 디렉터리에 쓰는 Windows XP / Vista 응용 프로그램은 관리자 권한으로 실행해야하므로 word.exe를 감염된 버전의 word.exe로 바꾸는 바이러스가 더 어렵습니다. 또 다른 이유는 Microsoft가 여러 사용자가 개인 파일을 공유하지 않고도 동일한 프로그램을 사용할 수 있기를 원했기 때문입니다 (이 경우 저장 게임). 이러한 문제를 해결할 수있는 다른 방법이 있지만 당시에는 선택하지 않았습니다.
Peter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.