1. Hey! Guest! The 35th GMC Jam will take place between November 28th, 12:00 UTC - December 2nd, 12:00 UTC. Why not join in! Click here to find out more!
    Dismiss Notice

GMS 2 Missing layers in room on load

Discussion in 'Programming' started by IchicoreGames, Nov 9, 2019 at 9:43 AM.

Tags:
  1. IchicoreGames

    IchicoreGames Member

    Joined:
    Saturday
    Posts:
    6
    Hey guys! This is my first post! I have got a GMS licence few weeks ago because i think is easy and nice to develop retro games, so i love it! But i'm having issues recently! I have read ALL my codes and everything is fine and i suspected about layers missing on load randomly! Look, i got room calls level_1,level_2 and so on for my mission worlds, OK! But my main characters starts to float up and this is beacuse thhe gravity script, and it is ok because when every thing is OK my character stands on ground perfectly! But when bug happens my character starts float up as i mentioned!

    Well, i wrote and script on create event of my camera follow object to check if layers were created, in this case, my solid tiles and platform tiles layers, i wrote something like this in pseudocoding

    layersfound = false
    while(!layersfound){
    if(layer1 && layer2){
    layersfound=true;​
    }
    //this push my program stacks here if layers i need never were created! when bug has not happened this //just find the layers and go out this while loop and game keep working fine, but when bug happens, the //script stacks in this loop confirming that i was right, layers are missing on room load!!​
    }

    I hope you can understand my english so badly! xD hehehehe

    Have a great development boys!!!
     
  2. Nocturne

    Nocturne Friendly Tyrant Forum Staff Admin

    Joined:
    Apr 13, 2016
    Posts:
    6,960
    We need to see the ACTUAL code... ;)
     
  3. IchicoreGames

    IchicoreGames Member

    Joined:
    Saturday
    Posts:
    6
    no coding affecting this! i have not made any code to manage layers, just reading them, in my mission rooms i got two layers, 1 SolidTiles (Solid places that cannot be passed throught) - 2 PlatformTiles (ground bars than can be passed throught)

    i got 3 levels in my demo, and sometimes in level 1, 2 or 3 (randomly) these layers disappear, i thought layers Solid and PlatformTiles had not been created in these cases, so i wrote a code to check if layers exists when this bug happen and i got positive confirmation! Bug happens (player floating up) because layers (Solid and PlatformTiles) were not created! Reason?? I don't have idea why! Because sometimes my game runs well and meh! it happened again! (when room is loaded)

    Why a room can load randomly delete certain layers? Any memory, cache reading problem?
     
  4. Nocturne

    Nocturne Friendly Tyrant Forum Staff Admin

    Joined:
    Apr 13, 2016
    Posts:
    6,960
    Okay.... well, in my experience layers don't generally "just disappear" and if that was the case then many more people would be posting with the issue... which means I have to ask:

    Do you have anything in your game that could be removing the layers?
    Have you tried cleaning the compiler cache before running (a stale cache can often cause weird errors like this)?
    Is it only tile layers that are affected by this?

    Also, as a check, a better code would be something like this:

    Code:
    var _layer = layer_get_all();
    for (var i = 0; i < array_length_1d(_layer); ++i;)
    {
    show_debug_message("Layer " + layer_get_name(_layer[i]) + " exists!!!!");
    var _element = layer_get_all_elements(_layer[i])
    for (j = 0; j < array_length_1d(_element); ++j;)
        {
        switch (layer_get_element_type(_element[j]))
            {
            case layerelementtype_sprite: show_debug_message(">>>>> layer has sprite element");
            case layerelementtype_background: show_debug_message(">>>>> layer has background element");
            case layerelementtype_instance: show_debug_message(">>>>> layer has instance element");
            case layerelementtype_tilemap: show_debug_message(">>>>> layer has tilemap element");
            }
        }
    }
    This won't lock up the computer in an infinite loop and will accurately show the names of the layers in your room as well the elements that are on each layer, which should help you debug the issue.
     
  5. IchicoreGames

    IchicoreGames Member

    Joined:
    Saturday
    Posts:
    6
    e
    excellent!!! i was thinking about to do this but i didn't know nothing about layerelementtype_ , so i think this can help me a lot!! i will run this code right now and responde you back ASAP! TY
     
  6. IchicoreGames

    IchicoreGames Member

    Joined:
    Saturday
    Posts:
    6
    Code:
    //---------------------------------------------------------------------------------------------
    ======STACKING TIME FOR LAYERS===========8:23:46 Game 1st attemp, everything is fine
    //---------------------------------------------------------------------------------------------
    Layer PlatformTiles exists!!!! //<--tiles for Platforms
    >>>>> layer has tilemap element
    Layer Instances exists!!!!
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer SolidTiles exists!!!! //<--tiles for Solid
    >>>>> layer has tilemap element
    Layer Players exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer ScreenInter exists!!!!
    Layer camera_mover exists!!!!
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer CameraZones exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer RoomEnemies exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer RingsYCosas exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer RoomThings exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer BombillasYAdornos exists!!!!
    >>>>> layer has tilemap element
    Layer WorldDesign exists!!!!
    >>>>> layer has tilemap element
    Layer WallsBackground exists!!!!
    >>>>> layer has tilemap element
    Layer ObjetosEntreMundoYFondo exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer Background exists!!!!
    >>>>> layer has background element
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer CloudsBg exists!!!!
    >>>>> layer has background element
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    //---------------------------------------------------------------------------------------------
    ======STACKING TIME FOR LAYERS===========8:23:55 Game 2nd attemp, everything is fine
    //---------------------------------------------------------------------------------------------
    Layer PlatformTiles exists!!!!
    >>>>> layer has tilemap element
    Layer SolidTiles exists!!!!
    >>>>> layer has tilemap element
    Layer Players exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer ScreenInter exists!!!!
    Layer camera_mover exists!!!!
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer CameraZones exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer RoomEnemies exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer RingsYCosas exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer RoomThings exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer BombillasYAdornos exists!!!!
    >>>>> layer has tilemap element
    Layer WorldDesign exists!!!!
    >>>>> layer has tilemap element
    Layer WallsBackground exists!!!!
    >>>>> layer has tilemap element
    Layer ObjetosEntreMundoYFondo exists!!!!
    (written a lot of times)
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer Background exists!!!!
    >>>>> layer has background element
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer CloudsBg exists!!!!
    >>>>> layer has background element
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    //---------------------------------------------------------------------------------------------
    ======STACKING TIME FOR LAYERS===========8:24:25 But... a lot of layers don't exists anymore :S
    //---------------------------------------------------------------------------------------------
    Layer camera_mover exists!!!!
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    Layer Background exists!!!!
    >>>>> layer has background element
    >>>>> layer has instance element
    >>>>> layer has tilemap element
    (written a loooooooooooooooooooooooot of times)
    tilemap_get_at_pixel() - couldn't find specified tilemap (more than 50 lines of this)
    layer_get_depth() - layer not found in current room (11 lines of this)
    
    this is my report using the code you gave me!!

    SO! As i explaind before, layers are disappearing! believe it or not!

    See, i got this bug before use deleting layers functions, the ===== STACKING line is written three times and every single time my camera follower object runs end_room event
    where i wrote layer deleting scripts, why?? because i got this bug before and i thought my Solid and PlatformTiles were not released at all, and i wrote the code to try when i used room_goto these layers could been loaded again!! But this bugs is persistent, and as you can se, the same code in camera follower runs once and once again and if this script was the problem, the problem should be come in first attemp running! but it doesn't! which means that is not a script problem, is a GM memory or cache problem
     
  7. IchicoreGames

    IchicoreGames Member

    Joined:
    Saturday
    Posts:
    6
    i have created a package and import it in other project but it doesn't work! T.T
     
  8. IchicoreGames

    IchicoreGames Member

    Joined:
    Saturday
    Posts:
    6
    Hello back, what is this function for??? layer_set_target_room(room); ???? xD i think this function was messing my game up because i don't know what is for clearly! So, i decide to comment those lines and test, and everything is running fine! i will give a try to my whole game and i will tell you how it came!
     
  9. Nocturne

    Nocturne Friendly Tyrant Forum Staff Admin

    Joined:
    Apr 13, 2016
    Posts:
    6,960
    IchicoreGames likes this.

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice