Wenn Sie in einem Einzelspieler-Spiel versuchen, eine Entität aus Komponenten zu erstellen, die in externen Skripten angegeben sind, ist es Ihrer Meinung nach wünschenswerter, wenn eine der Komponenten fehlerhaft ist:
- Sollte die Engine diese Komponente überspringen und die Entität in der Spielwelt nur mit den Komponenten leben lassen, die gut geschrieben wurden?
- Oder sollte es die Entität überhaupt nicht zur Welt hinzufügen, wenn nur eine der Komponenten schlecht geformt ist?
Beachten Sie, dass ich nicht über das Protokollieren der Fehler spreche - das sollte selbstverständlich sein -, sondern nur darüber, was mit der Entität geschehen soll.
component-based
validation
Paul Manta
quelle
quelle
Antworten:
Wenn Sie über ein modifizierbares Spiel sprechen, sollten Sie einem Ihrer obigen Vorschläge folgen. Aber wenn Sie sich Sorgen machen, Ihre eigenen Fehler zu überbrücken, würde ich sagen, tun Sie es nicht. Ich bin ein Verfechter von Fail-Fast geworden . Wenn dies ein Fehler ist, den Sie erstellt haben und der vor der Freigabe behoben werden muss, sollten Sie den Fehler offensichtlich machen. Der Artikel, auf den am Ende der Wiki-Seite verwiesen wird, ist eine gute Lektüre zu diesem Thema. Warum schnelles Scheitern gut ist und wann es verwendet werden sollte und wann nicht.
quelle
Die Unterscheidung zwischen Benutzer und Entwickler ist in der Spieleentwicklung nicht immer klar. Standardprogrammiertechniken wie "schnell ausfallen" sind nicht immer vorteilhaft, insbesondere wenn die Teamgröße zunimmt.
Zum Beispiel hat Ihr technischer Künstler möglicherweise den Shader für die Zielkontur vermasselt - sagen wir, er hat den Fallback gebrochen, sodass er nur auf SM4-Systemen geladen wird, und er hat es nicht bemerkt, weil er ein erstklassiges System hat. Dies führt dazu, dass einige Animationen nicht geladen werden können. Auf diese Animationen wird durch einen bestimmten Zauber verwiesen, den Ihr Kampfdesigner geschrieben hat. Schließlich versucht Ihre Leveldesignerin, die Spawns in Position zu bringen, und diese Spawns können diesen Zauber zufällig wirken - aber jetzt kann sie keinen von ihnen auf der Welt platzieren, weil ihre Zaubersprüche nicht gültig sind, weil die Effekte nicht gültig sind Nicht gültig, da die Shader nicht geladen werden, da die Designer immer die schlechtesten Computer haben.
Ihre Demo ist also noch nicht um 14:00 Uhr fertig und Ihre Investoren fragen sich, warum Sie nicht einmal einen einzigen Gegner im Spiel haben können und Ihr Projekt geschlossen wird.
Oder Sie wählen die Option, bei der Sie den Fehler protokollieren, aber versuchen Sie es weiter, und das Spiel läuft einwandfrei, außer dass einige Zaubereffekte der Feinde nicht angezeigt werden - aber die Investoren wissen nicht, wie diese sowieso aussehen sollen, also tun sie es nicht beachten.
Aus diesem Grund werde ich fast immer die erste Option befürworten - so viel von der Entität wie möglich hervorbringen. Es gibt Fälle für Fail-Fast - zum Beispiel, wenn die Daten nur von Personen bearbeitet werden sollten, die Builds ausführen können (z. B. Programmierer und technische Hersteller) und beim Laden immer zu 100% überprüft werden, oder wenn Sie absolut sicher sind, für welche Person sie verantwortlich sind Das Problem ist die Person, die den Editor verwendet - aber dies sind nicht die üblichen Fälle und erfordern per se viel technische Infrastruktur, in die Sie möglicherweise nicht investieren können.
quelle
Der Benutzer sollte in der Lage sein, eine Vorschau der zu importierenden Entität anzuzeigen und im Voraus zu wissen, ob Fehler vorliegen.
Sie sollten irgendwie entscheiden, welche Fehler schwerwiegend sein sollen, um zu verhindern, dass sie dem Spiel hinzugefügt werden, und welche als Warnungen abgetan werden können .
Wenn die importierte Entität aus irgendeinem Grund in der Lage sein könnte, die Savegame-Daten irreversibel zu ändern, sollten Sie natürlich verlangen, dass sie fehlerfrei sind.
quelle
Ich würde vorschlagen, dass in der Entwicklung ungültige Daten verrauscht werden sollten. dh alles irgendwo protokollieren, wo es gelesen wird. Wenn Ihr Motor dies jedoch ignorieren und fortfahren kann, sollte er dies tun. Sie können Logik wie haben
Selbst in einem Mehrspieler-Spiel ist dies akzeptabel, es sei denn, Sie gehen davon aus, dass ein Spieler versucht, das System zu betrügen.
Nach dem Freigeben der Software möchten Sie diese Protokollierung wahrscheinlich standardmäßig deaktivieren, vorausgesetzt, die Spieler werden diese Protokolle nicht lesen.
quelle