Replay System

    • Skript

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Replay System

      Mit dieser Skriptsammlung ist es möglich, Teile eines Spiels aufzuzeichnen und später
      als Replay wieder abzuspielen, ohne auf Videodateien zurückgreifen zu müssen.
      Nach einer kompletten Überarbeitung funktionieren die Skripte jetzt absolut synchron
      zum eigentlichen Spiel (auch mit Maus).
      Im Prinzip müssen nur die Skripte in das Spiel importiert und die RPE_Ini angepasst werden.
      Außerdem müssen die folgenden GM Funktionen mit den entsprechenden RPE Skripten
      ersetzt werden:
      keyboard_check,keyboard_check_pressed,keyboard_check_released,mouse_check_button,
      mouse_check_button_pressed,mouse_check_button_released,random

      Die Anpassungen in der RPE_ini umfassen nur die Zeilen zwischen den Zwei Kommentarzeilen,
      dort wird eingetragen, welche Tasten überwacht werden sollen und ob die Maus ebenfalls
      mit aufgezeichnet werden soll.

      Hier eine kurze Auflistung der Skripte + Erklärung:
      RPE_Ini() Initialisiert das RPE System, muss vor allen anderen Funktionen
      aufgerufen werden
      RPE_Record_Start() Startet eine Aufzeichnung
      RPE_Record_Step() Führt einen Aufzeichnungsschritt durch. Sollte nach
      Start der Aufzeichnung jeden Step ausgeführt werden.
      RPE_Record_Stop(fname) Schließt eine Aufzeichnung ab und speichert die Dateien
      mit dem Teilnamen fname (speichert nicht, wenn fname="")
      RPE_IsRecording() Gibt zurück, ob zur Zeit aufgezeichnet wird.
      RPE_Play_Start(fname,protected) Startet eine Aufzeichnung aus Datei fname. Protected gibt an,
      ob User-Eingaben verworfen werden sollen.
      RPE_Play_Step() Führt einen Abspiel Schritt durch
      RPE_Play_Stop() Stoppt das Abspielen.
      RPE_IsPlayingNormal() Gibt zurück, ob zur Zeit eine Aufnahme im Normalen Modus
      abgespielt wird.
      RPE_IsPlayingProtected() Gibt zurück, ob zur Zeit eine Aufnahme im Protected Modus
      abgespielt wird.
      RPE_mouse_saver() Setzt die Maus auf die aktuellen Replay Koordinaten zurück
      (stabilisiert die Maus gegen Usereingaben, indem es im Begin
      Step und End Step Event aufgerufen wird).
      Die folgenden Funktionen ersetzen entsprechende GM Funktionen. Zu Informationen einfach die entsprechenden
      Funktionen in der GM Hilfe nachschlagen
      RPE_Random(max)
      RPE_keyboard_check(button)
      RPE_keyboard_check_pressed(button)
      RPE_keyboard_check_released(button)
      RPE_mouse_check_button(button)
      RPE_mouse_check_button_pressed(button)
      RPE_mouse_check_button_released(button)
      >>>>Download (Skripte+Beispiel)<<<<


      Zwecks Kontinuität der Alte Post:
      Spoiler anzeigen
      Mit dieser Skriptsammlung ist es möglich, Teile des Spiels aufzuzeichnen und als Replay wieder abzuspielen,
      ohne Große Videodateien anzufertigen.
      Dazu müssen nur die Skripte eingebunden und die RPE_Ini entsprechend angepasst werden:

      GML-Quellcode

      1. //-----------------------------------------------
      2. //Hier die zu überprüfenden Tasten reinschreiben
      3. RPE_numb=4;
      4. RPE_check[0]=vk_right;
      5. RPE_check[1]=vk_left;
      6. RPE_check[2]=vk_up;
      7. RPE_check[3]=vk_down;
      8. //Maus
      9. RPE_mouse=true;
      10. //Toleranzwert in Millisekunden
      11. RPE_tol=5;
      12. //-----------------------------------------------
      Alles anzeigen

      bei RPE_check gibt man die zu überwachenden Tastencodes an (RPE_numb ist die Anzahl der Einträge) und mit RPE_mouse
      lässt sich bestimmen, ob auch die Mausaktionen überwacht werden sollen.
      Da man keine Mausaktionen simulieren kann, müssen sämtliche mouse_check_... Funktionen durch die entsprechenden
      RPE_ Funktionen ausgetauscht werden.
      Auch random muss gegen RPE_random getauscht werden, damit die Zufallszahlen beim wiederabspielen des Replays stimmen.
      Zum Aufzeichnen reicht es, einfach RPE_Record(Dateiname) aufzurufen und mit RPE_Stop() (oder auch RPE_Unload) die Aufzeichnung
      zu stoppen. RPE_Play(Dateiname) spielt das Replay danach wieder ab.

      Anmerkung: Da der GM leider nicht der schnellste ist (und vor allem seine Steps nicht immer gleichlang dauern), treten bei längeren
      Replays Verschiebungen auf, die den Sinn des Replays wieder zunichte machen. Die aufzuzeichnenden Stellen sollten also möglichst
      kurz gehalten werden.

      Edit: Ein weiterer Test hat ergeben, dass sich das System auch nicht für Spiele eignet, in denen die Maus viel bewegt wird. Das Skript
      kommt dann mit dem auslesen der Mauspositionen nicht mehr nach und dementsprechend durcheinander.


      Edit: Da war noch ein kleiner Fehler im Random Skript, der ist nun korrigiert
      Edit2: Und noch ein weiterer Fehler im Play Skript, korrigiert
      ___________________________________________________________
      Beware of wild pointers
      ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Spellmaker ()

    • Einfach im GM Fenster eines beliebigen Spieles Scripts->Import Scripts und dann die Datei auswählen.
      Dann werden die Skripts des Systems in dein Spiel importiert und du musst sie nur noch wie im ersten
      Post beschrieben einsetzen.
      ___________________________________________________________
      Beware of wild pointers
      ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
    • Nocheinmal:
      -RPE_Ini(): Initialisiert das System, muss am Beginn des Spiels, bzw vor dem ersten Einsatz irgendeines anderen RPE_Skripts aufgerufen werden
      -RPE_Record(Dateiname): Startet eine Aufzeichnung
      -RPE_IsRecording(): Gibt zurück, ob aufgezeichnet wird
      -RPE_Play(Dateiname): Spielt eine Aufzeichnung ab
      -RPE_IsPlaying(): Gibt zurück, ob abgespielt wird
      -RPE_Stop()/RPE_Unload(): Stoppt eine Aufzeichnung/das Abspielen einer Aufzeichnung
      -RPE_random(): Ersatz für random() (mit gleichen Parametern), muss anstatt random aufgerufen werden, damit das System laufen kann.
      -RPE_mouse...: Ersatz für die mouse_check... Funktionen, müssen aufgerufen werden, damit das System funktioniert.

      Alle anderen Funktionen werden nur Skriptintern benötigt.
      ___________________________________________________________
      Beware of wild pointers
      ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
    • Achso ok! Danke!
      Jetzt versuche ich es nochmal!

      Sorry aber irgendwie bin ich blöd!
      Kann mir bitte mal jemnd ein beispiel schicken. :D

      Ich bin keine Signatur... Ich putze hier nur!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von KröteGAMES ()

    • Aus dem kleinen Example hat sich nun eine komplett überarbeitete Fassung
      ergeben. Diesmal sollte es genau so funktionieren, wie man es auch erwartet
      (also mit Maus und Tastatur und vor allem dauerhaft synchron).
      Alles Wichtige findet sich im ersten Post.
      ___________________________________________________________
      Beware of wild pointers
      ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
    • Mit Waterman7's Hilfe konnte ich noch einen Fehler im Random Skript ausmachen
      (und natürlich auch korrigieren). Nun sollte wirklich alles funktionieren.
      (Downloadlink immer noch im ersten Post)
      ___________________________________________________________
      Beware of wild pointers
      ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____