모든 게임이 시작 후 로딩을 피할 수는 없습니까?


23

거대한 오픈 월드 게임이 대규모 맵을 동적으로로드하는 것과 마찬가지로 동일한 동적 로딩 방법을 통해 별도의 맵, 메뉴 및 거의 모든 인터페이스 또는 3D 설정을로드 할 수 없습니까? 환경을 바꾸지 않으면 서 인터페이스를 따라가는 것처럼 보이지만 게임의 다양한 위치는 거대한 오픈 월드 맵이로드되는 것과 같은 방식으로 동적으로로드 될 수 있습니다.

왜 이렇게하지 않았습니까? 경기 /지도 / 레벨이로드되는 동안 1 분 이상 기다려야하는 많은 현대 게임이 있습니다. 동료를 연결하는 데 대기 시간이 있지만 내 경험에 몇 분 이상 걸리지 않는다는 것을 알고 있습니다. 맵 / 레벨 / 인터페이스 데이터 로딩과 관련된 로딩 시간을 없애기 위해이 개념이 사용되는 것을 막기 위해이 개념에는 어떤 문제가 있습니까?


16
참고 많은 '완벽'오픈 월드 게임에서,이 것을 있는 로딩 시간 때 예측할 수없는 위치로 플레이어를 이동합니다. 로딩 화면을 거치지 않고 뉴욕의 한쪽 끝에서 다른 쪽 끝까지 걸을 수 있습니다. 다음에 무엇을로드할지 아는 것이 중요합니다.
Felsir

2
@ 펠 시르 던전 시즈도 같은 방식으로 해냈습니다.
메이슨 휠러

예를 들어, Batman Arkham Origins는 컷신 직전과 완전히 새로운 영역에 들어갈 때 로딩 화면을 사용합니다. 스토리 중심의 점진적인 자연이 잘 어울리 며 사용자에게 자연스럽게 휴식을 취합니다. 이는 고화질 자산이있는 매우 넓은 영역으로 인해 특히 효과적입니다. 이 기능을 거의 코딩하지 않고 코딩하고 테스트하려면 시간이 많이 걸립니다.
케이시 쿠볼

RAM을 128GB까지 가져 오십시오. 64GB 정도의 RAM 드라이브를 만들고 RAM 드라이브에 게임을로드하십시오. 로딩 시간이 너무 빨라서 거의 알아 차리지 못할 것입니다. SSD로 업그레이드했으며 대부분의로드 시간이 크게 단축되었습니다. 비디오 카드, 특히 더 많은 비디오 RAM으로 업그레이드.
cybernard

비동기 로딩에는 시간이 걸리며 CPU 및 디스크 속도에 따라 달라질 수 있습니다. 필요할 때까지 물건이로드 될 것이라고 항상 확신 할 수는 없습니다.
Alan Wolfe

답변:


31

대답은 그렇습니다. 대부분의 경우 적어도 어느 정도는 가능합니다.

완료되지 않은 이유는 다음과 같습니다.

  • 제대로하려면 시간과 돈이 필요합니다.
  • 테스트를 통과 한 버그의 양이 더 많아 질 것입니다
  • 로드 시간은 사용자가 수락합니다.
  • 서버로드 균형 조정과 같은로드 시간에 다른 이유가있을 수 있습니다.
  • 선반에서 구입할 수있는 일반 솔루션은 "한 번에 모두로드"와 더 호환됩니다.

'밸런싱 서버로드'지점에 대한 후속 조치로서, 오늘날 시장에 출시되는 많은 온라인 게임은 귀하에게 고유 한 중앙 허브 영역을 갖추고 있으며 다른 곳에서는 액세스 할 수 없습니다. 이러한 영역은로드 영역 또는 느린 보행 영역 (예 : 'The Division'의 BOO) 뒤에 배치되어 이전에 있던 인스턴스를 안전하게 제거하고 개인 인스턴스로 배치 할 수 있습니다. .
SGR

7
메모리 문제도 있습니다. 현재 레벨을 메모리 (특히 콘솔 또는 휴대용 장치)에 유지하면서 기존 레벨을로드하지 못할 수 있으므로 로딩 화면을 사용해야합니다
Jezzamon

@Jezzamon 저는 Skyrim 맵 전체가 주어진 시간에 메모리에 모두 저장되지 않는다고 생각합니다. 어쩌면 임 잘못? 그러나 그렇지 않다면 왜 거대한 오픈 월드 게임 맵의 동적 로딩 전략에 다른 상황이 적용되지 않을까요?
Viziionary

사실상 아무도 더 이상 자신의 게임 엔진을 처음부터 시작하지 않습니다. 그들은 엔진 (Unreal, Unity, CryEngine)과 많은 미들웨어를 사고 함께 붙입니다. 기본 엔진은 일반적으로 지속적으로 콘텐츠를 스트리밍하거나 다시로드하지 않고 다시 시작하도록 설정되지 않습니다. 자산과 레벨이 이미로드되어 있음에도 불구하고 게임에서 60 초로드 시간에 직면 한 횟수 만 생각하십시오. @Peter가 제공 한 이유는 여전히 자산을 매우 자주 다운로드하는 동안 게임을 시작할 수없는 게임을 볼 수없는 이유이기도합니다.
Tom B

2
@Viziionary Levels는 일반적으로 텍스처를 많이 재사용하며, 다른 레벨은 다른 텍스처 세트를 사용합니다. 던전 레벨은 던전 벽 텍스처를 많이 사용하고, 사막 레벨은 모래와 사막 바위 텍스처를 사용하고, 마운틴 레벨은 바위, 잔디 및 눈 텍스처를 사용합니다. 텍스처는 레벨 전체에서 사용되며 사용 된 메모리의 일부만 해제합니다 (또는 여전히 필요한 텍스처를 언로드합니다).
Peter-Unban Robert Harvey

10

메뉴에 많은 자산이있는 경우 해당 자산을로드하는 데 시간이 걸립니다. 또한 사람들이 메뉴를 탐색 할 순서를 모릅니다. 옵션-> 뒤로-> 크레딧 또는 크레딧-> 뒤로-> 게임을 빠르게 연속으로 클릭 할 수 있습니다. 따라서 합리적인 스트리밍 전략이 없습니다.

오픈 월드 게임에서는 플레이어가 특정 속도보다 빠르게 움직이지 않는다는 것을 알고 있으므로 먼 곳까지 접근 할 때까지 자세한 버전을로드 할 필요가 없습니다.


자주 액세스하는 메뉴를 자주로드하지 않는 이유는 무엇입니까? RPG에서 메뉴를 열면 찾은 것을 장비하거나 아이템을 사용하는 시간이 90 %입니다. 당신은 그 메뉴로 시작할 수 있습니다. 또는로드하는 데 5 분이 걸리는 메뉴로 시작하고 사용자가 메뉴를 종료하면로드를 삭제하십시오.
DrakaSAN

1
@DrakaSAN 그러나 되어 종종 최적화. 오리지널 디아블로조차 모자를 떨어 뜨릴 때 재고를 보여주었습니다. "모든 것을 기다린다"는 접근 방식은 PC와 비교했을 때 메모리가 매우 제한적인 최신 콘솔에서 크게 부활 한 것으로 보입니다. 그리고 PC와 콘솔 모두에있는 많은 게임이 콘솔-> PC로 포팅되므로 일부 콘솔 제한 사항이 프로세스에서 상속됩니다. 디아블로 III 또는 신성을 스카이 림 또는 다크 소울과 비교하십시오. 차이점은 분명합니다.
Luaan

2
느린 로딩 메뉴는 게임에서 실제 문제입니까? 호
앨런 B

소모품에 액세스 할 수있는 유일한 방법은 해당 메뉴를 통해서만 가능합니다. Xbox 360 / PS3의 운명과 XB1 / PS4 버전에 비해 Ammo Pack을 사용하는 데 걸리는 시간을 참조하십시오.
SGR

1
@ SGR 나는 PS4에서 Destiny를 용납 할 수 없을 정도로 긴 로딩 시간을 가진 메뉴의 예로서 사용하려고했는데, 마지막 세대 콘솔에서 그것이 얼마나 더 나빠지는지는 상상할 수 없습니다.
IllusiveBrian

5

이러한 솔루션의 실현 가능성에서 가장 큰 요인은 로딩이 필요한 것의 예측 가능성입니다. 플레이어가 원하는 것을 예상하지 않고 완전히 새로운 레벨을로드하면 완벽하게 완벽한 솔루션을 얻을 수 없습니다. 예를 들어, 플레이어가 게임에서 플레이 할 레벨을 선택할 수 있거나 오픈 월드 게임에서 완전히 다른 영역으로 자유롭게 이동할 수있는 경우.

일부 Halo 게임은 멀티 플레이어 게임을 설정하면서 백그라운드에서 선택한 레벨을로드하기 시작합니다. 이것은 플레이어가 시작할 준비가되었을 때의 대기 시간을 줄이고, 플레이어가 완전히 다른 자산으로 다른 레벨을 자유롭게 선택할 수있을 때 그러한 솔루션에 가장 근접 할 수 있습니다.

물론, 당신은 "환경을 바꾸지 않고"라고 말했지만 Halo 예제를 더 보고 싶었습니다 .

지속적인 캠페인 내에서 또는 개발자가 플레이어의 위치를 ​​많이 제어 할 때마다, 당신이 말한 것처럼 그러한 솔루션은 확실히 실행 가능합니다. Naughty Dog는 로딩 시간을 없애고 Jak과 Daxter 는 PS2에서 로딩 시간이없는 것으로 유명하며, Uncharted 게임은 처음에는 단일 로딩 시간이 있습니다.

그러나 많은 사람들에게 로딩 시간은 해결해야 할 문제가 아닙니다 . 또는 지금릴리스 날짜 사이에 항상 더 많은 일이있을 때 개발자의 우선 순위가 매우 낮은 문제입니다 .


3
Jak과 Daxter는 로딩 시간이 있습니다. ME1 엘리베이터와 비슷한 방법과 로딩 시간을 숨기는 방법으로 문 뒤에 숨겨져 있습니다.
Nzall

2
그러나 S- 커브 홀 뒤에 숨겨진 로딩 시간 은로드 시간처럼 느껴 지지 않습니다 .
Almo

올바르게 이해하면 Skyrim과 같은 열린 세계지도가 메모리에로드되지 않고 사용자가 즉시 볼 수있는 조각 만 있으면 모든 (20?)지도의 작은 시작 부분에 사전로드 할 수 없습니까? 맵 데이터를 적절히 최적화하면 실제 사용되는 RAM은 모바일에서도 최신 RAM 양으로 문제가되지 않는 것처럼 보입니다. 비디오 카드의 렌더링 능력은 내가 생각하는 대부분의 게임에 병목 현상을 일으킨다. 나는 사용자를 위해 모든 후광 맵의 시작 영역을로드 한 다음 선택한 메모리를 렌더링하면서 나머지를 메모리에서 떨어 뜨릴 수있는 것처럼 보입니다.
Viziionary

1
맵은로드하는 데 시간이 오래 걸리지 않습니다. 레벨이나 영역에 특정한 거대한 텍스처, 모델 파일, 셰이더 프로그램 등입니다.
Tom B

3

시각.

시간을 절약하려면 시간이 필요합니다. 또는 당신은 시간 부족을 보충하기 위해 돈이 필요합니다. 어쨌든 "로드 시간이 없습니다!" 고급 스러움을 가진 사람들 만이 제공 할 수있는 기능입니다. 매우 신중한 계획이 필요하며, 현재하고있는 일을 잘 이해해야하며 모든 게임 개발자가이를 수행 할 리소스가있는 것은 아닙니다.


2

궁극적으로 제한된 자원입니다.

오픈 월드 게임, 특히 MMO는 예측 가능성을 높이기 위해 만들어졌습니다. 어떤 데이터를 미리로드해야하는지 항상 알 수 있습니다. 월드의 아키텍쳐에서 이것을 볼 수 있습니다.로드해야 할 리소스가 많을 때마다 아직로드되지 않은 내용을 사용자가 볼 수 없도록하는 방법이 있습니다. 가장 일반적인 방법은 로딩에 필요한 몇 초 동안 다음 영역으로 시야를 차단하는 게이트와 입구입니다. 대부분의 MMO는 덜 상세한 모델과 텍스처를 사용하므로로드 시간이 상당히 단축됩니다.

신중한 디자인으로도 예측할 수없는 것들이 있습니다. 예를 들어, 플레이어가 착용 한 사용자 지정 배너가있을 수 있으며 관련 데이터가 네트워크를 통해 컴퓨터로 전송 된 후에 만 ​​표시됩니다. 물론, 대부분의 게임은 이것을 저렴하게 만들기 위해 이것을 제한하려고합니다 (예를 들어, 디아블로 III의 배너는 간단한 구성으로 몇 바이트의 데이터를 전송하기 쉽습니다). 그러나 궁극적으로 때로는 데이터가 올 때까지 기다려야합니다. 그리고 로딩이 진행되는 동안 무언가 를 보여줘야 합니다 . 많은 게임에서, 데이터가로드되기를 기다리는 동안 회색의 낮은 상세 모델이 표시 될 때 몰입이 중단 될 수 있습니다.

그리고이 모든 것들과 같이 로딩하는 것은 해결 된 문제 (TM)이지만, 그렇게 쉬운 것은 아닙니다. 부드러운 연주 경험을 보장하기 위해 리소스와 활용률을 최적화하고 코드 자체에서 많은 리소스와 시간이 필요합니다. 비동기 코드는 어렵습니다. 또한 모든 것이 올바르게 되어도 게임 경험이 줄어드는 것을 의미 할 수 있습니다. 즉, 최저 공통 분모의 대역폭 기능을 넘지 않도록해야하므로 모델 및 텍스처의 품질을 낮추거나 만들어야합니다. 변화가 적고 세계의 기하학이 심각하게 제한됩니다. 그렇지 않으면 게임을 플레이 할 수 없을 것입니다. 맵을로드하는 데 10 분 이상 (또는 더 긴 시간이 걸린) 게임을 한 사람들을 기억합니다. 단순히 컴퓨터가 게임을 제대로 수행하지 않았기 때문입니다. 그 후에도 잘 작동합니다. 대신 매끄럽게로드 된 경우 게임은 데이터가로드되기를 기다리는 동안 항상 얼어 붙은 텍스처와 모델을 정지 시키거나 표시합니다. 지연된 로딩은 윈-윈이 아니며, 엔지니어링에서 대부분의 것들과의 타협입니다. :)


2

동적 로딩이 항상 다른 답변에서 실제로 고려하지 않은 이상적인 솔루션이 아닌 이유 중 하나는 팝업 및 기타 그래픽 아티팩트라고 생각합니다.

무엇을로드하고 무엇을로드하지 않을지에 대한 예측은 종종 실패하며, 그것이로드 될 때 혼란스러운 경험이 될 수 있습니다. 이것의 최악의 예 중 하나는 Rage by id Software입니다. 적어도 초기 버전에서, 메가 텍스쳐 시스템은 너무 빨리 회전하는 것과 같은 것조차도 너무 많은 양의 텍스처와 심지어 지오메트리 아티팩트가 서서히 사라지기 전에 나타나도록 만들었다.

이러한 문제는 문제가되지 않습니다. 모든 것이 미리로드되어 있다는 것입니다.

고려해야 할 사항은 무엇을로드 해야하는지가 아니라 언로드 해야하는 것입니다. 공간에 대한 예산이 너무 많았을 때, 새로운 것을로드 할 때 제거해야 할 오래된 것들은 무엇입니까? 향후 몇 초 안에 해당 자산이 사용되지 않을 것이라고 얼마나 확신하십니까? 해결하기 어려운 문제입니다.

모든 게임 플레이 상태가 공통 시스템 예산에 맞도록 충분히 작다면, 로딩하는 대신 모든 이점이 분명해집니다. 그러나 주요 답변에서 알 수 있듯이 작은 게임의 로딩 시간은 어쨌든 걱정할 정도로 광범위하지 않습니다.

동적 로딩 시스템이 원래 만들어진 이유에 대해 생각할 가치가 있다고 생각합니다. 여러 게임 플레이 상태 중 일부가 일반적인 시스템에 비해 너무 클 수 있으며 그 크기의 게임은 완전히 사전로드 할 수 없다는 것을 알고 있습니다.


2

일반적인 이유 중 하나는 가까운 미래에 리소스가 필요한지 여부를 결정하는 것이 항상 쉬운 것은 아닙니다.

지형 페이징을 예로 사용 했으므로 계속하겠습니다.

주어진지도 그리드에 있으면 모든 인접한지도 그리드를 백그라운드로로드하는 것이 매우 합리적입니다. 사용자는 기껏해야 그 중 하나를 입력 할 수 있습니다. 그들이 할 때, 당신은 더 이상 인접하지 않은 것을 언로드하고 지금있는 것을 언로드 할 수 있습니다. 이것은 당신이 지적했다.

이제 빠른 여행을 상상해보십시오. 사용자가 어디로 갈지 예측할 수있는 방법은 없습니다. (보통) 거의 전체지도 중에서 선택할 수 있습니다. 가능한 빠른 이동 위치를 모두 사전로드하면 메모리가 너무 많이 걸리고 (처음에는 전체 맵을 메모리에로드 할 수 있음) 너무 많은 시간이 소요됩니다 (전체 맵이 사전로드되지 않았다고 가정). 언제 이런 일이 일어날까요? 그들이 빠른 여행 대화를 열 때? 문제는 몇 배만 악화 될 것입니다!

"무부하"지형 페이징을 사용하는 대부분의 게임조차도 빠른 이동에 여전히로드 화면이있는 이유입니다. 또한 충분히 빠르게 움직이면 무부하 맵이있는 게임에서도 화면 로딩을 트리거 할 수 있습니다 (TES Oblivion 에서이 작업을 수행 한 것을 기억합니다).

이제 이것이 일반적으로 관계가 분명하지 않은 게임 리소스에 적용되었다고 상상해보십시오. 가능한 모든 옵션을로드하거나 사용자가 무엇을할지 추측해야합니다. 추측은 비용이 많이 들고 (개발 및 CPU 모두) 프로그램을 복잡하게 만듭니다. 구체적인 예 :

  • 파일 저장 : 사용자가 저장 화면에 도달하기 전에 모든 저장 파일 을로드 하거나로드 할 파일 (최신 5 등)을 추측해야합니다.
  • UI : 많은 전략 게임이 진영에 따라 UI를 변경합니다. 사용자가 게임을 시작하기 전에 가능한 모든 UI 디자인을로드해야합니다.
  • 게임 세계 : Minecraft와 같은 절차 적으로 생성 된 게임이나 문명과 같은 RTS 게임에서 세계는 볼 때까지 다양한 범위로 존재하지 않습니다. 사전로드는 존재하지 않기 때문에 불가능 합니다. 미리 계산 그들은 수 에서 최고의 로딩을 사전에 유사하게 수행하고, RTS의 경우에 적용 할 수 없습니다 수.

이러한 문제 중 일부를 해결할 수있는 방법이있을 수 있지만 실제 비용 이 발생 합니다. 알아 내기 위해서는 이 필요합니다. 대부분의 게이머는 합리적인 로딩 화면을 허용하며,이를 완화시키기 위해 하드웨어에 더 많은 비용을 투자하는 경향이 있습니다. 비정상적으로 과도하거나 방해가되지 않는 한 (레벨 중간에로드하는 것과 같이) 게임 문제가 아닌 하드웨어 문제 로 간주됩니다 .

백그라운드 로딩은 무료가 아닙니다. 일반적으로 백그라운드로드 지형과 일부 모델 파일의 현대적인 사용으로 인한 영향은 최소화되지만, 특히 여러 가지 리소스에 대해 갑자기 추측하는 경우, 특히 신뢰할 수있는 메트릭스가없고 많은 리소스를 언로드하고 불필요한 리소스를로드해야하는 경우 , 시스템을 먼지로 분쇄 할 수 있습니다.

백그라운드 로딩의 개념은 더 나은 사용을 위해 데드 사이클을 사용하는 것이지만 사용할 데드 사이클이 너무 많습니다. 프리로드는 게임의 메모리 사용량을 크게 증가시킬 수 있습니다. 로딩 화면을 사용하면 기존 리소스를 덤프 할 수 있습니다. 백그라운드 로딩과 같은 고급 스러움은 없습니다. 즉, 그 숫자만으로 게임의 메모리 요구량을 두 배로 늘릴 수 있습니다.


1

이는 게임이 소프트 리얼 타임 제품이라는 사실에서 비롯된 일반적인 문제입니다. 콘텐츠의 늦게 전달이 정시 배달만큼 유용하지 않은 경우 (컴퓨터의 자동차와 같이 하드 리얼 타임과 대조적으로 늦게 전달되는 경우) 전혀 배달하지 않는 것보다 낫지 않을 수 있습니다). 무엇을 어디에로드할지 결정해야합니다.

때로는 늦은 배달이 특히 나쁩니다. 예를 들어, 모든 벽이로드되기 전에 세계를 돌아 다니는 것이 허용 된 경우, 게임에서 벽을로드 한 경우 이동하기 전에는 결코 뒤지지 않았을 수 있습니다. 콘텐츠의 "게으른"로딩으로 도망 갈 수있는 시점과 콘텐츠가 완전히로드 된 것을 보장해야하는 시점을 항상 쉽게 알 수있는 것은 아닙니다.

동적 로딩도 훨씬 더 복잡합니다. 리소스가 아직로드되지 않은 경우 수행 할 작업을 지속적으로 고려해야합니다. 이것은 개발 자원의 소모입니다. 존재하는 리소스에 의존 할 수 있으면 개발하기가 훨씬 쉽습니다.

대기 시간도 항상 수용 가능한 것은 아닙니다. 동적으로로드 된 모든 모델 / 이미지를 캐싱하는 부작용이있는 맵을로드하여 게임을 "따뜻하게"하는 Starcraft 사례를 들었습니다. 그런 다음 게임을 종료하고 정상적으로 게임을합니다. 엘리트 게이머에게는 GUI의 방해가 최소화되어 실제로 게임 플레이에 영향을 미쳤습니다. 사용자가 어떤 대기 시간을 수용 할 수 있고 까다 롭지 않은지 입증하려고 시도하는 경우.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.