Game schrecklich Speicherhungrig, niedrige Framerate

  • Game schrecklich Speicherhungrig, niedrige Framerate

    Servus!

    Also ich hab die letzten 1 1/2 Monate an nem 2D sidescrolling "Shoot And Run" Game gebastelt, das jetzt soweit fertig ist, dass ich die erste Beta Version veröffentlichen will.

    Allerdings hab ich jetzt vor der Veröffentlichung mal nen ersten Testlauf auf meinem Bruder seinem PC gestartet, und ich war schockiert; das Game lief mit einer beachtlich niedrigen Framerate :ugly:!! Jedoch war es nicht so, dass die Framerate irgendwie abhängig von aktuell sichtbaren/aktiven Objekten gesunken ist (Das nur geringfügig), sondern die war konstant einfach viel zu niedrig!
    Das Spiel benutzt ein Beleuchtungssystem (das nach xiebel). Dieses kann man jedoch per Option deaktivieren, was sich aber auch nur sehr geringfügig positiv auf die Framerate auswirkt, also darin liegt nicht das Grundübel. kp woran das liegt!? HILFE!!!

    Also ich hab nen 2,7 GHZ Rechner, Win XP, Radeon 9000+ irgendwas, aber nur 256 DDR Ram, und bei mir läuft das Spiel ohne jegliche Ruckler, so wie es sein soll. deswegen war ich auch so überrascht, als ich an meinem Bruder seinem PC (der hat knapp 2 GHZ und ne bessere Grafikkarte & mehr Ram als meiner) so schlechte Ergebnisse erhielt.

    Was ich dazu vlt noch sagen sollte: alle Objekte, die auserhalb des momentan sichtbaren Views (also das, was der Spieler sieht) liegen, werden deaktiviert, also daran dürfte es auch nicht liegen.

    Ich hab jetzt mal die Priorität des Games von "Normal" auf "highest" verändert, das hilft zwar aber es ruckelt immernoch. (naja, "ruckeln" ist der falsche Ausdruck, es ist ja KONSTANT eine niedrige Framerate).

    Hat von euch schonmal jemand das Selbe oder Ähnliches erlebt?
    Ich hoffe sehr, mir kann jemand helfen, denn wie gesagt, diese Betaversion ist eigentlich fertig und steht vor ihrer Veröffentlichung, und die schlechten Ergebnisse des ersten Testes nagen *seehr* an meiner Motivation :/.

    Danke Leutz

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

  • Hast du die Objekte etwa so im Step-Event deaktiviert? Denn diesen Fehler hatte ich auch:

    GML-Quellcode

    1. instance_deactivate_object(obj_gegner1)
    2. instance_deactivate_object(obj_gegner2)
    3. instance_deactivate_object(obj_gegner3)
    4. instance_deactivate_object(obj_gegner4)
    5. instance_deactivate_object(obj_gegner5)
    6. instance_deactivate_object(obj_gegner6)
    7. instance_deactivate_object(obj_gegner7)

    Das ist nämlich eher negativ als positiv. Erstell ein Parent für alle Gegner und Objekte, sodass der Code nur noch so aussieht:

    GML-Quellcode

    1. instance_deactivate_object(obj_alles_par)


    Denn der GM muss im jedem Step diese ganze Liste durchgehen und das frisst sehr viel Leistung (wenn dein Code denn so im Step-Event ausschaut ;) )

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

  • hm...nene also in meinem Deaktivierungsskript steht nur

    GML-Quellcode

    1. instance_activate_region(view_xview-350,view_yview-350,view_wview+2*350,view_hview+2*350,1);
    2. instance_deactivate_region(view_xview-350,view_yview-350,view_wview+2*350,view_hview+2*350,0,1);


    Also ich aktiviere alle Instanzen innerhalb, und deaktiviere alle Instanzen außerhalb des sichtbaren Spielfelds.
  • nein, ich glaube nicht dass das Problem in den Instanzen, bzw. deren Anzahl liegt, denn wie bereits gesagt hab ich ja von Anfang an ne KONSTANT niedrige Framerate, egal ob da jetzt viele oder gar keine Objekte am Start sind.(Die Anzahl der aktiven Instanzen wirkt sich nur sehr geringfügig halt noch ZUSÄTZLICH zur eh schon niedrigen Framerate negativ aus.) Das Problem muss irgendwo anders liegen, denke ich. Aber wo?!Mit Preload kann das ja au nix zu tun haben, oder!?

    edit:geht das mit GML irgendwie, dass ich überprüfe, wieviele Objekte im Moment jeden Step einen Step-Event ausführen?

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

  • Original von DukeMS2112
    edit:geht das mit GML irgendwie, dass ich überprüfe, wieviele Objekte im Moment jeden Step einen Step-Event ausführen?


    Nun, eigentlich führt jedes aktive Object, das Actions im Step-Event hat, jeden Step sein Step-Event aus.
    www.glowingorb.de
    „Wenn es im Universum noch irgendwo intelligente Lebewesen gibt, dann kennen sie vielleicht Schach, höchstwahrscheinlich jedoch GO

    (Schachweltmeister Emanuel Lasker)
  • *g* hab schon geahnt dass jetzt so ein Kommentar kommt :)! Klar, nur hab ich 1. zimelich viele aktive Objekte und 2. sind da auch Objekte die nichts an Actions im Stepevent haben, insofern wollte ich wissen ob ich abfragen wieviele Objekte im Moment denn konkret Actions im Stepevent ausführen. Gibts da irgend ne Funktion?

    edit: achja und (um aufs eigentliche Thema zurückzukommen) ich hab grad bei ner Freundin nochmal das Game getestet, hab mal die Midimusik deaktiviert, probeweise am Roomspeed rumgeschreaubt und die Priorität is auf "high" (nicht highest) im Moment, und es ändert sich rein garnichts - läuft einfach beschissen. Wie gesagt, konstant extrem niedrige Framerate - HIIIILLLLFEEEE :headtouch: :headtouch:!!!!! (die hat n 1,3 GHZ Notebook)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von DukeMS2112 ()

  • Du kannst dir ja zumindest alle Instanzen im Debug-Modus anzeigen lassen. Da steht dann zwar nicht, welche Instanz auch konkret Aktionen im Step-Event hat, aber das wirst du schon selber wissen.
    Außerdem würde ich dir empfehlen, das Spiel mindestens noch auf einem dritten Rechner zu testen. Vielleicht hat der Rechner deines Bruders einfach 'ne Macke...
    Einige meiner Spiele:
  • eine etwas umständliche lösung wäre folgende:
    im begin step event sietzt du eine global variable auf 0
    im step event lässt du sie hochzählen (du müstest halt ein funktion/script in alle objecte implemtieren, die anderen code im step event haben), dann kannst du das ganze im debug modus auslesen.

    Eine Frage: Hast du vieliecht viel Code im Draw-Event? Das bremst nämlich aus wie Sau!
    www.glowingorb.de
    „Wenn es im Universum noch irgendwo intelligente Lebewesen gibt, dann kennen sie vielleicht Schach, höchstwahrscheinlich jedoch GO

    (Schachweltmeister Emanuel Lasker)
  • Wahrscheinlich liege ich damit in diesem Fall falsch, aber: Verwendest Du zufällig Partikeleffekte? Denn die sind bei meinem aktuellen Spiel das Leistungsfressendste überhaupt. Je nach Graka läuft's entweder so gut wie perfekt oder miserabel. Und außerdem empfehle ich natürlich auch den Debugmode um Überblick über die Menge der Instanzen zu halten, denn wenn die endlos wächst, dann ist rumgestocke vorprogrammiert. Und letzten Endes gibt's noch Probleme bei zu vielen Stepevents und vor allem bei Fehlerhaften Schleifen. Da kann ein 4Ghz PC eventuell nur müde lachen, während ein 2Ghz PC völlig überlastet ist. Das ist soweit das einzige was mir einfällt.
  • Wenn bei mir im Hintergrund Programme mitlaufen, habe ich auch
    schon geruckelte Spiele erlebt. Da hilft meistens die anderen solange
    zu beenden, dann gehts wieder ;)
    hetotecs Winter-Homepage - klick hier:hetotec.de


    Hier auf landet ihr auf meiner Spiele-Vorstellungs-Seite ^^
    Noch keinen Stern geschenkt bekommen? Hol dir deinen eigenen Stern
    hier yoyogames.com/games/show/30678
    Am Weihnachtsbaum Lichter anzünden? Mit 9 Musik-Titeln zur Auswahl oder eigene Musik laden
    hier yoyogames.com/games/show/20074