Delta timing Problem

  • Android

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

  • Delta timing Problem

    Hallo gm-d,

    ich bin mir bewusst, das hier nur sehr wenig Leute mit dem Game maker arbeiten, trotzdem stelle ich hier mal eine Frage: Hat irgendwer Erfahrung mit Delta-timing? Es igbt auf yoyogames so ein Example >HIER< welches das eigentlich ziemlich simple und verständlich erklärt. Im Prinzip erstellt man ein Objekt, welches eine globale Variable im Begin step event ändert und zwar folgendermaßen "delta = 60/1000000*delta_time;" Damit wir eine Zahl ausgegeben, z.B: wenn die Framerate statt 60 nur 30 ist, sollte sie die Zahl 2 ausgeben. Doch genau das funktioniert! Im Prinzip funktioniert einfach garnichts. Selbst das dort mitgelieferte Tutorial funktioniert nicht wirklich... Kennt sich irgendwer mit Delta-timing aus, bzw. hat selber schon Erfahrung damit gemacht?

    LG Afroman
  • So ganz verstehe ich auch nicht wieso der diese eigenartige Rechnung nimmt... ich benutze Delta Time aber in meinem Spiel (in GM 8.1) für Animationen des interfaces die unabhängig von der gewollt variablen Spielumgebung gleich aussehen sollen.

    Dabei habe ich diese Variable in einem begin step event global gesetzt:

    GML-Quellcode

    1. delta = standard_fps/fps;


    delta wird größer je kleiner die FPS zahl sinkt und kleiner je grösser die FPS Zahl im Vergleich zur Referenz wird..
    Statt standard_fps kann da auch der Roomspeed stehen wenn alles an einen konstanten roomspeed angepasst werden soll (in meinem Spiel ist der Roomspeed Variabel).

    Nun wird diese Variable überall verwendet wo etwas immer gleich lang dauern soll.
    Zum Beispiel bei einem alarm musst du den Wert mit delta multiplizieren da bei einer kleienren FPS zahl, ein Alarm länger dauern muss.
    Z.B. beim halben der angepeilten FPS ergibt delta 2. Da nur halb so viele steps pro Sekunde berechnet werden, muss also jeder Alarm doppelt so viele Bilder durchlaufen um die selbe zeitspanne zu überbrücken.

    Bei einem Zähler oder z.B. dem Speed eines Objektes musst du ebenfalls mit delta multiplizieren.
    Soll zum beispiel innerhalb einer Sekunde bei Standard 30 fps immer 300 pixel zurücklegen, muss der speed also:

    GML-Quellcode

    1. speed = 10*delta
    betragen.

    Hoffe das hilft :)

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Hey DragonGamer,

    danke für deinen Tipp. Tatsächlich könnte das funktionieren, sieht auch sehr plausibel aus. Aber leider funktioniert das nicht! Am Computer funktioniert es zwar (wenn ich 60 Frames einstellen, wenn ich 30 einstelle ist es auch nicht wirklich gleich schnell etc.) und am Handy ist der Spieler übertrieben schnell etc. Es könnte sein, das die Varaible fps auf dem Handy nicht funktioniert... Schade das der Game maker keine eingebautes Delta timing hat...

    LG Afroman
  • Ähhh wenn du auf dem handy bist, dann benutzst du doch Game Maker Studio, und diese hat auch Delta-variablen (delta_time)...
    Außerdem wurde mit der neusten Version auch eine neue FPS Variable angeführt. Vieleicht funktioniert es damit auch manuell.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Die Delta Variable gibt die Mikrosekunden wieder zwischen den frames, deßhalb eigentlich auch die 100000*delta_time (HIER). Das ist ja das, was ich nicht ganz verstehe. Ich meine, es stört mich nicht, wenn ich solche Sachen eigentlich manuell machen müsste, aber es funktioniert eigentlich nicht wirklich. Das könnten sie rein theoretisch so lösen "delta_timing(true)", dann wird alles automatisch vom Game maker gemacht (Also auch alarms). Aber naja.
    Außerdem wurde mit der neusten Version auch eine neue FPS Variable angeführt

    Und zwar welche?

    EDIT: Wenn du evtl. ein Android Handy hast, könnte ich dir das Problem einmal schicken.

    LG Afroman
  • Die Variable heisst fps_real. Ist in der Hilfe aber nicht so richtig dokumentierert...
    Hab ein android Handy aber noch nicht das Studio damit ausprobiert.
    Wenn man tatsächlich die Ergebnisse von der PC-version und der Android version unterscheiden, muss da wohl ein Fehler seitens des Game Makers geben.

    So wie ich das verstehe soll es laut Beispiel so heissen:

    GML-Quellcode

    1. speed = spd * (ot - delta_time);
    2. ot = delta_time;


    Damit wird automatisch jeden Step eienr Beschleunigung oder Verlansgamung des Spiels entgegengewirkt wobei immer der Wert des letzten Steps hinzugezogen wird. Ganz interessant... und dürfte wohl viel präziser sein als meine Methode.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Okey, viel Glück!
    Dort oben bei dem manuellen Delta habe ich allerdings was falsches geschrieben.
    Bei einem Alarm muss man antürlich den Kehrwert des Delta nehmen bzw. durch delta teilen da bei halber FPS Zahl der Alarm auch nur halb so viele Steps durchlaufen darf um die selbe Zeitspanne zu überbrücken...

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Benutzer online 1

    1 Besucher