Muss ich nur Instanzen aller meiner Grafiken im Speicher erstellen, die aus einer Datei geladen werden? Was ist der beste Weg, um damit umzugehen? Benötige ich nur eine Art Asset Manager, der diese Grafikinstanzen während des Ladevorgangs erstellt und auf den später verwiesen wird?
Was sind die häufigsten Dinge, die in Spielen vorinstalliert werden müssen? Wie viel sollte ich vorladen?
Lohnt es sich, eine Art Fortschrittsbalken anzuzeigen? Wie kann ich die Ladezeiten kurz halten? Wie soll der Ladebildschirm aussehen?
Was sind einige gute Beispiele für Ladebildschirme? Irgendwelche Codebeispiele?
Insbesondere ist mein Spiel für Andriod (Java / Mobile), aber Sie können Ihre Antworten auch generisch gestalten.
Antworten:
Die typischen Dinge, die vorab geladen werden müssen, sind alles, was Sie in Echtzeit benötigen. Speichern Sie für Konzepte wie Clipmaps und Megatexturen (wo die Idee ist, die Teile zu laden, die Sie benötigen, und iterativ zu aktualisieren, wenn Sie sich in der Welt bewegen), Sie werden alles behalten wollen, was Sie für Ihr Level / Gebiet / was auch immer brauchen im Speicher anstatt auf der Festplatte. IO ist langsam, und Sie möchten Ihre Texturen nicht laden, wenn Sie um die Ecke biegen und sie angezeigt werden. Und mit allem meine ich Texturen, Sounds, Meshes, Metadaten ... alles.
Wenn Sie einen Fortschrittsbalken anzeigen können (dh Sie haben eine genaue Zuordnung der Ladeschritte zum Prozentsatz), dann zeigen Sie ihn auf jeden Fall an. Wenn nicht, zeigen Sie zumindest etwas an, z. B. eine kurze Textnachricht oder eine Ladeanzeige, die nach jedem Schritt aktualisiert wird, damit Sie zumindest erkennen können, dass etwas passiert.
Wenn Sie wissen, dass etwas benötigt wird, aber nicht sofort, können Sie es im Hintergrund laden und das Spiel abbrechen (nicht besonders gut, aber stellen Sie sicher, dass es selten passiert), wenn es zu früh benötigt wird. Dies hilft Ihnen, die Ladezeit niedrig zu halten. Ich weiß nicht viel über die Android-Entwicklung, oder ob es zu viel für das Gerät sein wird, neben dem Spiel damit umzugehen, aber es ist normalerweise ziemlich leicht für die CPU, so dass es dort kein großes Problem geben sollte.
quelle
Sie müssen "Reticulating Splines" sein
quelle
Kommt darauf an, ob Sie einen Ladebildschirm und sofortige Ebenenübergänge oder mehrere Ladevorgänge anstreben.
Ich würde sagen, dass Letzteres besser im Gedächtnis bleibt.
So etwas wie:
//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
Achten Sie beim Laden darauf, dass kein schwarzer Bildschirm angezeigt wird. Oder übrigens ein statischer Bildschirm. Oft habe ich zu Beginn einer App ein statisches Bild für eine Weile gesehen und sofort gedacht, dass es abgestürzt ist.
Ein guter Weg, um den Spieler einzubeziehen, wäre einfach ein schön gezeichneter Hintergrund einer Szene im Spiel oder eine Handlungsreferenz. ein Ladebalken mit / ohne Prozentsatz, sofern es sich nicht um ein statisches "Laden" handelt; und dann vielleicht ein paar informationen.
quelle
Auf iPhone- und Android-Plattformen müssen Sie alle Texturen und Sounds laden. Das Laden von Texturen und Sounds ist auf alten Telefonen wie iPhone 2G, 3G oder G1 sehr langsam. Du kannst es nicht im Spiel machen.
quelle
Wie andere bereits gesagt haben, haben Sie eine viel bessere Leistung, wenn Sie alle Daten eines Levels laden können, bevor Sie mit dem Spielen beginnen. Es ist eine häufige Ursache für Probleme beim Laden von Assets während des Spiels.
Häufige Aufgaben während eines Ladebildschirms sind ein statisches Hintergrundbild, ein sehr einfaches Level, einige Tipps und Tricks zum Spielen, schnelle Animationen usw.
Hier ist der Ladebildschirm für APB. Ziemlich verdammt cool. :) http://www.youtube.com/watch?v=p5STix1t_1E&feature=related
Hier ist ein Pseudocode zum Anzeigen eines Fortschrittsbalkens in einem Ladebildschirm:
Ugh, gezwungen zu verwenden! = Weil es das Code-Rendering abgebrochen hat, als ich <verwendet habe
quelle
Ladebildschirme können verwendet werden, um so ziemlich alles zu verbergen. Laden von Assets, Herstellen von Verbindungen (TCP usw.), Auffüllen von Karten mit Spielobjekten und Initialisieren.
Ich tendiere dazu, Dinge zu erledigen, indem ich eine Art Asset-Manager (oder vielleicht einen Manager für jeden Asset-Typ - Sounds, Grafiken usw.) habe und sie das laden lasse, was in den Speicher geladen werden soll. Dann lassen Sie Ihr Spiel einfach Referenzen aus den Managern ziehen.
Das Anzeigen eines Fortschrittsbalkens, das Bestimmen, was vorab geladen werden soll usw. scheint von Ihrem Projekt, den Ladezeiten und Ihrem Geschmack abhängig zu sein. Fortschrittsbalken sind schön, wenn sie genau sind und es eine lange Last ist (es ist schön zu wissen, wie lange Sie warten müssen).
Auf meinem Android-Handy bevorzuge ich Apps mit einem eigenen, geschmackvoll gestalteten Ladebildschirm. Es wird keine Leiste benötigt, aber die Animation teilt dem Benutzer mit, welche Programme funktionieren. Ich glaube, Android hat eine Standard-Leiste, die Sie verwenden können, die den Job gut macht.
Hier ist eine SO-Frage, die Sie interessieren könnte.
quelle
Es ist zu beachten, dass für Plattformen mit Qualitätskontrollanforderungen (z. B. X360, PS3, DS usw.) eine Animation in Ihrem Ladebildschirm erforderlich ist (oder in der Tat jeder Bildschirm, der länger als einige Sekunden statisch bleibt) ).
Dies liegt daran, dass der Benutzer andernfalls möglicherweise den Eindruck hat, dass Ihr Spiel abgestürzt ist, obwohl das Laden in der Tat nur eine lange Zeit in Anspruch nimmt. Auch wenn dies keine Voraussetzung ist, würde ich es auf jeden Fall raten.
Jede Art von Animation ist in Ordnung, aber ein einfacher Fortschrittsbalken ist möglicherweise nicht die beste, da große Schritte beim Laden dazu führen können, dass sich der Fortschrittsbalken eine Weile nicht bewegt, was bedeutet, dass der Bildschirm genauso statisch ist, als wäre er vorhanden überhaupt keine Bar. Es ist besser, ein sich ständig bewegendes Bild, wie ein rotierendes Symbol, zusätzlich zu einer Fortschrittsanzeige anzuzeigen.
quelle
Für die Ladebildschirme in Conquest habe ich ein paar Missionsbeschreibungen (was für ein Spieltyp es war, sowie ein paar Handlungsanweisungen für die Mission) und eine grundlegende Hilfe zu den Befehlen beigefügt.
Im Hintergrund lud ich Geräusche. Die Grafiken wurden alle nach Bedarf geladen, und das schien für unser Spiel ziemlich gut zu funktionieren, aber die Sounds waren ein Bär, also habe ich alle für die Mission erforderlichen Sounds vorgeladen. Die Schaltfläche Laden / Starten ist deaktiviert, bis alles geladen ist, aber ich habe keine Art von Animation (was eine gute Sache wäre, hinzuzufügen).
Dies ist unser erstes Spiel, also lernen wir noch viel, aber das hat bisher für uns in Ordnung geklappt.
quelle