Laden...

Konzept für Zeitlinie (zum Einsatz etwa in Spielen)

Erstellt von userid11997 vor 12 Jahren Letzter Beitrag vor 12 Jahren 992 Views
u
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 12 Jahren
Konzept für Zeitlinie (zum Einsatz etwa in Spielen)

Hallo,

ich möchte ein Konstrukt erstellen, dass mir eine Zeitlinie definiert, in der bespilsweise das entfernen von Objekt A in X Abschnitten weiter Einfluss auf Person B nimmt. Allerdings kann ich mi da noch nicht so ganz vorstellen, wie man das realisieren kann.

Eine Möglichkeit wäre ein Baum, aber wie definier ich das Ende, bzw den Anfang und wie kann ich die alternativwege "berechnen" , wenn ich Objekt A entnehme, schlägt der Pfad von Person B auf einen anderen um etc.

Und für die, die jetzt wieder aufklärend tätig sein wollen, ja ich kenne mich mit der Defiition von Zeit im allgemeinen aus.

799 Beiträge seit 2007
vor 12 Jahren

Das mit den Alternativwegen ist schwierig. Wie sieht denn der Graph aus? Wenn du einen Knoten B rausnimmst, werden dann automatisch die adjazenten Knote von B potentielle Nachfolger von Knoten A?

Falls Ja, brauchst du eine Bewertungsfunkton die dir den Nachfolger bestimmt. Wenn du die Bewertung ein paar Ebenen tief machst, bekommst du schon lustige Effekte von Knoten.

Also ich würde das ganze per Wegsuche aufziehen. Wo du denn Anfang setzt ist dir überlassen. Es kommt stark darauf an wie die Datenbasis aussieht die du auf diese Darstellung abbilden möchtest.

Da bräuchten wir, denke ich, noch mehr Informationen.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
u
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 12 Jahren

Hallo,

Das Ganze soll später für den Einsatz in Spielen Optimiert werden, was ebend ann dazu eingesetzt werden kann, um anhand einer Zeitachse zu bestimmen, ob bestimmte Aktionen des Spielers den Verlauf zu späteren Zeitpunkten beeinflussen.
Mit NextStep() wird dann schrittweise die Zeitstufe erhöht.

Dabei existieren eine bestimmte Anzahl Hauptereignisknoten, wie es abgelaufen wäre, wenn der Spieler den Pfad nicht durch irgendeine Aktion vverändert hätte.
Diese werden potenzielle erstmal nicht entfernt, es wird lediglich über eine Bedingung (Bedingungsscript) entschieden, ob ein Pfad besucht werden kann.

Beispielsweise


Der Spieler entfernt einen Gegenstand X aus einem Raum Y, der später von einem NPC besucht wird. Der NPC findet den Gegenstand nun nicht mehr vor und verlässt den Raum ohne diesen. Durch den fehlenden Gegenstand wird der NPC in einer Falle gefangen, kann sich nicht befreien und stirbt.
Der NPC hätte aber, hätte er den Gegenstand gehabt entkommen können und wäre später wieder auf den Spieler getroffen, um diesen beim Bosskampf zu unterstützen
etc..

Die Ereignisknoten sind zumindest teilweise vorgegeben, die Kernfrage ist nun, wie entschieden wird, welche Alternativwege bzw. sogar Alternativknoten durch diese eine Aktion in den einzelnen Zeitstufen erzeugt werden.

Den Startknoten bildet dabei immer der aktuelle Hauptereignisknoten (das entfernen von Gegenstand X)

u
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 12 Jahren

Ich hab mir jetzt mal folgendes überlegt: Auf basis unserer Alchemie-Engine definiere ich zuerst einen Satz von Eigenschaften mit vorgabewerten. Das sieht dann in etwa so aus:


playerCarriesItemX = false;
npcCariesItemX = false;
npcIsDead = false;

Und definiere dann einen Satz von kombinationen, die die jeweiligen Pfade darstellen. In etwa so:


--Step1

playerCarriesItemX = "itemX"; #player_picksItemEvent
npcCariesItemX = "itemX"; #npc_picksItemEvent

--Step2

npcIsDead = "true"; #playerCarriesItemX


Wobei die Definition hinter dem # auf Ereignisse bzw. Eigenschaften zugreift. Es gibt zwei Arten vin Knoten, die abfragenden Knoten und die definierenden Knoten.

Abfragende Knoten greifen auf die Eigenschaften zu, während definierende Knoten die Eigenschaften jeweils invertieren (true -> false und umgekehrt)

Die Zeitlinie kombiniert jetzt jeweils auf basis der in den Eigenschaften definierten Tokens der jeweiligen Tiefe (Step) und prüft die Ergebnisse und erzeugt somit einen Pfad, der die Zeitknoten definiert. Ein Ereignis, welches einen Alternativpfad erzeugt, verändert jetzt eine Eigenschaft und in der nächsten Tiefenstufe wird wiederum der aktuellen Knoten Eigenschaften geprüft und das Resultat als neuen Wegknoten gesetzt.