Wählen Sie ein wiederholtes Objekt aus und messen Sie es
Erstellen Sie eine wiederholbare Szene, die für eine festgelegte Dauer das gleiche Projektilmuster abfeuert. Beobachten Sie das Bildrate, Frame-Verhalten und Zuordnungsaktivität mit den Profilierungstools des Browsers, bevor Sie einen Pool einführen. Vergleichen Sie anschließend dieselbe Szene und halten Sie dabei die Anzahl und das Verhalten der Projektile konstant. Wenn es sich bei dem gemessenen Problem stattdessen um teure Zeichen-, Bilddekodierungs- oder Kollisionsarbeiten handelt, kann die Wiederverwendung von Objekten diese Ursache nicht beheben. MDN erklärt, dass JavaScript Objekte automatisch zuordnet und Garbage Collection verwendet, sodass ein Pool eher eine Designoption zum Testen als eine obligatorische Optimierung ist.
Legen Sie für einen Objekttyp mit einfachem Inaktivzustand einen Pool an. Ein Projektil kann in den Pool zurückkehren, nachdem es die Arena verlassen hat oder eine Wand getroffen hat; Ein langlebiger Bossgegner mit sich entwickelnden Phasen ist weniger offensichtlich. Legen Sie eine maximale Poolgröße oder eine definierte Überlaufauswahl fest, damit ein Burst den Pool nicht unbemerkt und unbegrenzt vergrößern kann.
Führen Sie die Aktivierung und das Zurücksetzen durch
Legen Sie bei der Aktivierung Position, Geschwindigkeit, Lebensdauer, Kollisionsflaggen, Besitzer und visuellen Status aus der neuen Anfrage fest. Bei der Deaktivierung wird das Element genau einmal aus den aktiven Kollisions- und Zeichnungslisten entfernt. Ein angesammeltes Partikel mit alter Opazität kann an der falschen Stelle aufblitzen; Ein Projektil, das seinen vorherigen Besitzer behält, kann einer früheren Quelle Punkte verleihen. Behalten Sie die Reset-Logik in einer Funktion bei und listen Sie jedes veränderbare Feld auf.
Testen Sie Wiederverwendung, Erschöpfung und Szenenbereinigung
Lösen, deaktivieren und verwenden Sie denselben Slot mehrmals und überprüfen Sie dann, ob alle Eigenschaften mit einem neu initialisierten Beispiel übereinstimmen. Erschöpfen Sie den Pool absichtlich und überprüfen Sie die gewählte Richtlinie: Weisen Sie ein temporäres Objekt zu, lassen Sie einen kosmetischen Effekt fallen oder begrenzen Sie Spielereignisse auf eine Weise, die die Regeln zulassen. Betreten und verlassen Sie die Szene und stellen Sie sicher, dass gepoolte Einheiten aus einer alten Runde in der neuen Runde nicht aktiv bleiben können.
Fragen zu Objekt-Pooling-Browserspiele
Macht Objekt-Pooling JavaScript-Spiele immer schneller?
Nein. Es erhöht den Verwaltungsaufwand und behebt nur den Engpass, den es tatsächlich betrifft. Messen Sie eine wiederholbare Szene vorher und nachher und behalten Sie den einfacheren Zuordnungspfad bei, wenn das Pooling die Komplexität erhöht, ohne dass ein nützliches Ergebnis erzielt wird.
Was ist der häufigste Pool-Reset-Fehler?
Ein wiederverwendetes Objekt behält ein Feld aus seinem früheren Leben bei, z. B. Geschwindigkeit, Lebensdauer, Besitzer oder Sichtbarkeit. Zentralisieren Sie die Aktivierung und das Zurücksetzen und führen Sie dann eine wiederholte Wiederverwendung in Tests durch.
Weiterlesen
Etwas nicht mehr aktuell? Korrektur melden