Wie kann ich übermäßige Trümmer, die von Spielern erstellt wurden, bereinigen?


92

In meinem neuesten Spiel, das ich mache, kannst du ein 2D-Objekt beliebig schneiden, wie in diesem GIF gezeigt:

Bildbeschreibung hier eingeben

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?


17
Aus Ihrer Frage geht nicht wirklich hervor, was Sie eigentlich wollen. Sie sagen, Sie wollen "die Trümmer aufräumen", aber gleichzeitig wollen Sie nicht, dass die Trümmer nach einer Weile verschwinden.
Philipp

10
Tiny & Big würde die kleineren Teile zerstören. Ich bin mir ziemlich sicher, dass die größeren Teile für das Level übrig geblieben sind, aber ich kann mich nicht ganz daran erinnern. Hier ist ein Beispiel: youtu.be/236ly0ApPqg?t=177
TyCobb

2
Dinge, die außerhalb der Reichweite liegen, können entfernt und ersetzt werden, wenn Sie wieder darauf zugreifen.
Loren Pechtel

3
Nur meine kleine Meinung, aber eine minimale Objektgröße festlegen, die durch die Schnittaktion bewirkt werden soll. Wenn es schwierig ist, das zu schneidende Stück herauszusuchen, können Sie es nicht schneiden. (Nur zur Seite, schöne Spieldynamik, dieser hat definitiv Beine!)
AJFaraday

12
Ich möchte sagen, dass ich keine Anerkennung für die Herstellung der Schneidmechanik nehme, da es sich um ein kostenloses Gut handelt, das ich bei Github gefunden habe . Anhand des Beispiels erhalten Sie eine Vorstellung davon, wie Sie damit Objekte schneiden können. (Spieler wurde von mir codiert und so wird alles andere im Spiel.
Ducktor

Antworten:


71

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.


1
Denke, ich mache das erste, da ich nicht vorhabe, irgendein Puzzlespiel zu machen.
Ducktor

36
Micheal Bay es auf, wenn die kleinen Stücke auch verschwinden. Das ist kein Baumstamm, es ist Sägemehl. Oder explodierendes Sägemehl. warum nicht?!
corsiKa

26
@corsiKa Wenn Sie der Schneidbewegung einige Flammeneffekte hinzufügen, können die Schnitte Brandspuren an den Kontaktpunkten mit einer bestimmten Breite hinterlassen. Wenn das Objekt so klein ist, dass es vollständig "versengt" ist, kann es in Flammen aufgehen und in wenigen Augenblicken wegbrennen.
T. Sar

155

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.

Es gibt ein Problem, wenn Sie bewirken, dass sie sich bewegen.

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.


36
Dieser Beitrag ist die endgültige Antwort auf das Problem des Bauschuttüberlaufs. Sie haben eine umfassende Zusammenfassung der Techniken geliefert und gleichzeitig deutlich gemacht, wie wichtig es ist, kreativ zu sein und Lösungen zu finden, die für Ihre Umstände geeignet sind. Gleichzeitig haben Sie gezeigt, wie Mechanik und Erzählung zusammenfließen können. Ich wollte nur sagen, dass ich Schwierigkeiten habe auszudrücken, wie beeindruckt ich bin.
Dragomok

12
Der Versuch, ein Objekt zu schneiden, das kleiner als die Strahlbreite ist, muss nicht dazu führen, dass das Objekt vollständig verschwindet, sondern kann stattdessen ein kleineres Objekt ergeben. Wichtig ist, dass die Anzahl der Objekte nur erhöht werden kann, wenn das geschnittene Objekt die Strahlbreite überschreitet.
Supercat

1

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.