콘솔의 작은 파일보다 큰 파일이 더 나은 이유는 무엇입니까?


18

콘솔 게임 개발자가 PC와 같은 작은 파일 대신 큰 파일을 사용하여 게임 데이터를 저장하는 이유는 무엇입니까? 메모리의 스트림이 적습니까? 파일 트리에 여러 번 액세스해야합니까? 다른 이유?


아마도 웹 세계에서 아날로그 : CSS Sprites
Nick T

CSS 스프라이트는 서버가 단일 연결로 많은 리소스를 보낼 수 없게 만드는 오래된 녹슨 HTTP 1.1을 여전히 사용하는 단점입니다. 새로운 표준을 원합니다.
코스

1
@Kos 불행히도 아직 구현되지 않았지만 귀하의 소원이 승인 되었습니다 .
phihag

감사합니다! 나는 그들이 더 빨리 일할 수 있도록 케이크를 굽고 싶습니다.
코스

답변:


37

하나의 큰 파일이 있으면 플랫폼에 관계없이 성능에 몇 가지 이점이 있습니다. 많은 PC 게임도 큰 파일을 사용합니다.

  • 파일 시스템 디렉토리 항목을 읽을 필요가 없도록 큰 파일 내에서 각 파일의 오프셋을 수동으로 캐시 할 수 있습니다 (캐시를 놓치면 열린 파일 당 여러 탐색이 필요할 수 있음).

  • 파일 내에서 데이터 순서를 완전히 제어 할 수 있으므로 느린 탐색의 필요성을 최소화하도록 데이터를 정렬 할 수 있습니다.

  • 데이터 압축은 일반적으로 개별 파일보다 하나의 큰 파일에서 더 효과적입니다.

탐색을 피하는 것은로드 시간을 단축시키는 데 매우 효과적입니다. 일반적인 하드 드라이브의 검색 시간은 10ms이고 전송 속도는 100MB / s입니다. 총 크기가 1MB 인 100 개의 셰이더 파일을로드해야한다고 가정합니다. 각각에 대해 검색을 수행해야하는 경우 모두로드하는 데 1 초가 걸립니다. 한 번의 탐색으로 20ms를보고 모든 것을로드합니다.

물론 모든 콘솔에 하드 드라이브가있는 것은 아니며 광학 드라이브의 탐색 성능이 더 나빠서 이러한 쉐이더를 찾는 데 DVD를로드하는 데 5 초 이상 걸릴 수 있습니다. 또한 콘솔은 PC보다 캐시로 사용할 메모리가 훨씬 적으므로 데이터를 더 자주로드하는 경향이 있습니다.


9
아주 좋은 대답입니다. 요점은 하나의 파일 대 여러 파일을 찾는 예입니다.
William Mariager

1
또한 경쟁이 치열한 온라인 게임의 경우 수천 개의 작은 파일을 개별적으로 확인하는 것보다 플레이어가 하나의 큰 파일을 조작하지 않았는지 확인하는 것이 훨씬 빠르고 디스크 공간을 덜 사용합니다.
트레버 파월

Google 키워드 : 가상 파일 시스템 또한 가상 파일 시스템에 대한 잘 알려진 필요성은 비가 상 파일 시스템이 더 많은 연마를 사용할 수 있음을 나타내는 것으로 보입니다. (.
Kos

그러나 이것은 SSD를 사용하는 사람들에게는 좋지 않습니다. 모든 게임 데이터가 큰 파일 안에 있기 때문에 드물게로드 된 것을 HDD로 옮길 수 없습니다. 와우에 대해서는 절대로 아웃 랜드에 가지 않습니다. 그 파일을 SSD에서 옮겼습니다. 그렇게 말할 수 없습니다 ...
대구

6

Adam이 제공 한 매우 좋은 답변 외에도 다른 중요한 요소를 지적하고 싶습니다.

  1. 파일이 적을수록 응용 프로그램 배포가 쉬워집니다. iOS, Android 또는 Windows Phone과 같은 모바일 플랫폼에 응용 프로그램을 배포하려는 경우 특히 그렇습니다. Windows Phone의 경우에도 배포에 사용되는 XAP 파일은 zip 아카이브이기 때문에 원하는만큼 파일을 계속 보유 할 수 있습니다.

  2. 하나의 파일에 모든 자산을 보유하면 자산이 모두 다운로드되거나 "in piece"로 읽 힙니다 . 많은 게이머는 게임을 시작하기 전에 애셋을 다운로드하거나 포장을 풀 때 눈에 띄게 지연되는 것을 용서하지만 게임 도중 미묘한 일시 중지에 직면하는 한 방종하지 않을 것입니다. 물론 리소스를 RAM에 미리 캐시 할 수 있지만 파일 단위로 리소스를로드하는 것보다 이러한 리소스를 "한 조각으로"로드하는 것이 여전히 쉽습니다.


나는 안드로이드와 블랙 베리 개발을 해왔고 너무 작은 파일이 너무 많은 문제에 부딪치지 않았다. 그러나 지금까지 더 큰 파일의 이점을 알지 못했습니다.
ADB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.