Co powinno się dziać na ekranie „Ładowanie”?


19

Czy muszę po prostu tworzyć instancje całej mojej grafiki do pamięci, które są ładowane z pliku? Jaki jest najlepszy sposób, aby sobie z tym poradzić? Czy potrzebuję tylko jakiegoś menedżera zasobów, który tworzy te instancje graficzne podczas ekranu ładowania, a następnie jest o nich mowa później?

Jakie są typowe rzeczy, które należy wstępnie załadować w grach? Ile powinienem wstępnie załadować?

Czy warto wyświetlać jakiś pasek postępu? Jak mogę skrócić czas ładowania? Jak powinien wyglądać ekran ładowania?

Jakie są dobre przykłady ładowania ekranów? Jakieś przykłady kodu?

W szczególności moja gra jest przeznaczona dla Andriod (Java / mobile), ale możesz udzielić ogólnych odpowiedzi.


2
Wiem, że nie jest to dokładnie to, o co prosisz, ale moja rada dotycząca tego, co powinno się dziać podczas ładowania ekranu, brzmi: Coś interesującego! :) Zabaw gracza z odrobiną historii (np. Przerywnikiem filmowym), mini-grą, a może już pokazuje menu, o ile to możliwe.
Bart van Heukelom

Odpowiedzi:


13

Typowe rzeczy do wstępnego ładowania to wszystko, czego będziesz potrzebować w czasie rzeczywistym. Za wyjątkiem koncepcji takich jak clipmapy i megatekultury (jeśli chodzi o ładowanie potrzebnych części i iteracyjne aktualizowanie ich podczas poruszania się po świecie), będziesz chciał zachować wszystko, czego potrzebujesz na swoim poziomie / obszarze / cokolwiek w pamięci, a nie na dysku. IO działa powoli, a ty nie chcesz ładować tekstur, gdy skręcisz za róg i wkrótce się wyświetli. I przez wszystko rozumiem tekstury, dźwięki, siatki, metadane ... wszystko.

Jeśli możesz pokazać pasek postępu (tzn. Masz dokładne odwzorowanie kroków ładowania na wartości procentowe), to na pewno to pokaż. Jeśli nie, przynajmniej pokaż coś, na przykład krótką wiadomość tekstową lub wskaźnik ładowania, który jest aktualizowany po każdym kroku, abyś mógł przynajmniej powiedzieć, że coś się dzieje.

Jeśli jest coś, o czym wiesz, że będzie potrzebne, ale nie od razu, możesz załadować to w tle i zatrzymać grę (niezbyt dobrze, ale upewnij się, że rzadko się to zdarza), jeśli jest to potrzebne zbyt wcześnie. Pomoże to w skróceniu czasu ładowania. Nie wiem zbyt wiele na temat rozwoju Androida, ani tego, czy urządzenie będzie musiało poradzić sobie z grą, ale zwykle jest to dość lekkie na procesorze, więc nie powinno być tam dużego problemu.


19

Musisz być „Siatka splajnów”


2
Haha, niezłe referencje :)
Bryan Denny

Chociaż jest to oczywiście żart, +1 za odniesienie do świetnego przykładu utrzymywania graczy zajętych podczas ładowania. Tak prosta technika, która nie wymaga większego wysiłku niż dodanie nonsensownego tekstu. „Don't Starve” to kolejny przykład gry, która robi to dobrze, a także przypadkowo (lub nie) obejmuje także „ Reticulowanie
twiz

3

Zależy, czy wybierasz jeden ekran ładowania i natychmiastowe przejścia poziomu lub wiele ładowań.
Powiedziałbym, że ten drugi byłby lepszy pod względem pamięci.
Coś jak:
//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

A podczas ładowania pamiętaj, aby nie mieć czarnego ekranu. Lub w tym przypadku statyczny ekran. Wiele razy widziałem jakiś nieruchomy obraz na początku aplikacji i od razu pomyślałem, że się zawiesił.
Dobrym sposobem na zaangażowanie gracza byłoby po prostu ładnie narysowane tło sceny w grze lub odniesienie do fabuły; pasek ładowania z / bez procentu, o ile nie jest to statyczny „ładowanie”; a potem może jakieś informacje.


1
Na litość boską, jeśli masz animowany pasek ładowania z procentem, ustaw go tak, aby poruszał się stopniowo i dokładnie, zamiast pozostać na poziomie 10% przez 90% czasu, a następnie przeskoczyć do 100%. Jeśli masz animację ładowania nieprocentowego, przynajmniej ustaw ją tak, aby sondowała ładowanie - w ten sposób możesz zatrzymać go, gdy ładowanie się z jakiegoś powodu zawiesi. Widzę zbyt wiele gier, które animują animację ładowania we własnym wątku, a gdy wątek ładowania ulega awarii, animacja z radością się uruchamia. Taki sposób przeczy celowi animacji ładowania.
Kaj,

Mogę się całkowicie zgodzić. Nie sądzę, żeby dobrze to zrobiło, jeśli tak skacze.
Kaczka komunistyczna

2

Na platformy iPhone i Android musisz załadować wszystkie tekstury i dźwięki. Ładowanie tekstur i dźwięków jest bardzo wolne na starych telefonach takich jak iPhone 2G, 3G lub G1. Nie możesz tego zrobić w grze.


2

Jak powiedzieli inni, jeśli możesz załadować wszystkie dane poziomu, zanim zaczniesz je odtwarzać, będziesz mieć znacznie lepszą wydajność. Jest to częste źródło problemów w czasie klatek, aby załadować zasoby podczas gry.

Typowe rzeczy do zrobienia podczas ładowania ekranu to statyczny obraz tła, bardzo prosty poziom, kilka wskazówek i wskazówek, jak grać, szybkie animacje itp.

Oto ekran ładowania dla APB. Cholernie fajne. :) http://www.youtube.com/watch?v=p5STix1t_1E&feature=related

Oto pseudo kod pokazujący pasek postępu na ekranie ładowania:



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);
  }
}

Ugh, zmuszony do użycia! = Ponieważ przerwał renderowanie kodu, gdy użyłem <


1
Wow, ekrany ładowania APB wyglądają naprawdę fajnie :)
Bryan Denny

Jeśli wciśniesz kod za pomocą czterech spacji zamiast tagów <pre> <code>, będziesz mógł używać <zamiast! = Bez przerywania formatowania.
mmyers,

mmyers, tak, ale to duży ból w dupie. Dlaczego nie ma tylko niestandardowego znacznika kodu?
Srekel,

1

Ładowanie ekranów może służyć do ukrycia praktycznie wszystkiego; ładowanie zasobów, wszelkie potrzebne połączenia (tcp itp.), wypełnianie map obiektami gry i inicjalizacja.

Często zajmuję się zarządzaniem zasobami (lub menedżerem każdego rodzaju zasobu - dźwiękiem, grafiką itp.) I ładowaniem tego, co zostanie wykorzystane w pamięci. Następnie poproś menedżerów o wyciągnięcie referencji z gry.

Wyświetlanie paska postępu, określanie, co należy wstępnie załadować itp. Wydaje się zależeć od projektu, czasu ładowania i gustów. Paski postępu są dobre, jeśli są dokładne i jest to długi ładunek (dobrze wiedzieć, jak długo trzeba czekać).

Powiedziawszy to, na moim telefonie z Androidem preferuję aplikacje, które mają własny, gustownie wykonany ekran ładowania. Nie potrzebuje paska, ale animacja informuje użytkownika o działających programach. Wierzę, że Android ma domyślny pasek, którego możesz użyć, co dobrze działa.

Oto pytanie SO, które może Cię zainteresować.


1

Warto zauważyć, że platformy z wymogami kontroli jakości (np. X360, PS3, DS itp.) Będą wymagały animacji na ekranie ładowania (lub w rzeczywistości dowolnego ekranu, który pozostaje statyczny przez ponad kilka sekund ).

Wynika to z tego, że w przeciwnym razie użytkownik może pomyśleć, że gra się zawiesiła, podczas gdy w rzeczywistości ładowanie zajmuje dużo czasu. Nawet tam, gdzie nie jest to wymagane, z pewnością doradziłbym to.

Każda forma animacji jest w porządku, ale prosty pasek postępu może nie być najlepszy, ponieważ wszelkie duże kroki ładowania mogą spowodować, że pasek postępu w ogóle się nie porusza, co oznacza, że ​​ekran jest tak statyczny, jak gdyby w ogóle nie ma baru. Oprócz wskaźnika postępu lepiej wyświetlać ciągle poruszający się obraz, na przykład obracającą się ikonę.


1
Oczywiście, jeśli moduł ładujący ładuje się asynchronicznie, powinieneś być w stanie sondować jego postęp, abyś mógł dokładniej zaktualizować procent. W ten sposób gracz wie, że jeśli utknie na poziomie procentowym, coś jest rzeczywiście nie tak. Ponadto, jak powiedziałem w innych miejscach, nie aktualizuj animacji bez sprawdzania za pomocą wątku ładowania, czy nadal działa, czy będziesz szczęśliwie wirował, podczas gdy gra faktycznie się zawiesiła.
Kaj,

1

Do ekranów ładowania w Conquest poszedłem z odrobiną opisu misji (jaki to był rodzaj gry, a także trochę fabuły misji) i podstawową pomocą dotyczącą poleceń.

W tle ładowałem dźwięki. Grafika była ładowana na żądanie i wydawało się, że działa całkiem dobrze w naszej grze, ale dźwięki były niedźwiedziem, więc wstępnie załadowałem wszystkie dźwięki potrzebne do misji. Przycisk Ładowanie / Start jest wyłączony, dopóki wszystko nie zostanie załadowane, ale nie mam żadnej animacji (którą warto dodać).

To jest nasza pierwsza gra, więc wciąż się dużo uczymy, ale jak na razie nam się to udało.

Ekran ładowania podboju

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.