Bereits vor ein paar Tagen sprach Bashiok, der Community Manager von Diablo 3, über die neuen Physik-Features von Diablo 3 und insbesondere was sie für die Verwaltung von Leichen, Trümmerstücken und anderen Objekten, die physikalische Berechnungen benötigen, bedeuten. Auf Grund der großen Resonanz seitens der Community, die ihn mit weiteren Fragen löcherten, hat er Kontakt mit dem Lead Tech Artist Julian Love aufgenommen. Mit dessen Hilfe konnte Bashiok auf die neuen Fragen wesentlich genauer eingehen und einen weiteren, sehr ausführlichen Post verfassen. Natürlich haben wir diesen Post für euch wieder komplett übersetzt:
Übersetzung: Ich habe mich gestern ein wenig mit unserem „lead tech artist“ Julian über einige der Effekte und das Verblassen [von Leichen etc.] unterhalten. Er konne mir einen tieferen Einblick davon vermitteln, wie diese Dinge funktionieren und geändert werden. Wir haben auch einige der Fragen besprochen, die ihr alle gestellt habt, also werde ich auch einige spezifische Punkte behandeln (mit Zitaten!).
Zitat: oder man könnte Leichen einfach von der Physik-Engine trennen, wenn sie herumliegen und sie dann ausblenden.
Abgesehen von meinem vorherigen Kommentar, dass dies nicht einmal ansatzweise so lustig wäre (es würde sich außerdem ziemlich „lame“ anfühlen): Die Havok-Engine weiß schon von alleine, wenn ein Objekt zur Ruhe gekommen ist [keine physikalischen Effekte auf es einwirken], also haben alle Objekte schon jetzt einen geringeren Ressourcenverbrauch wenn sie ruhig liegen. Zusätzlich ist es so, dass es mit der vorgeschlagenen Methode keinen zuverlässigen Weg gibt, festzustellen, wann (oder sogar ob) ein Körper zur Ruhe kommen wird. Im Einzelspieler mit einer Klasse, die nicht einen Haufen Skills benutzt, die mit Leichen interagieren, könnte es funktionieren, aber im Mehrspieler könnten sich theoretisch hunderte von Leichen ansammeln, da sie niemals zur Rune kommen, aufgrund von den ganzen Skills, die auf sie einwirken.
Wir achten auch speziell darauf die Möglichkeiten eines Spielers einzuschränken, die Performance eines anderen Spielers zu vermindern. Dies wurde manchmal in Diablo 2 böswilligerweise gemacht.
Zitat: Ich frage mich warum ihr bloß das Alter eines Objektes benutzt und nicht Werte für Komplexität und Priorität an jedes Objekt vergebt. Wenn man diese beiden mit der Methode für das Alter kombiniert, könnte man Objekte, die hochkomplexe Berechnungen benötigen, und unwichtige (kleine) Objekte früher entfernen.
Ich werde an dieser Stelle einfach Julian aus einer e-Mail zitieren, damit ich nicht seine Sätze umformuliere und so tue als ob ich wüsste, wovon ich rede: „Weil die meisten Objekte im Spiel, die den Alters-Mechanismus verwenden, nicht unterschiedlich genug sind, damit dies signifikante Besserungen mit sich bringt. Die Größe eines Objektes ist generell kein Faktor. Es ist die Anzahl von unsichtbaren physikalischen Netzen, die wir zu diesen Objekten hinzufügen, die zählt. Diese sind ziemlich ähnlich, wenn man verschiedene Objekte vergleicht. Dies kommt zum großen Teil von der großen anatomischen Ähnlichkeit lebender Dinge in der Natur…“
Die meisten Dinge haben Gliedmaße, ein Rückgrat, einen Kopf, etc.
Julian hat darauf hingewiesen, dass wir, obwohl wir unser neues System mit der Anzahl und dem Alter von Objekten haben, immer noch die alte und bewährte „verschwinde nach n Sekunden“ Methode haben. Wir können tatsächlich auswählen welche Objekte welches System verwenden. Wir wollen beispielsweise sicherstellen, dass ein zerstörter Tisch nicht eine Leiche verschwinden lässt. Die Leiche ist vermutlich wichtiger als der Tisch.
Ziemlich viele von euch haben darüber diskutiert einen Schiebebalken in den Optionen oder eine andere Möglichkeit einzubauen, zu steuern wie lange es dauert bis ein Objekt verschwindet. Das könnte möglich sein. Die derzeitige Einstellung von ungefähr 20 ist bloß unsere erste Umsetzung. Diese Nummer kann sich immer wieder ändern und könnte möglicherweise variabel für den Spieler sein. Dennoch, wir wollen die Optionen im Spiel so geordnet und einheitlich wie möglich halten.
Orginaltext: Our lead tech artist Julian and I talked a bit yesterday about some of the effects and fading, and he gave me some more insight as to how they’re working and being changed. We also went in to some of the questions you’ve all brought up, and so I’ll hit some specific points too (with quotes!).
Quote: or just disconnecting corpses from the physics engine when they come to rest, and have them fade out
Aside from my previous comment of this not being nearly as fun (it would also look/feel kind of lame), Havok already knows when an object has come to rest and so they already have a lower cost when they’re still. Additionally with the proposed method there is no reliable way to determine when or even if a body will come to rest. In a single player game with a class that maybe doesn’t use a ton of skills that interact with corpses in a significant way this could work, but in a multiplayer game there could potentially be hundreds of corpses piling up as they’ve never come to rest due to all of the player skills firing off.
We’re also taking extra care to minimize the ability of a player to impact the performance of another player, as was sometimes maliciously done in Diablo II.
Quote: I am wondering why you just use an object’s age and don’t specify a complexity and priority attribute for each object. By combining these two with the age method you would be able to fade out highly complex physics and low priority (tiny) objects earlier.
I’m just going to quote Julian from an e-mail at this point so I’m not rewriting his words and acting like I know what I’m talking about here – „Because most objects in the game that use the age method aren’t different enough in anatomical complexity for this to yield significant benefits. The size of objects generally isn’t a factor. It is the number of unseen physics meshes that the technical artists add to these things that matters and they tend to be pretty similar from actor to actor. This is largely due to the anatomical similarity of living things in nature…“
Most things have appendages, a back bone, head, etc.
Julian also made the point that while we have our new system for determining the number and age of a physics actors, we still have the old tried and true „disappear after n seconds“ method. We can actually choose which actors use which system, so our intent is to make sure that a destroyed table won’t make a corpse disappear, for instance. The corpse probably being the more important of the two to keep around.
Quite a few of you were discussing options, sliders, ways to control how long something takes to disappear, etc. and that may be a possibility. The current setting, which is around 20, is just our initial implementation. There’s always the possibility for that number to change, or for it to potentially be variable by the player. We do want to keep the game options uncluttered and consistent as much as possible though.