Cutscenes in Cutscenes

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Cutscenes in Cutscenes

Post: # 76068Post parkiii
31 Aug 2010, 16:53

Ich bin gerade nicht auf meinem PC und kann es deshalb nicht ausprobieren, dennoch bräuchte ich eine kleine Information, da ich mir gerade Gedanken über einen Skript mache.

Angenommen man startet eine Cutscene in einer Cutscene...

Cutscene (1):

Code: Select all

blablablablabla
if_...
cutscene (2)
blablablablabla
if_...
cutscene (3)
blablablablabla
Wird nun nach Abspielen der Cutscene (2) die Cutscene (1) fortgesetzt oder wirkt das Abspielen einer neuen Cutscene quasi wie ein endscene () oder break () für die Cutscene?


Umgehen könnte ich das ja indem ich folgendes schreibe:

Cutscene (1):

Code: Select all

blablablablabla
if_...
 {
 function (2)
 wait (länge der funktion 2)
 }
blablablablabla
if_...
 {
 cutscene (3)
 wait (länge der funktion 3)
 }
blablablablabla

Schiman
PaC-DK God
Posts: 1177
Joined: 20 Dec 2006, 21:48
Contact:

Post: # 76069Post Schiman
31 Aug 2010, 17:06

Also meiner Erfahrung nach, kommt es zu unvorhersehbaren Problemen, wenn man Cutscenes aus Cutscenes startet.
Auf jeden Fall wartet die erste Cutscene nicht an der Stelle, an der sie Cutscene2 gestartet hat, sondern sie läuft entweder weiter oder bricht ab oder weiß der Kuckuck was. Bei mir gabs da immer komische Effekte.

Wenn ich Funktionen aus Funktionen aufrufen wollte, dann habe ich es immer mit functions gemacht.
wait(länge der function) funktioniert nicht wirklich, weil du nicht vorhersehen kannst, wie lange eine Funktion braucht.

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 76070Post parkiii
31 Aug 2010, 17:09

Wenn ich Funktionen aus Funktionen aufrufen wollte, dann habe ich es immer mit functions gemacht.
Und wenn du Funktionen aus Cutscenes aufrufen willst, die danach weitergehen sollen? Oder meintest du eben dies?
wait(länge der function) funktioniert nicht wirklich, weil du nicht vorhersehen kannst, wie lange eine Funktion braucht.
Wieso das? Eine ungefähre Schätzung eingeben, testen, und dann so lange die wait-Zeit verändern bis der Ablauf reibungslos erscheint.

Schiman
PaC-DK God
Posts: 1177
Joined: 20 Dec 2006, 21:48
Contact:

Post: # 76071Post Schiman
31 Aug 2010, 17:14

parkiii wrote:Und wenn du Funktionen aus Cutscenes aufrufen willst, die danach weitergehen sollen? Oder meintest du eben dies?
Dann trenne ich die Cutscenes in mehrere Teilcutscenes.

z.B.:
Cutscene1

Code: Select all

...
...
...
function(PiBerechnung;1)
PiBerechnung

Code: Select all

...
...
cutscene(Cutscene2)
stopfunction(PiBerechnung)
Cutscene2

Code: Select all

...
...
...
parkiii wrote:
wait(länge der function) funktioniert nicht wirklich, weil du nicht vorhersehen kannst, wie lange eine Funktion braucht.
Wieso das? Eine ungefähre Schätzung eingeben, testen, und dann so lange die wait-Zeit verändern bis der Ablauf reibungslos erscheint.
Dann funktioniert es vllt. auf deinem PC, aber vllt. nicht auf einem anderen. Außerdem funktioniert es dann auf deinem PC vllt. nicht mehr, wenn deine CPU auf Vollast läuft. Das kann man nicht vorhersehen bei parallelen Prozessen. Und du hättest hier eine Function und ein wait parallel. Das geht zeitlich nie gut.

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Post: # 76072Post parkiii
31 Aug 2010, 17:28

Und wenn du Funktionen aus Cutscenes aufrufen willst, die danach weitergehen sollen? Oder meintest du eben dies?
Dann trenne ich die Cutscenes in mehrere Teilcutscenes.
Ich will aber nicht, dass alles hintereinander kommt, sondern wie schon im 1. Skript angedeutet mit if-Abfragen arbeiten.

Das würde dann in etwa so aussehen:

Code: Select all

(*---------------GEGNERTYP 2---------------*)
if_num (Gegnertyp ; 2)
 {
 randomnum (Attackenart ; 2)
 
 if_num (Attackenart ; 1)
  {
  function (Gegner Hieb)
  wait (3,5)
  }

 if_num (Attackenart ; 2)
  {
  function (Gegner Schwertwirbel)
  wait (4)
  }
}
(*---------------GEGNERTYP 2 Ende---------------*)



(*---------------GEGNERTYP 3---------------*)
if_num (Gegnertyp ; 3)
 {
 if_num (MP Gegner ; 0)
  {
  randomnum (Attackenart ; 2)

  (*NORMALE ATTACKE*)
  if_num (Attackenart ; 1)
   {
   function (Gegner Hieb)
   wait (3,5)
   }

  (*STATUSÄNDERNDE ATTACKE*)
  if_num (Attackenart ; 2)
   {
   function (Gegner Schwertwirbel)
   wait (4)
   }
  }

 (*MAGISCHE ATTACKE*)
 if_num (MP Gegner ; >0)
  {
  function (Gegner Fulgor Minor)
  wait (3,5)
  }
 }
(*---------------GEGNERTYP 3 Ende---------------*)

Und da es weit über 10 Gegnertypen geben wird und dementsprechend viele Attacken (zu rechnen ist mti einer Auswahl von 50 Attacken) wäre diese Idee die beste Lösung...

Dann funktioniert es vllt. auf deinem PC, aber vllt. nicht auf einem anderen. Außerdem funktioniert es dann auf deinem PC vllt. nicht mehr, wenn deine CPU auf Vollast läuft. Das kann man nicht vorhersehen bei parallelen Prozessen. Und du hättest hier eine Function und ein wait parallel. Das geht zeitlich nie gut.
Spielt dieses zeitliche Dilemma auch bei Funktionen mit einer Dauer von lediglich 3,5 bis 6 Sekunden eine relevante Rolle?

Schiman
PaC-DK God
Posts: 1177
Joined: 20 Dec 2006, 21:48
Contact:

Post: # 76074Post Schiman
31 Aug 2010, 22:24

parkiii wrote:Spielt dieses zeitliche Dilemma auch bei Funktionen mit einer Dauer von lediglich 3,5 bis 6 Sekunden eine relevante Rolle?
Theoretisch ist es egal wie lange ein Prozess dauert. Es kann sein, dass die CPU bei Volllast den Prozess gar nicht drannimmt, sondern die hochprioren Prozesse abarbeitet. Dann kann eine Function, die normalerweise 1 Sekunde dauert auch ein paar Millionen Jahre lang dauern, weil sie einfach nicht zum Zuge kommt XD (Bei Windows weiß ich allerdings nicht, ob es Prozesse mit einer derart hohen Priorität überhaupt geben kann).

Praktisch wirkt sich der Zeitunterschied nicht so dramatisch aus. Und wenn der Rechner so sehr unter Vollast steht, dann stürzt Windows auch meistens ab :mrgreen: .

Ich denke mal, wenn du bei den wait-Zeiten etwas großzügig bist, dann wird das gehen.

Post Reply