Game total langsam...

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

  • Game total langsam...

    Hallo,

    ich bin gerade an einem neuen Spiel namens Color Buster dran.

    Durch etliche Variablen und ein ewig langen Step-Event im Objekt Game_Controll, wird die Spielfigur zu träge...

    Erst bei erneuter Kollision wird sie für eine zeitlang flüssig, bis Step sein Ende erreicht hat...

    Kann man dem Game_Controll nicht sowas sagen:

    Wenn du deine letzte Aktion ausgeführt hast, dann exit this event?

    Es gibt zwar diesen exit this event, als drop-befehl, aber ich muß es dringend in die gml codes einfügen, sonst funktioniert es nicht.

    Hier die GM6-Beispieldatei:

    Color Buster

    Wäre euch echt dankbar für schnelle Hilfe!
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • RE: Game total langsam...

    Leider hat es das Problem auch nicht gelöst.

    Das Game ist immer noch total langsam. Die Spielfigur kriecht förmlich über den Screen.

    Im ersten Beitrag ist die GM6-Datei.

    Wer Zeit hat, kann sie sich ja mal anschauen.

    Danke
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Nein ich komme nicht aus dem Objekt raus! Auch nicht mit END!

    Ich habe schon versucht in der letzten Zeile des Skriptes mit instance_destroy() und andere varianten.

    Generell will ich ja nur wissen, warum mein Game so lahm geworden ist???

    Liegt das evtl. an zuvielen Anweisungen im STEP?

    Es sind immerhin 6x4 Befehle und Abfragen + 6 x Skriptcode mit jeweils 8-10 Zeilen.
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Jo das Step Event sieht ganz schön Chaotisch aus XD
    btw läuft das spiel bei mir Flüßig ums schneller zu machen Roomspeed erhöhen.

    Hat der GM eigentlich kein ElseIf ?
    Den bei den Abfragen immer If dadurch geht er jedes mal jedes If durch.

    Beispiel:

    If ...
    If...
    If...
    Bei den 3 Überprüft er jedes mal die Bedingung

    If
    else if
    else if
    Wenn hier Bedingung 1 wahr wäre würde er die nächsten 2 überspringen.

    Gibbet sowas net im GM ?
    Face in the wind, we're riding the storm
    We'll stay our course whatever will come
    ~~ Stay (Running) Wild ~~
  • Original von Defmaster
    Jo das Step Event sieht ganz schön Chaotisch aus XD
    btw läuft das spiel bei mir Flüßig ums schneller zu machen Roomspeed erhöhen.

    Hat der GM eigentlich kein ElseIf ?
    Den bei den Abfragen immer If dadurch geht er jedes mal jedes If durch.

    Beispiel:

    If ...
    If...
    If...
    Bei den 3 Überprüft er jedes mal die Bedingung

    If
    else if
    else if
    Wenn hier Bedingung 1 wahr wäre würde er die nächsten 2 überspringen.

    Gibbet sowas net im GM ?


    Sowas gibt es und es ist ja im Skript auch so hinterlegt....

    if variable.was_weiß_ich >= bestimmter.wert
    instance_create(x,y,obj)

    Das kann doch nicht am Roomspeed liegen...

    Wie sieht es denn eigentlich aus, wenn ich alle Step-Anweisungen in ein Skript code und das dann im Step laufen lasse? (Könnte es ja selbst ausprobieren, aber zuviel Arbeit)
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • tze Denkste das hät ich ihm vorgeschlagenen?
    Mit Switch prüft man Variablen auf bestimmte Zahlen also 5 400 oder so. Aber er überprüft ob diese Zahl höher ist deshalb geht hier Switch nicht.
    Face in the wind, we're riding the storm
    We'll stay our course whatever will come
    ~~ Stay (Running) Wild ~~
  • 1.

    Ich könnte ja auch 8 Alarm pro Mauer (wegen 8 Mauersteinen) erstellen,

    Da ich aber 6 Mauern habe, bräuchte ich dazu 48 Alarm oder 6 Game_Controll Objekte mit jeweils wieder 6 Step-Events in denen jeweils 6 Skripte und 8 Abfragen sind.

    Ich wüsste nicht welcher PC das noch schaffen kann.....

    Oder denken wir mal anders:

    Wie würdet ihr das machen mit einer Lichtschranke oder einer Laserbarriere z. B.?

    Die sagen wir mal 250 Pixel hoch ist (sie besteht aus 10 Objekten a 25 Pixel). und sie soll jede sekunde um 25 Pixel automatisch öffnen (egal ob von oben oder von unten). Also in 10 Schritten soll sie komplett entfernt sein.

    Wenn wir nun diese Beispiel anwenden wollen und es nicht destroyen sondern aufbauen wollen, wie geht das?

    2.

    Ein weiteres Problem, welches nichts mit oben zu tun hat:

    Ich werfe von oben Tabletten (von mir aus auch Klodeckel) ab, die der Spieler halt auffangen muß. naja der code sieht dazu folgendermaßen aus:

    tab=floor(random(6))+1;
    execute_string('instance_create(random(room_width),random(100),tab'+string(tab)+')');
    tab1.vspeed=1;
    tab2.vspeed=1;
    tab3.vspeed=1;
    tab4.vspeed=1;
    tab5.vspeed=1;
    tab6.vspeed=1;

    Klappt auch alles wunderbar. Aber die Klotablette soll nicht über den ganzen Bildschirm verteilt werden, sondern nur im Bereich von der room-weite Pixel: 100-350.
    Wenn ich aber oben im X-Random 350 statt room_width eingebe, zählt er ja ab der x-koordinate beginnend mit 0. wenn ich room_width-32 oder +32 mache, dann zählt er ja nur zum letzten wert dazu.

    Kann mir da jemand helfen?
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • eventuell kannst du zumindest dein zweites problem mit diesem code lösen:

    100+random(350)

    also

    execute_string('instance_create(100+random(350),random(100),tab'+string(tab)+')');
    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
  • Original von WIN
    eventuell kannst du zumindest dein zweites problem mit diesem code lösen:

    100+random(350)

    also

    execute_string('instance_create(100+random(350),random(100),tab'+string(tab)+')');



    Hat wunderbar geklappt... Thx WIN


    Frage 2 ist somit beantwortet!

    Naja und Frage 1 habe ich nun anders gelöst. Anstatt jeden Stein einzeln zu zerstören, zerstöre ich mithilfe der alarm-events halt die ganze mauer, und stelle sie dann nach gewisser Zeit wieder auf.

    Ich glaube eine Lösung für Frage 1 zu finden, bedarf einer wirklich guten GML-Kenntnis
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Das mit dem Aufbauen, da machst du 1 control objekt das jede sekunde eine reihe von objekten in einer for-schleife erzeugt und danach die höhe um 25 pixel hochzusetzen.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • EDIT: Habe alle Lösungen gefunden! War gar nicht mal so kompliziert.

    Original von Windapple
    Das mit dem Aufbauen, da machst du 1 control objekt das jede sekunde eine reihe von objekten in einer for-schleife erzeugt und danach die höhe um 25 pixel hochzusetzen.


    habe ich schon versucht

    mit: (so in etwa - weiß ich nicht mehr genau)
    controll-objekt im step-event:

    if global.bau=2
    instance_create(100,25,obj)
    if global.bau=3
    instance_create(100,50,obj)
    usw....
    zum Schluss im Code:
    global.bau=1;


    dann halt noch ein Alarm-Event
    bei 30FPS:

    set alarm[0]=30;
    set global.bau +=1;


    Eine weitere Frage ohne einen neuen Thread zu öffnen:

    Wenn ich so einen Klodeckel mit der Spielerfigur einfange, dann soll sie zerstört werden. Aber nur diese!

    Wenn ich dann mit instance_destroy arbeite, werden aber alle Klodeckel dieser Farbe auf dem Screen gelöscht.

    Wie kann ich nur das so eben berührte Objekt destroyen?
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von magic_hero ()