Map Locations Demo
-
locs = getMapLocationNames() image = loadImage( "Untied Games/Creeper", 0 ) for i = 0 to len( locs ) loop sprites[ i ] = createSprite( ) loc = getMapLocation( locs[ i ] ) setSpriteLocation( sprites[ i ], loc ) setSpriteImage( sprites[ i ], image ) repeat
-
@pianofire cheers i was close i did try thankyou
-
This is great! Thanks
-
Just something that came up with this. You need to give your locations unique names otherwise you will get things appearing in the same location. If you want to have locations with different types you can just add a sequential number on the end e.g. tree01, tree02 etc and rock01, rock02. Then to find the type of a location you can use strBeginsWIth e.g. if strBeginsWith(locs[i], "tree") then
-
@pianofire, @waldron Have you-- or anyone else really-- tried this with the latest patch? I have essentially your exact code:
- One third of the time it works: my sprite is showing up in the game world, at the correct spot.
- One third of the time I get a run-time error "Incorrect type struct for parameter one: expected string" on the "getMapLocation()" call.
- One third of the time Fuze crashes (the Switch's OS-level "quits unexpectedly" error we're all familiar with).
This is the first time I've ever used map locations, so I can't say whether it worked before the patch. I don't think it's a problem with my code: I'm almost verbatim using your above snippet. I'll go take another look to be sure.
Thanks in advance!
-
@Spacemario glad you mentioned it, all my games with this code crashes fuze post patch no error code nothing if i comment out the namemaparea code my program runs or if I leave it in and comment out collidemap it runs so I think there is a problem with namemaparea() and collidemap() running together. I'v had to resort to using collidemaparea instead which sucks as a sprite collides with it and doesn't pass through it.
-
@waldron Fascinating, thanks for bringing this up! We'll let @pianofire chime in, but it sounds like a bug may have been introduced into the latest Fuze patch related to the map-related functions, since we're both experiencing similar issues in two completely different programs.
-
@Spacemario yeah I did mention it but I'm always in 2 minds with issues like this as I'm never sure if it's the way I code or fuze but all my games with this code now crash and I have been experiencing lots of graphical glitches but again not sure if it's down to my code although I haven't had them before the patch.
-
just realized this is getmaplocation where as my problems have been with namemaparea so maybe maps in general and locations have gone a bit pete tong
-
@waldron I bet "under the hood", these different map functions share a lot of the same code-- so there may be some kind of memory or pointer-related bug, which is impacting multiple map functions.
For now, I've gone back to defining all of my actors in a giant array like I did for "Skatey-Cat": I was really hoping to avoid that approach and use map markers this time, but doesn't look like that'll be possible.
Oh well, it was a nice idea anyway :)
-
@Spacemario i'l have a test later maybe the spritecamera map position patch has caused it as was working fine before il create a test program later and share it in hopes there is a workaround or at least the true cause
-
Found the cause ! I had areaNames = getmapareanames() in the main loop which worked before the patch so I'v moved that part outside the loop and now works without crashing
-
I'v tried the sprite placement code but not really used it before so I was unable to test that
-
@waldron When you say "in the main loop" do you mean not inside a function?
-
in my case with the namemapareacode i had
areaNames = getmapareanames()
with the for loop code in the main loop
in my test program iv not put it into a function and it crashes.
if i put theareaNames = getmapareanames()
outside the main loop it runs as expected.
in my other programs the results are 50/50 where i do store that code in a function they either run fine or crash .
do i need to reference these or ? confused as my code hasn't changed but since the patch that piece of code crashes the system. -
@waldron No it definitely shouldn't be crashing. I have raised an issue for this
-
@pianofire thanks been driving me bonkers haha if i comment out the collidemap() it doesn't crash so i think its as spacemario describes above.
-
just one last one with this, after testing the namemaparea() that was causing crashes this also caused crashes with my other programs where they would just crash when i run them at random with some with scary graphical glitches.
so last night i didn't test that piece of code and my other programs didn't crash anymore :) currently using detectmapcollision instead as a workaround. -
@waldron One thing I may resort to is loading every one of my game's maps before the main loop even begins, and populating my actor arrays that way.
It's contrary to the way my "engine" works-- which loads "assets" on-demand when levels are swapped-- but the Switch has so much RAM for the kinds of games we make in Fuze, that holding the entirety of the actors in memory the entire time the game is running should be no big deal.
If I make that change, I'll post here whether or not it works around the crashing.
-
Please could one of share and submit a program that crashes so I can test out a potential fix. Thanks in advance