Ab wie vielen Variablen bekommt der GM "probleme"

  • GM 8
  • Ab wie vielen Variablen bekommt der GM "probleme"

    Hallo gm-d,
    Ich mache grad ein Spiel das warscheinlich über 5000 verschiedene Werte besitzt (Variablen, grids, lists und arrays).
    Ich hab zwar noch nicht so viele Werte aber wenn ich mit dem proggen weiter bin schon.
    Ich habe angst dass das Spiel dann bei 5000 Werten ins stocken kommt und deswegen wollte ich euch fragen wie viel der GM aushält.
    Mit Werten meine ich Variablen, Grids, Lists und Arrays. Bei Grids, Lists und Arrays meine ich natürlich jede einzelnde Zelle also ein Grid 10*3 hat 30 Werte.

    Ist es egal wie viel Werte man hat und gibt das nur Bytes dazu(Vom Spiel) oder macht das bei 5000 Werten viel aus?
    Wichtig: Die Variablen werden dann auch gespeichert! (per game_save funktion oder durch textarray weiß ich noch nicht)
    Twitter: @BytingGames
  • Also eines meiner Projekte benutzt 14 verschiedene Grids.
    Eines ist 2048x2048 und die anderen 512x512. Der Arbeitsspeicher ist
    bei circa 450-500 MB. Selbst auf meinem kleinen Laptop macht das Spiel
    keine Anstalten zu laggen. Ich wüsste auch nicht warum ein Spiel aufgrund
    der Inhalte im Arbeitsspeicher laggen sollte. (Du solltest golbale Variablen vermeiden,
    weil die etwas mehr Arbeitsspeicher reservieren)

    Wenn es 5000 Werte sind, die sich nicht jeden Step verändern, dann sollte es keine Probleme geben.
    Beim Abspeichern würde ich dir das abspeichern als Textdatei nahe legen, da ich persönlich
    das Gefühl habe, mehr Kontrolle über alles zu haben.

    Wenn der Arbeitsspeicher knapp wird, kannst du die CleanMemory DLL benutzen, um
    den verbrauchten Arbeitsspeicher zu reduzieren.
    (Das ist keine Empfehlung von mir.)

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

  • In solch einem Fall ist es wirklich "doof" (was untertrieben ist) dass der GM nicht mehr Datentypen als real und strings kennt. Beide sind ja nicht grade speicherfreundlich.
    Trotzdem kann man mit 5000 und wahrscheinlich auch mit mehr als dem Zehnfachen an Variablen noch auf den allermeisten Geräten problemlos arbeiten.

    Allerdings... bist du dir ganz sicher dass so viele Werte nötig sind? Denn nur weil man es machen kann, heisst das noch lange nicht dass es wirklich gut ist das zu machen. Ist auf jedenfall nicht hilfreich falls man sich irgendwann mal als professioneller Coder bezeichnen will :D
    Was aber nicht heissen soll dass es nicht oftmals nötig ist.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Erst recht "doof" ist das er nur Double und String kennt. Double braucht man nur für sehr präzise Genauigkeit was beim Game Maker wohl kaum der Fall ist. Dazu dass selbst Variablen die keine Fließkommastellen brauchen diesen Typ verwenden.

    Du kannst soviel Daten verwenden bis der Speicher für den Prozess nicht mehr zulässt was du wohl eher mit Ressourcen erreichen würdest. Allerdings weiß ich nicht wie der Interpreter arbeitet, was aber tortzdem nicht sonderlich relevant ist.


    Eine Variable reserviert also einen Speicher von 8 Bytes (da Double) und ein String je nach länge. Bei 5000 real Variablen wärst du also bei 40 KB.


    Edit: Statt der ganzen Multiplatform Geschichte wär es mir lieber gewesen sie hätten mehr Typen verfügbar gemacht. Und dazu noch ein paar Speicherfunktionen und Adressen. ^^
  • famous schrieb:


    Edit: Statt der ganzen Multiplatform Geschichte wär es mir lieber gewesen sie hätten mehr Typen verfügbar gemacht. Und dazu noch ein paar Speicherfunktionen und Adressen. ^^

    Naa.. ein oder zwei Typen wären genug. Vergiss nicht dass beim Game Maker immer im Vordergrund steht und stand, dass man leicht damit anfangen können soll. Da kommt die Typenunabhängigkeit sehr gelegen. Wenn du Adressen und etc. willst geh doch gleich zu C++.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Ok dann brauch ich also keine Sorgen zu haben, die dll werde ich dann wol noch lange nicht brauchen.
    Das wird n Rollenspiel, da brauch ich halt so viel Werte und das es nur 2 Datentypen gibt find ich auch dumm.
    Könnte man nicht einfach mehr Datentypen mit einer dll machen?
    Aber das wär warscheinlich ziemlich aufwendig was warscheinlich eh nicht geht.
    Twitter: @BytingGames
  • DragonGamer schrieb:

    famous schrieb:


    Edit: Statt der ganzen Multiplatform Geschichte wär es mir lieber gewesen sie hätten mehr Typen verfügbar gemacht. Und dazu noch ein paar Speicherfunktionen und Adressen. ^^

    Naa.. ein oder zwei Typen wären genug. Vergiss nicht dass beim Game Maker immer im Vordergrund steht und stand, dass man leicht damit anfangen können soll. Da kommt die Typenunabhängigkeit sehr gelegen. Wenn du Adressen und etc. willst geh doch gleich zu C++.
    Das würde die Einfachheit nicht drücken. Schließlich muss man einer Variable nicht zwangsläufig einen Typ zuweisen. Wenn ich Adressen beim Game Maker will wieso sollte ich C++ verwenden. Klar könnte ich eine andere Sprache nehmen aber mir geht es um die Kommunikation zwischen einer DLL und dem Game Maker, welche dank get_function_address() zumindest mal ein kleinen Schritt nach vorn gemacht hat. Von GMAPI will ich nichts hören, das ist unstabiles gepfusche.
  • @Famous: Ich meinte du solltest ganz auf C++ oder einer anderen Sprache umsteigen.
    Aber du hast recht. Theoretisch sollte es die Möglichkeit geben auch weiterhin nur strings und reals(doubles) zu verwenden oder gar im simple-mode (wer hat den eigentlich jemals in seiner Lernlaufbahn benutzt? o-o) die anderen Typen ganz auszublenden...

    @iks deh
    Das mit eienr DLL wäre nicht sonderlich sinnvoll da dies bedeuten würde jedes mal beim Schreiben oder Lesen einer Variablen, einen Aufruf an die DLL machen zu müssen :/ Das entlastet (wenn überhaupt) den Speicher ein winziges bisschen aber um den Preis von enormen Zeitverbrauch.

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