"로드 중"화면에서 모든 상황이 발생해야합니까?


19

파일에서로드 된 메모리에 모든 그래픽 인스턴스를 작성해야합니까? 이것을 처리하는 가장 좋은 방법은 무엇입니까? 로딩 화면에서 이러한 그래픽 인스턴스를 생성하고 나중에 참조 할 수있는 일종의 자산 관리자가 필요합니까?

게임에 미리로드해야하는 일반적인 사항은 무엇입니까? 얼마나 사전로드해야합니까?

진행률 표시 줄을 보여줄 가치가 있습니까? 로드 시간을 짧게 유지하려면 어떻게해야합니까? 로딩 화면은 어떤 모습입니까?

화면로드의 좋은 예는 무엇입니까? 코드 예제가 있습니까?

특히, 내 게임은 Andriod (Java / mobile) 용이지만 자유롭게 대답하십시오.


2
나는 이것이 당신이 요구하는 것이 아니라는 것을 알고 있지만 로딩 화면에서 일어나는 일에 대한 조언은 다음과 같습니다. :) 약간의 이야기 (예 : 컷씬), 미니 게임 또는 이미 메뉴를 보여줄 수있는 플레이어를 즐겁게하십시오.
바트 반 Heukelom

답변:


13

사전로드 할 일반적인 것은 실시간으로 필요한 것입니다. 클립 맵 및 메가 텍스처와 같은 개념 (필요한 부분을로드하고 전 세계에서 이동할 때 반복적으로 업데이트하는 아이디어)과 같은 개념을 저장하면 레벨 / 지역 / 무엇을 위해 필요한 모든 것을 유지하려고합니다. 디스크가 아닌 메모리에 있습니다. IO는 sloooow이며 모서리를 돌릴 때 텍스처를로드하지 않으려 고 표시하려고합니다. 그리고 모든 것, 텍스처, 사운드, 메시, 메타 데이터 등 모든 것을 의미합니다.

진행률 표시 줄을 표시 할 수있는 경우 (즉,로드 단계를 백분율로 정확하게 매핑 한 경우) 반드시 표시하십시오. 그렇지 않다면 적어도 짧은 문자 메시지 나 로딩 표시기와 같은 것을 보여주십시오. 뭔가 일어나고있다.

필요한 것이 있지만 당장 필요하지 않다는 것을 알고 있다면 배경에로드하고 너무 일찍 필요한 경우 게임을 중단시킬 수 있습니다 (좋지는 않지만 거의 발생하지 않음). 로드 시간을 줄이는 데 도움이됩니다. 나는 안드로이드 개발에 대해 많이 알지 못하거나 장치가 게임과 함께 처리하는 데 많은 도움이 될지 모르지만 일반적으로 CPU에 약간 가볍기 때문에 큰 문제는 없을 것입니다.


19

"망상 스플라인"이어야합니다


2
Haha, nice reference :)
Bryan Denny

이것은 분명히 농담이지만, 로딩하는 동안 플레이어를 점유하는 훌륭한 예를 나타내는 +1입니다. 말도 안되는 텍스트를 추가하는 것 이상의 노력이 필요없는 간단한 기술입니다. "굶지 마라"는 이것을 잘 수행하는 게임의 또 다른 예이며 우연히 (또는 그렇지 않은) "망상"도 포함합니다 : dont-starve-game.wikia.com/wiki/World_Generation_Screen
twiz

3

하나의 로딩 화면과 인스턴트 레벨 전환 또는 여러로드를 수행 할 것인지에 따라 다릅니다.
나는 후자가 메모리에서 더 나을 것이라고 말할 것입니다.
다음과 같은 것 :
//First loading screen
Load menu layouts or whatever
Load GUI assets
Show something to pass the time
Switch to menu

//In between levels
Remove any graphics specific to the last level - get rid of something that isn't going to reappear like a boss.
Load level graphics that haven't already been loaded
Again, show progress or something to pass the time

로드 할 때 검은 색 화면이 없어야합니다. 또는 그 문제에 대해 정적 화면. 많은 시간 동안 앱을 시작할 때 한동안 정적 이미지를 보았고 즉시 이미지가 다운되었다고 생각했습니다.
플레이어가 참여하게하는 좋은 방법은 게임에서 장면의 배경을 멋지게 묘사하거나 스토리 라인을 참조하는 것입니다. 정적 '로드'가 아닌 한 백분율이 있거나없는 로딩 바; 그런 다음 정보가있을 수 있습니다.


1
그러나 Pete를 위해 백분율이있는 애니메이션 로딩 바가있는 경우 시간의 90 % 동안 10 %를 유지하고 100 %로 점프하는 대신 점진적으로 정확하게 이동하도록하십시오. 로딩 비율이 아닌 애니메이션이 있다면 적어도 로딩을 폴링하도록 애니메이션을 만드십시오. 어떤 식 으로든 로딩이 충돌 할 때 로딩을 중지 할 수 있습니다. 자체 스레드에서 로딩 애니메이션을 애니메이션하는 게임이 너무 많으며 로딩 스레드가 충돌하면 애니메이션이 행복하게 재생됩니다. 그것은 로딩 애니메이션의 목적을 무너 뜨립니다.
Kaj

나는 거기에 전적으로 동의 할 수 있습니다. 나는 그것이 그렇게 뛰면 잘 된 것이라고 생각하지 않습니다.
공산주의 오리

2

iPhone 및 Android 플랫폼에서는 모든 텍스처와 사운드를로드해야합니다. iPhone 2G, 3G 또는 G1과 같은 구형 휴대 전화에서는 텍스처와 사운드 로딩이 느립니다. 게임에서는 할 수 없습니다.


2

다른 사람들이 말했듯이, 재생하기 전에 모든 레벨의 데이터를로드 할 수 있다면 성능이 훨씬 향상됩니다. 게임 플레이 중에 애셋을로드하는 데 걸리는 시간의 일반적인 장애 원인입니다.

로딩 화면에서 수행 할 일반적인 작업은 정적 배경 이미지, 매우 간단한 수준, 재생 방법에 대한 팁과 요령, 빠른 애니메이션 등입니다.

다음은 APB의 로딩 화면입니다. 꽤 신기하다. :) http://www.youtube.com/watch?v=p5STix1t_1E&feature=related

다음은 로딩 화면에 진행률 표시 줄을 표시하기위한 의사 코드입니다.



LoadScreen::Init()
{
  mAssetsToLoad.add("Background.png");
  mAssetsToLoad.add("Player.png");
}

LoadScreen::Update()
{
  mProgress += 1;
  mAssetManager.load(mAssetsToLoad.top());
  mAssetsToLoad.pop();

  if mAssetsToLoad.empty()
    mDone = true;
}


LoadScreen::Draw()
{
  for( int i = 0; i != mProgress; ++i)
  {
     Vector2 pos(i*mProgressPartTexture.Width, 100);
     DrawProgressBarPart(pos, mProgressPartTexture);
  }
}

어쨌든! =를 사용하도록 강요했다.


1
와우, APB로드 화면이 정말 멋져 보입니다 :)
Bryan Denny

<pre> <code> 태그를 사용하는 대신 4 개의 공백으로 코드를 들여 쓰면 서식을 손상시키지 않고! = 대신 <를 사용할 수 있습니다.
mmyers

mmyers, 그래,하지만 그것은 엉덩이에 큰 고통입니다. 맞춤 코드 태그 만있는 이유는 무엇입니까?
Srekel

1

로딩 화면을 사용하여 거의 모든 것을 숨길 수 있습니다. 자산 로딩, 필요한 연결 (tcp 등), 게임 오브젝트로 맵 채우기 및 초기화.

내가 일을하는 경향이있는 방법은 일종의 자산 관리자 (또는 각 자산 유형-사운드, 그래픽 등의 관리자)를 가지고 메모리에 사용될 것을로드하는 것입니다. 그런 다음 게임에서 관리자에게 참조를 가져 오십시오.

진행률 표시 줄 표시, 사전로드 대상 결정 등은 프로젝트,로드 시간 및 취향에 따라 달라집니다. 진행률 표시 줄이 정확하고 오래 걸리면 좋습니다 (대기 해야하는 시간을 아는 것이 좋습니다).

그 말로, 내 안드로이드 폰에서 나는 자신만의 사용자 정의되고 세련되게 로딩 된 화면을 가진 앱을 선호하는 경향이 있습니다. 막대가 필요하지 않지만 애니메이션은 사용자에게 작업중인 프로그램을 알려줍니다. 안드로이드에 사용할 수있는 기본 막대가 있다고 생각합니다.

여기 당신이 관심을 수있는 SO의 질문.


1

품질 관리 요구 사항 (예 : X360, PS3, DS 등)이있는 플랫폼을 사용하려면 로딩 화면에 몇 가지 애니메이션 형식이 필요합니다 (또는 실제로 몇 초 이상 정적 화면이 있어야 함). ).

그렇지 않으면 사용자가 실제로로드하는 데 시간이 오래 걸리는 경우 사용자가 게임이 중단되었다고 생각할 수 있기 때문입니다. 이것이 요구 사항이 아닌 경우에도 분명히 조언 할 것입니다.

어떤 형태의 애니메이션이든 괜찮지 만, 로딩의 큰 단계로 인해 진행률 표시 줄이 한동안 움직이지 않을 수 있으므로 간단한 진행률 표시 줄이 가장 좋지 않을 수 있습니다. 전혀 바가 없습니다. 진행률 표시기 외에 회전 아이콘과 같이 지속적으로 움직이는 이미지를 표시하는 것이 좋습니다.


1
물론 로더가 비동기 적으로로드하는 경우 진행률을 폴링하여 백분율을보다 정확하게 업데이트 할 수 있어야합니다. 그런 식으로 플레이어는이 비율 뭔가에 박히 않는 경우는 것을 알고 있습니다 실제로 잘못. 또한 다른 곳에서 말했듯이 로딩 스레드가 아직 실행 중인지 실제로 확인하지 않고 애니메이션을 업데이트하지 마십시오. 그렇지 않으면 게임이 효과적으로 충돌하는 동안 행복하게 회전 할 것입니다.
Kaj

1

Conquest 의 로딩 화면에서 나는 약간의 미션 설명 (미션에 대한 약간의 스토리 라인뿐만 아니라 게임 유형)과 명령에 대한 기본적인 도움을 받았습니다.

백그라운드에서 소리를로드했습니다. 그래픽은 모두 주문형으로로드되었으며, 이는 게임에서 잘 작동하는 것처럼 보이지만 사운드는 곰이었습니다. 그래서 나는 임무에 필요한 모든 사운드를 미리로드했습니다. 로드 / 시작 버튼은 모든 것이로드 될 때까지 사용할 수 없지만 애니메이션 유형이 없습니다 (추가하는 것이 좋습니다).

이것은 우리의 첫 번째 게임이므로 여전히 많은 것을 배우고 있지만 지금까지는 잘 작동했습니다.

정복의 로딩 화면

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