Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

11.01.2009, 15:09

Ladebildschirm - Theoriefrage

Hallo!

Ich bin noch relativ neu in C++ (arbeite C++ für Spieleprogrammierer) durch und habe auch bis jetzt nur in der Konsole gearbeitet.
Doch mir ist gestern eine Frage aufgekommen, die ich sowieso lösen müsste, wenn ich mit meinem 2D Spiel anfange:

Wie realisiere ich einen Ladebildschirm?

Der Sinn hinter dem Ladebildschirm soll es ja sein, alles (z.B. die Grafiken, den Sound, den aktuellen Spielstand, etc.) zu laden/initialisieren.
Doch der Ladebalken muss ja nach und nach gefüllt werden. Wie realisiere ich das denn? Das einzige, was mir jetzt einfallen würde ist ungefähr folgendes:

Zitat

erg = Breite des Ladebildschirms / Anzahl der Aktionen


Schließlich einfach den Ladebildschirm nach jeder abgeschlossenen Aktion
um erg füllen. Geht es vielleicht noch einfacher? Oder ist das falsch?

Außerdem wollte ich fragen, ob es Sinn macht Ladebildschirme einzubauen und auch vor allem wann.

Bin dankbar für alle brauchbaren Antworten. ;) :D

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

11.01.2009, 15:12

Ja, die Grundidee is schon nich verkehrt! :)

3

11.01.2009, 15:13

Solange du keinen animierten Ladebildschirm haben möchtest reicht das.

Ob? Natürlich. Dann sieht man wie weit er schon ist.
Wann? Wenn man darauf warten muss, bis etwas geladen ist.

Anonymous

unregistriert

4

11.01.2009, 15:14

Macht sich echt einer Gedanken um nen Ladebildschirm...

Zitat

Geht es vielleicht noch einfacher?

Noe, eine andere Methode ist mir nicht bekannt. Ist wohl auch die miest verwendete, einfach nach und nach den Balden zu erweitern.

Zitat

Außerdem wollte ich fragen, ob es Sinn macht Ladebildschirme einzubauen und auch vor allem wann.

Für mich persönlich macht ein Ladebalken Sinn, wenn die Durchschnittsladezeit >10 Sekunden braucht.

5

11.01.2009, 15:21

Das Problem ist, man will ja schnell Laden und nicht einen schön animierten Ladebildschirm haben.
Wenn man z.B. eine Animation aus tausend Einzelbilder lädt und nach jedem Bild den Ladebildschirm aktualisiert, hat man schonmal locker eine um eine Sekunde längere Ladezeit.
Manchmal sieht man ja auch einfach nur "Lade Sounds..." also dass der Bildschirm bloß 3-4 mal aktualisiert wird.
Sehr elegant finde ich es auch, die Missionsbeschreibung einzublenden, auch der schönstanimierte Ladebalken ist nach 2 mal gucken langweilig. Aber ein bissle Text macht sich immer gut (Thief 3 hatte z.B. nützliche Tips).
Auch lustig ist es bei Lego Star Wars, man kann die typische, gelbe Laufschrift eben erst abbrechen, wenn er fertig geladen hat, die meisten merken nichtmal, dass es überhaupt ein Ladebildschirm ist.
Lieber dumm fragen, als dumm bleiben!

6

11.01.2009, 15:25

Also ich hab noch nie ein Ladebildschirm geschrieben, ist das ganze mit Multithreading nicht schneller? Man verwendet ein Thread für die Ganze Initialisierungen und ein Thread um den Ladebildschirm darzustellen. Die Initialisierungen müssen nur nach jedem Durchlauf den Fortschritt an den Ladethread übergeben und der kann dann alles schön darstellen ohne die Initialisierungen zu beeinflussen.

7

11.01.2009, 15:32

Schon so schnell 5 Antworten! :D

Ok dann weiß ich ja jetzt wie es theoretisch geht, danke für eure Antworten! :)
Aber eine gute Idee, oft gibt es ja auch so kleine "Spiele", während das Spiel lädt.
Multithreading ist mir noch nicht bekannt. :o

8

11.01.2009, 15:57

Multithreading brauchst du eigentlich auch erst wenn etwas animiertes oder interaktives auf den Ladebildschirm soll. Ansonsten reicht ein Thread vollkommen aus. ;)

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

9

11.01.2009, 16:01

Ich regel das immer total unsauber mit Callbacks *g* Alle z.B. 10 geladenen Resourcen darf sich der Ladebildschirm einmal aktualisieren.

Das geht natürlich nur, wenn variable Zeitunterschiede beim aktualisieren nicht auffallen. Sonst kommt man wohl um mehrere Threads nicht rum.

Werbeanzeige