dop2000's Forum Posts

  • First, you need to use "AJAX On Completed", or at least insert "Wait for previous action to complete" after AJAX request. Your array is empty because of that.

    Tilemap has expressions MapDisplayWidth and MapDisplayHeight which return number of horizontal and vertical tiles.

    And I don't understand why you are saving loopindex("x") and loopindex("y") in the array. If your array is the same size as the tilemap, then you can use its X/Y index for addressing.

    Tilemap.TileAt(X, Y) - tile at X/Y

    Array.at(X, Y) - value for that tile

  • Make the array the same size as your tilemap (width and height). And if you need to store 4 values per tile - set array depth to 4.

    Then, for example, if you need to get values for tile (x:30, y:50), you can use these expressions:

    Array.at(30,50,0)

    Array.at(30,50,1)

    Array.at(30,50,2)

    Array.at(30,50,3)

  • Just tested - an empty 1000x1000x10 array uses ~100MB extra RAM. And it increases save size by about 2.5MB

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • You just match the x and y tile id to the x y position in the array, and use the z slots 0, 1, 2

    If one tile has 10 values and others have 0-2, this means the array will need to be 10 elements deep for just that one tile. It will be a waste of resources. In this case I would store the list of values as text ("1,2,3"), or as a JSON string.

  • I've never seen this. Are you sure that the layers are visible? Do you see them in Debug Mode? Maybe just the objects from these layers migrate to another layout. This can happen if objects are set as global.

  • You only need to pass runtime if it's used inside the function. (for example if the function needs to access C3 variables or C3 objects)

  • No, runtime.callFunction is for calling C3 functions defined in events. So to call just use UUID();

    But you need to pass runtime to it. So UUID(runtime);

    And in your script change the function to function UUID(runtime) {....}

    Look at my second screenshot.

  • There are several ways to do this.

    How many values do you need to store for each tile? Will the set of values be the same for all tiles, or different? For example, water tiles will have "depth" value, ground tiles will have "walk_speed" and "solid" values etc.

    Will there be many tiles without any values? You can think of a Tilemap as a 2D array, which stores tile type (ground, sand, water, rock). So you don't have to store this info in the array.

    Do you need to store the array with all these values in the project, or will it be randomly generated in runtime?

  • Put the file into Scripts folder and change its purpose to "Import for events".

    However, if you need to access runtime in the function, you might have to pass it as a parameter.

  • Does this happen with a new blank project? Can you try a different browser? Maybe clearing browser data will help.

  • Press F12 and check error messages in console log - there may be more information.

  • Or

    Set animation frame to (self.AnimationFrame=0)

  • It depends on the game. For example, if you are using Platform behavior, you can temporarily increase its maximum speed and apply vector X in the direction of the dash. Say, max speed=2000 and vectorX=-2000. Also disable player controls.

    After a small delay enable the controls and restore the max speed.

  • If the object doesn't exist on current layout, you can't access its properties. You need to create it first.

    I misunderstood the question

  • I almost never use breakpoints, because they never work where I need them...

    Browser logging is still the primary debugging technique.