dop2000's Forum Posts

  • Open project.c3proj in Notepad, check which version it was saved with. For example:

    "savedWithRelease": 36802

    This means r268.02

    Open the project in that version. Update layout name, save, then try to open with the new release.

  • I don't think it's a bug. Physics collision mask is not the same as collision polygon. Physics mask is only used in physics calculations, while the original polygon can still be used for everything else (non-physics collisions, drag and drop, pathfinding, line of sight etc.)

  • Looks like the layout name starts with a space - " Playership Start Scren Layout".

    Follow these instructions to fix it:

    construct.net/en/tutorials/fix-open-project-errors-due-3139

  • There are also plenty of tutorials and official examples you can study.

  • You do not have permission to view this post

  • On board controller works as expected unless you attach a Bluetooth controller it seems. I need to reboot the deck for them to work again.

    Yeah, I remember having the same issues with external controllers. And our players reported them too.

    But today I tested our game with PS4 bluetooth controller and it works perfectly fine on Steam Deck. I tried switching back to Steam Deck controller and it too works fine, I didn't even have to disconnect the PS4 one. I don't know what has changed...

  • Check the browser log. It may mention the object or file with an invalid name.

  • Press F12 and check console log.

  • Then put all data you need to save into a text variable. Then use "Browser Download" action as in my example to download it as a file to disk.

    In a desktop export you can use NWJS or FileSystem plugins to write data to a file, instead of downloading.

  • Do you need to save the entire game state, or only selected data?

    Here is how you save the entire game:

    dropbox.com/scl/fi/1oiv92mq6eu25afxv4sw2/SaveLoadToDisk_Browser.c3p

  • It would probably be easier to make a small level editor project. You can use your 40K sprites in it to build a map (because the performance doesn't matter). Use "For each TileSprite" to automatically convert them to a tilemap, and copy their values to an array.

    Then export Tilemap.TilesJSON and Array.AsJSON in the editor, and import these strings to your main game. Then all you'll have to do is load them into the tilemap and array.

  • 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.