In meinem neuesten Spiel, das ich mache, kannst du ein 2D-Objekt beliebig schneiden, wie in diesem GIF gezeigt:
Sie können es kontinuierlich in Hunderte oder Tausende von Stücken schneiden. Dies verursacht keine große Verzögerung, da sie sich immer in einem schlafenden physischen Zustand befinden, aber es gibt ein Problem, wenn Sie sie in Bewegung setzen.
Ich bin mir nicht sicher, wie ich damit umgehen soll, so dass es nicht so viel Trümmer gibt, wenn ich etwas zerlege. Ich möchte sie nach einer gewissen Zeit nicht wirklich löschen. Ich mag es nicht, wie, wenn Sie zu etwas zurückkehren, das Sie nach einer Weile zerschnitten haben, es zufällig verschwunden ist.
Wie kann ich übermäßige Trümmer, die von Spielern erstellt wurden, bereinigen?
unity
2d
performance
Ducktor
quelle
quelle
Antworten:
Zuallererst sieht die Spielmechanik so aus, als ob es super Spaß machen könnte. Hier sind zwei einfache Lösungen, die unabhängig voneinander oder zusammen verwendet werden können, um dieses spezielle Problem zu lösen:
Entfernen Sie sehr kleine Stücke
Es hat wenig Sinn, sich um kleine Kollisionsteile zu kümmern, die den Spieler nicht wirklich behindern oder die Umwelt in irgendeiner Weise beeinträchtigen. Das Berechnen der zusätzlichen Kollisionslogik lohnt sich einfach nicht. Entfernen Sie entweder diese Teile oder die Kollision mit ihnen.
Spieler-Kürzungen begrenzen
Unbegrenzte Schnitte können viele Ihrer Rätsel sehr einfach machen, wenn Sie einfach jedes behindernde Objekt in einen Haufen Brei schneiden. Wenn Sie dem Spieler nur ein paar Schnitte zum Spielen geben (oder ihn mit der Zeit langsam aufladen lassen), werden Sie wahrscheinlich feststellen, dass dies Ihre Rätsel schwieriger macht und zusätzlich die Schmerzen beim Umgang mit Kollisionen mit tausend Fragmenten beseitigt.
quelle
Finden Sie Ihren Engpass heraus
Ein paar hundert bewegte Objekte sollten kein Problem sein. Es könnten jedoch einige hundert kollidierende Objekte sein. Es wird einige Tests erfordern, aber ich glaube, der Engpass, den Sie haben, ist die Kollision.
Übrigens, über wie viele Objekte sprechen wir? Was ist die Plattform? Einhundert Objekte für ein Handyspiel sind nicht dasselbe wie einhundert für ein Webspiel oder einhundert Objekte für ein Desktop-Spiel.
Testen Sie dasselbe Spiel, aber mit deaktivierten Kollisionen zwischen den ausgeschnittenen Objekten, und prüfen Sie, ob es bei ähnlichen Objektmengen zu Verzögerungen kommt. Wenn dies der Fall ist, bedeutet dies, dass die schiere Menge an Objekten die Ursache für Probleme ist. Ansonsten sind die Kollisionen das Problem.
Dies informiert Sie über Ihre Entscheidung, wie Sie die Leistung verbessern möchten. Nicht alle der folgenden Ideen werden zutreffen, und Sie müssen sowieso testen.
Ich werde nicht über das Optimieren für eine große Anzahl von Objekten in der Nähe des Players sprechen, da die Probleme bei der Interaktion mit den Objekten zu auftreten scheinen.
Wenn das Problem bei der Interaktion mit den Objekten auftritt, ist unklar, wie das Entfernen nicht sichtbarer Objekte das Problem beheben kann. Ich gehe jedoch davon aus, dass es möglicherweise hilft.
Ich sage nur, wenn Objekte, die weit vom Spieler entfernt sind, ein Problem darstellen, können Sie zunächst kleinere Level haben oder das Spiel in Teile aufteilen, die Sie je nach Standort des Spielers laden und entladen können.
Außerhalb der Grenzen
Ich glaube, wenn es darum geht, Trümmer aufzuräumen, ist das erste, was man haben muss, Gegenstände zu entfernen, die außerhalb der Grenzen liegen. Zum Beispiel das Stück, das in eine Grube gefallen ist. Wenn der Spieler nicht in der Lage sein sollte, dorthin zu gelangen, um es zu sehen, gibt es keinen Grund, es zu behalten.
Ich werde darauf zurückkommen.
Mach es realistischer (Teil 1)
Wenn Sie Holz mit einer Säge, einer Axt oder einem ähnlichen Werkzeug schneiden, geht Material verloren (Sägemehl, Späne usw.). Selbst wenn Sie mit einem Laser schneiden, verbrennt der Laser etwas Holz. Außerdem kommt es bei Dingen, die kein Holz sind, normalerweise zu Verformungen am Schnitt, Bröckeln usw.
Was ich sage ist, dass der Schnitt nicht perfekt ist und etwas Material verloren geht. Sie können das in Ihrem Spiel modellieren. Das magische rote Ding hat Dicke. Entfernen Sie diese Dicke von den Objekten (fügen Sie Partikeleffekte hinzu, wenn Sie sich zu schuldig fühlen).
Dies bedeutet, dass Sie nichts schneiden können, was kleiner als diese Dicke ist. Wenn Sie dies versuchen, wird es aus dem Spiel entfernt. Das ist gut! Dies bedeutet, dass es eine Obergrenze für die Menge an Trümmern gibt, die vorhanden sein wird, und dass es eine mechanisch einwandfreie Möglichkeit gibt, diese im Spiel zu beseitigen.
Ändern Sie die Gänge für kleine Gegenstände
Dies funktioniert besser, wenn Kollisionen das Problem sind.
Sobald ein Objekt zu klein ist, sind die Details der verschiedenen Winkel weniger relevant. Sie könnten zu einem weniger genauen Kollisionsmechaniker wechseln. Beispielsweise könnten Sie Kreiscollider verwenden.
Sie können auch kleinere Objekte ohne Kollision untereinander behandeln. Betrachten Sie nur Kollisionen zwischen ihnen und Agentenobjekten (wie dem Avatar des Spielers oder von der KI kontrollierten Charakteren).
Schließlich können sehr kleine Objekte in Staub verwandelt werden (Partikeleffekte).
Mach es realistischer (Teil 2)
Dies funktioniert besser, wenn Kollisionen das Problem sind.
Material verformt sich und bricht unter Druck. Wenn Sie lange Objekte mit sehr geringer Dicke haben, zerlegen Sie diese in kleinere Objekte, damit diese die oben beschriebene Lösung nutzen können.
Wir können so tun, als hätte es zu wenig Dicke, als dass es bröckelt und zerbricht, wenn Sie es schlagen.
Objekte zusammenführen
Dies funktioniert besser, wenn die Anzahl der Objekte das Problem ist.
Ein häufiger Trick, den viele Spiele verwenden, um mit großen Mengen an Tropfen umzugehen, die die Leistung beeinträchtigen könnten, ist das Bündeln von Tropfen.
Sie könnten etwas Ähnliches für kleine Objekte ausprobieren, die sich in der Nähe befinden. Haben sie ein einzelnes Objekt geworden. Ich will die Teile aber nicht zusammenkleben. Ich meine, ein einzelnes Objekt zu erstellen, um mit ihrer Physik umzugehen. Sie können immer noch die einzelnen Teile darstellen, aus denen sich das Objekt zusammensetzt, möglicherweise mithilfe von Techniken, die Partikeleffekten ähneln.
Mach es realistischer (Teil 3)
Hast du von Wind gehört? Es gibt Wind in der realen Welt.
Verwenden Sie Wind, um kleine Gegenstände wegzuschieben.
Ich weiß, dass es kontraintuitiv klingen kann, weil es bedeutet, dass kleine Objekte nicht zur Ruhe kommen, zumindest nicht sofort. Lesen Sie weiter unten, bevor Sie ein Urteil fällen.
Sie können verwenden Wind vor wegzuschieben kleines Objekt - oder sobald - sie beginnen zu stapeln. Was funktioniert besser, wenn Sie Optimierungen für kleine Objekte verwenden (z. B. Kombinieren oder Entfernen von Kollisionen zwischen diesen).
Wenn Sie Wind verwenden können, um Objekte in Gruben oder auf andere Weise außerhalb der Grenzen zu schieben, können Sie dies als Entschuldigung für das Entfernen der Objekte verwenden. Ich habe dir doch gesagt, dass ich darauf zurückkommen werde. Selbst wenn Sie dies nicht tun, kann dies als Entschuldigung dafür dienen, kleine Objekte zu entfernen, die zu weit vom Spieler entfernt sind. Stellen Sie sich einfach vor, der Wind hätte sie entfernt, während der Spieler nicht hinschaute.
Sie können einige Objekte entfernen, während der Spieler nicht hinschaut. Sie haben meinen Segen.
Darüber hinaus haben Sie jetzt eine Ausrede, um Wind hinzuzufügen, den Sie als Teil anderer Mechaniken oder Hindernisse des Spiels hinzufügen können. Sie könnten sogar den Geist des Windes in die Erzählung aufnehmen, der versucht, die Dinge sauber zu halten, wenn Sie so geneigt sind.
Hinweis : Sie müssen nicht unbedingt Wind auslösen, wenn es Trümmer zum Reinigen gibt (obwohl dies funktionieren würde). Möglicherweise kann Wind in zufälligen Intervallen auftreten.
Biber!
Ein nerviger Biber kommt vorbei und stiehlt dein Holz!
Jetzt hast du einen feindlichen Typ!
Außerdem entfernen sie natürlich Holz, während Sie nicht hinsehen. Sie können es sogar so gestalten, dass Sie zurückkehren und sehen, wie ein Biber mit einem Stück Holz davonläuft, wo früher ein Haufen war. Das würde für einen unvergesslichen Moment sorgen, erklärt, warum das Holz verschwunden ist und löst einige der Leistungsprobleme, denen Sie gegenüberstehen, auf einmal.
Es ist alles Kompromisse
Es gibt Einschränkungen bezüglich der Plattform oder der von Ihnen gewählten Tools. Auch die Zeit und das Budget, die Sie für die Entwicklung des Spiels benötigen, sind begrenzt. Eine perfekte Simulation der Realität ist noch nicht möglich . Niemand kann .
Jeder Entwickler arbeitet innerhalb der Grenzen seiner Zielplattform und der Tools, die ihm zu der Zeit zur Verfügung standen, und die besten Spiele mussten Kompromisse eingehen, um das Spiel unterhaltsam und ansprechend zu gestalten ... auch wenn dies weniger Realismus bedeutet. Oft machen sie Spaß und sind ansprechend, weil sie nicht realistisch sind.
Lassen Sie Kreativität aus diesen Grenzen kommen.
Sie können Ihr Spiel aber auch realistischer gestalten , indem Sie die für Ihre Entwicklung geeigneten Teile der Realität auswählen. Bedenken Sie, dass manchmal das Entfernen von Gegenständen, die nicht im Spiel sind, die Kosten für ein unterhaltsames Spiel verursacht.
quelle
Die Welt ist diskret. Sie können ein Objekt nicht kleiner als ein Pixel rendern. Erlauben Sie daher nicht, dass solche Objekte existieren. (Dies ähnelt einigen Realismuspunkten von Theraot .)
Tatsächlich erhalten Sie dies möglicherweise kostenlos: Der Player gibt die Schnittlinie im Wesentlichen als diskretisierte Linie auf dem Bildschirm an. Der Effekt des Schnitts besteht darin, jedes Objekt in die Unterobjekte zu unterteilen, die jeweils aus den Pixeln auf oder unter dieser Linie und den Pixeln genau darüber bestehen. Ein Ein-Pixel-Objekt kann möglicherweise nicht sowohl über als auch unter der Linie liegen, sodass es mit diesem Algorithmus nicht geschnitten werden kann.
Wenn Sie immer noch zu viele Objekte zum Verfolgen haben, wenn Sie alle Schneidefelder in einzelne Pixel schneiden, funktioniert möglicherweise eine größere Mindestgröße.
Oder mach dir einfach keine Sorgen. Wenn der Spieler bereit ist, lange Zeit damit zu verbringen, Gegenstände in Staub zu schneiden, hat er es offensichtlich nicht eilig, um mit der Verzögerung fertig zu werden, die er verursacht hat. ;-)
quelle