wait()-Befehl in GML?

  • GM 8

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

  • wait()-Befehl in GML?

    Moin zusammen,

    Ich vermisse den Befehl "wait(xx)(Sekunden) in GML, oder bin ich nur blind?
    Ich baue gerade an einer Wirtschaftssimulation herum, viele verschiedene Orte in denen Dinge produzirt werden, z.B.:
    Fabrik blabla: produziere alle 10 Sekunden ein Produkt C und verbrauche dafür....bla...
    Normalerweise würde ich dafür den wait(10)-Befehl benutzen... Wenn ich es richtig verstanden habe stehen mir pro Objekt bis zu 12 Alarmuhren zur Verfügung die wie ein Countdown Frames herunterzählen. Auf diese Weise mache ich aber die abgelaufene Zeit von den fps abhängig, die ja bekanntlich unterschiedlich auf verschiedenen rechnern sein kann.

    Sehe ich es dann richtig, das wenn ich die fps im Spiel auf 30 festsetze, und etwas 10 Sekunden pausieren soll, muß ich die Alarmuhr auf 300 stellen?

    Gruß
    Maschine
    Eine Stimme sprach zu mir: "Lächle und sei froh, es könnte schlimmer kommen!"
    Ich lächelte und war froh, und es kam schlimmer... :heul:
  • Ja genau so ist es. Allgemein geschrieben:

    GML-Quellcode

    1. alarm[0] = room_speed*10;// für 10 Sekunden


    Edit: Da war Tice schneller ^^ und @Virus27 sleep(time) friert das ganze Spiel ein, das ist aber hier nicht gefragt.

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
  • Wow, ein paar Sekunden vergangen und schon drei Antworten...

    allerdings die Antwort von virus27 ist doch daneben, habe ich doch gelesen das ich mit sleep() das ganze Spiel pausiere...oder?
    Aus den anderen Antworten entnehme ich, das es ebenfals richtig ist die fps festzulegen. Ich denke 30 ist ein guter Wetr, da mein Spiel kaum grafiklastig ist, kaum Animation, und 30 fps müßten wohl auch ältere rechner schaffen...

    Danke für die schnellen Antworten

    Gruß
    Maschine
    Eine Stimme sprach zu mir: "Lächle und sei froh, es könnte schlimmer kommen!"
    Ich lächelte und war froh, und es kam schlimmer... :heul:
  • Du kannst davon ausgehen, dass bei ~30 Frames diese immer korrekt ablaufen. Ansonsten benutze current_time, bilde eine Differenz zu vorher abgespeicherten Werten und arbeite damit genau nach Systemzeit.
    Einfach wäre, die variable fps zu benutzen. Diese gibt die Geschwindigkeit in jedem Moment an. Wird auch jeden step erneuert.

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

    Einfach wäre, die variable fps zu benutzen. Diese gibt die Geschwindigkeit in jedem Moment an. Wird auch jeden step erneuert.

    Diese "Variable" (theoretisch ist es eine konstante weil man sie nicht ändern kann, praktisch ist sie aber nicht konstant) ist aber mit vorsicht zu genießen.
    Denn: z.B. zu beginn des spiels ist sie 0 und steigt dann langsam (innerhalb von miilisekunden) hoch. Also sollte man sie nicht im Create-evente benutzen.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • WIN schrieb:

    DragonGamer schrieb:

    Einfach wäre, die variable fps zu benutzen. Diese gibt die Geschwindigkeit in jedem Moment an. Wird auch jeden step erneuert.

    Diese "Variable" (theoretisch ist es eine konstante weil man sie nicht ändern kann, praktisch ist sie aber nicht konstant) ist aber mit vorsicht zu genießen.
    Denn: z.B. zu beginn des spiels ist sie 0 und steigt dann langsam (innerhalb von miilisekunden) hoch. Also sollte man sie nicht im Create-evente benutzen.
    Offtopic:
    Konstant ist der Wert trotzdem nicht. :P
    Also ist es trotzdem eine Variable.

    current_time ist wohl das genaueste. Wie WIN schon erwähnt hat dauert es ein bisschen, bis die Variable fps sinkt o. steigt, wenn du jetzt einen Alarm auf zb 5*fps setzt und die Frames in diesem Moment grad auf 20 sind und danach wieder steigen, ist der alarm zu kurz.

    © 2008 by Teamgrill Productions