Laden

  • GM 8

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

  • Hey Leute.
    Also mein 3D Spiel, da ist das Doof mit dem laden.
    Am Anfang sieht man ja Loading, und das geht ganz schnell, nur dass es bei Loading Sounds immer lange dauert, und danach, öffnet sich das Fenster, aber das bleibt dann erstmal 3 Sekunden Schwarz...
    Woran kann das liegen, und wieso wird das, was da gemacht wird, nicht auch noch beim normalen Laden gemacht werden ?
    Liegt es vielleicht daran, dass ich die Texturen und Modelle manuell im Script beim Create Event eines Objekts schreibe ?
    Oder woran liegt das ?

    Danke für eure Antworten :=)
  • BDG schrieb:

    Liegt es vielleicht daran, dass ich die Texturen und Modelle manuell im Script beim Create Event eines Objekts schreibe ?
    Ziemlich sicher liegt das daran. Denn beim Laden wird kein Stück GML code ausgeführt (und auch kein Event). Dies geschieht erst nachdem das Fenster erschienen ist.

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

    Das währe ne Idee.. Sähe dann aber doof aus, mit 2 ladebalken, nacheinander...
    Seid ihr euch sicher, dass es keine andere Möglichkeit gibt ?
    Die anderen auch ?

    Du kannst den ersten Ladebalken deaktivieren.. Schau dir die globalen Einstellungen deines Spiels an.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • tue dir und allen anderen bitte einen gefallen...schaue dir die programme an mit denen du arbeitest!

    es gibt unglaublich viele tutorials, und google ist GOTT ... und gott weiss ALLES!

    um dich auf eine fährte zu setzen, schau dir mal die "globalen" einstellungen an. und bitte frage nicht wo die sind...


    zeig bereitschaft zum lernen, dann würde der threat nicht nötig sein...


    mfg
  • Ich hab ganze lange gegooglet...
    Nch sowas wie "Game Maker dont show window", "Game Maker fenster verstecken", "Game Maker Fenster ausblenden" und ganz vielen anderen Sachen !

    EDIT: Ich habe jetzt eine Punkt gefunden, unter den Game Settings...
    Allerdings gilt das ja jetzt für alle Räume...
    Ich erzähl nochmal kurz den Plan : Ich wollte eine Raum machen, der genauso aussieht, wie der Ladebildschirm, und da dann alles laden lassen, und dann in den richtigen Spiel raum erst gehen.. Aber dazu muss beim Laderaum ja der Rahmen weg, und beim Spiel Raum sollte der eigentlich bleiben...
  • Wenn du wirklich die simpelste und "doofste" Lösung verwenden willst, setzt den Alpha des Lade-Schirms auf 0. Dann ist dieser nicht mehr sichtbar und du kannst einfach im GM Fesnter einen einzigen LAdebalken drawen. Es muss ja nicht unbedingt ein rahmenloses extra-Fenster sein..

    EDIT: Du müsstest aber dannd as machen was Famous erwähnt hat und alle internen Ressourcen so gering wie möglich halten da sonst der Spieler beim Starten erstmal lange warten muss ohne irgendeinen Lade-balken zu sehen...

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • mal eine gegenfrage, ist es nicht möglich nicht darauf zu bestehen dass immer "laden" steht? ich kenne einige games die erstmal nach dem laden die scene "aufbauen". grade mit älteren rechnern. was stören 3 sec oder 20 sec? es gibt games da denkste die sind abgestürzt, naja und irgendwann sieht man auch was =) vllt solltest du dich nicht auf die funktion "designe das laden des spiels" konzentrieren. wichtig ist letztlich was danach kommt.


    mfg
  • blubberkopp schrieb:

    mal eine gegenfrage, ist es nicht möglich nicht darauf zu bestehen dass immer "laden" steht? ich kenne einige games die erstmal nach dem laden die scene "aufbauen". grade mit älteren rechnern. was stören 3 sec oder 20 sec? es gibt games da denkste die sind abgestürzt, naja und irgendwann sieht man auch was =) vllt solltest du dich nicht auf die funktion "designe das laden des spiels" konzentrieren. wichtig ist letztlich was danach kommt.

    mfg
    Recht hast du. Allerdings verleitet einen der Gamer-Instinkt von heute in solchen Fällen dann wie wild auf die Escape-Taste einzudreschen bzw. falls sich garkein Fenster öffnet, die Maus an ihr Doppelklick-Limit zu bringen.. usw... Ist leider so :D

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

    Mit der angehängten Erweiterung kannst du den Rahmen+Titelleiste entfernen und wieder hinzufügen.

    Toll. Leider gibt es dafür allerdings schon eine eingebaute Funktion, window_set_showborder(true/false).

    - Joex3
  • Oke... Habs soweit versucht.
    Aber da währe noch ein Problem :
    Ich hab jetzt von allen 3D Objekten den Code im Create Event rausgenommen, also das Laden der texturen und Modelle,
    und den in ein Loading objekt gepackt, welches bei meinem Loading Bildschirm ausgeführt wird...
    So Also anstatt in obj_player sowas zu schreiben : tex = background_get_texture(tex_player);
    Hab ich jetzt in obj_loading sowas geschrieben : obj_player.tex = background_get_texture(tex_player);
    Allerdings sagt er mir jetzt bei obj_player dass er nicht weis was tex ist... Woran kann das liegen ?
    Hier der Script aus derm Loading object :

    ... blablabla ganz viel laden...


    obj_player.tex = background_get_texture(tex_player);

    //Und am Ende zum nächsten Raum gehen, wenn er fertig ist...
    room_goto_next();
  • Ganz einfach:
    Du versuchst in einem Raum, der nur zum laden vorgesehen ist dem obj_player die textur zuzuweisen.
    ABER:
    Der player existiert in dem Raum nicht. Somit wird keiner instanz irgnedein wert übergeben da ja keine existent ist.
    Nebenbei: Wenn du den Raum wechselst werden sowieso alle Variablen verworfen da du die sachen die in einem Raum geladen wurden nach dem wechsel in einen anderen Raum nicht mehr
    verwenden kannst. Sprich: die Variablen sind nur im erstellten Raum nutzbar.

    Was du aber machen kannst, ist die Variablen "global" zu definieren.
    Sprich:
    schreib vor einer variable "global."
    als beispiel:

    GML-Quellcode

    1. global.spieler_tex = background_get_texture(tex_player);


    globale variablen sind raumübergreifend. Somit kannst du sie nach dem erstellen in jedem Raum nutzen.
    Das einzige was du nun machen musst ist diese globale Variable dem erstellten Spieler im anderen raum zu übergeben.
    Beispiel i mCreate event des Spielers:

    GML-Quellcode

    1. mytexture = global.spieler_tex;


    mytexture ist die textur des spielers die dann beim zeichnen des Modells verwendet wird.
  • Super! Danke :)
    Aber das nächste Problem ist natürlich schon wieder in der Produktion...
    Nämlich ist jetzt folgendes dramatisches Geschehen eingetreten.. (Das war vorher auch schon, ich habs erst jetzt erkannt...)
    Bei meinem Laden. Wenn ich vom normalen Ladebildschirm zum Laderaum wechesle bleibt der Screen kurz schwarz, und dann kommt schon der erste richtige Raum...
    Also während er die Texturen und Modelle lädt, ist der Screen schwarz, und obwohl er da eigentlich das Ladebild anzeigen sollte !

    Wenn ich im Script wo das geladen wird, ein sleep(3000) reinsetze, ist er auch 3 Sekunden länger schwarz, obwohl er doch mein Ladebild anzeigen sollte...
    Woran liegt das ?
  • Könnte es sein dass du zum laden der Texturen dasselbe Objekt benutzt wie beim zeichnen des Ladebildschirmes?
    Der Punkt ist:
    Das Create event wird VOR dem draw-event ausgeführt. Sprich:
    Wenn du im Draw-Event den Ladebidschirm zeichnen möchtest, so kommt dieser nicht als erstes zum zug da das Create event vorrang hat und somit als erstes die Texturen geladen werden.
    Erst nach dem ladne wird dieser angezeigt.

    Das Problem könntest du beheben indem du zeichnest befor das laden geschieht.
    Ich bin mir jetzt nicht sicher ob das funktionieren würde, aber am Anfang des ladens des games kannst du versuchen
    ein Sprite zu zeichnen (z.B: draw_sprite im create event) und gleich dannach "screen_refresh()" aufzurufen.