"Programm funktioniert nicht mehr..." (Meldung nicht anzeigen)

  • GM 8

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

  • "Programm funktioniert nicht mehr..." (Meldung nicht anzeigen)

    Hallo Leute,

    bei meinem aktuellen Projekt wird in einem Step eine Landschaft mit circa 25.000 Polys
    generiert. Also: Model, Colormap, Heightmap...
    Das wird alles in einem Step ausgeführt. Das Programm "funktioniert" daher für
    20 Sekunden "nicht mehr". Wie kann ich nun verhindern, das das Fenster weiß wird und
    diese Meldung angezeigt wird? Das Programm stürtzt dann zwar nicht ab, aber den
    Spieler regt es auf.

    Mfg
    Diesel
  • Erst mal würde ich mir ernsthafte Sorgen machen, wenn mein Programm 25 Sekunden für eine Landschaft mit 25k Polys braucht.
    Zweitens würde ich, wie Henrik es bereits beschreibt, die aufgaben über mehrere Steps verteilen, oder einen Thread einrichten.

    Der nachteil der Verteilung auf Steps ist und bleibt ja, dass die Framerate immer noch recht unkontrolliert ist. Die kann dann auf schnellen Computern 40-60 sein, während andere, langsamere, die auch das Spiel an sich ziehen können, mit 5-10 rumkriechen. Die Möglichkeiten was es visuelle Leckerbissen während des Ladens angeht, ist natürlich begrenzt. Auch ist dies nicht die effizienteste Methode.

    Die zweite Möglichkeit ist das Generieren in einen Thread zu verschieben. Ein Thread ist wie ein zweites Programm im Spiel drin, dass parallel zum eigentlichen Spiel läuft, aber nicht von dem beeinflusst wird. Nachteil ist allerdings, dass es noch keine Version für gm8.1 gibt. Mehr Info dazu hier.

    MfG SDX
  • Das mit dem Thread gefällt mir schon viel besser. Nur eben: Die DLL gibt's nicht für GM 8.1
    Zu den 25 Sekunden: Lmao. Jetzt geht's unter 15 Sekunden und außerdem sind es 50000(Wie bin ich auf 25000 gekommen? ?( ).
    Muss wohl irgendwas im Hintergrund gelaufen sein...

    Ich werd' die Ladezeit in kauf nehmen müssen, da die Colormap(ds_grid) der Schuldige zu sein scheint.
    Kann ich die Abspeichern, also das grid?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Mr. Diesel ()

  • Kann ich die Abspeichern, also das grid?


    Das Grid kannst du natürlich abspeichern. Du musst aber eine zusätzliche Prozessorbelastung in Kauf nehmen, da du das Grid 1 mal durchlaufen musst und jeden erhaltenen Wert (ds_grid_get) in eine Datei speichern musst.
    Wie du das Grid speicherst (als TXT oder BIN File) bleibt letztendlich dir überlassen.

    Zu den Ladezeiten:

    Ohne einer Threading DLL bleibt dir nichts weiteres übrig als die Aktionen in Steps aufzuteilen.
    Mag sein dass es bei swächeren Rechnern zu FPS einbrüchen kommen könnte, jedoch sollte das grundsätzlich kein Problem für das Spiel selber darstellen.
    Bau doch einfach einen Ladebildschirm ein.

    Ich habe schon oft PS2 Spiele gespielt wo man Laggs in den Ladebildschirmen wahrnehmen konnte. > Das ist völlig normal.
    Solange du das also nicht in Realtime laden möchtest, sollte das kein Problem darstellen.

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

  • LEWA schrieb:

    Wie du das Grid speicherst (als TXT oder BIN File) bleibt letztendlich dir überlassen.

    ds_grid_write(id) kann was es das angeht auch wunder bewirken und ist recht schnell, da die iteration nicht mit GML geschieht.

    Außerdem möchte ich noch hinzugügen, dass Grids in den meisten Punkten langsamer als Surfaces sind. Da diese 4 Kanäle a 1byte hat, sollte der Speicher auch ausreichen. Oder, noch smarter, nutzte die Bytes verschieden. Einer, der die Höhe beschreibt, ein anderer, der den Texturtyp beschreibt usw. Nur ein Ideenanreger.

    MfG SDX
  • Joa, ich kenn mich mit dem Grid nicht wirklich aus.
    (Sollte mich vllt. mal damit mehr beschäftigen)
    Die write- und read-funktionen hätte ich ohne deinen Post gar nicht gefunden^^

    Zu den Surfaces: Mit denen habe ich mich genau so viel beschäftigt, wie mit
    Grids -> Gar nicht. Ich bleibe jetzt für's erste beim Grid.