SDK 1.13.1b1 - please test!

Okay, I've got builds for y'all to test, hopefully fixing the game-breaking regressions that we let slip through. I don't know how our actual release system works so I've put them up here:

This should fix the following issues:

  • table.indexOfElement() can't search for userdata types
  • playdate->lua->callFunction() now throws an error after the call
  • x/y/width/height in sprite storage table is overriding real values, leading to missing or wrong collision rects and offset sprites
  • setting images in sprite subclass init doesn't work like it used to
  • integer overflow in sequence:goToStep()

Please let me know if this doesn't address your issues, or if you have other bugs not yet addressed that are new in 1.13.0. Thanks, and we're very sorry for the trouble. We'll work on our QA process to get more community involvement in the future.

6 Likes

Stacky hero as well as the maze game indeed seems fixed running it in the simulator of the new sdk

3 Likes

Just tried out a build on windows using a Noble Engine game and it seems to be working now. Thank you for your quick work!

1 Like

The simulator screen stays blank and this is what I see in the console.

invalid bitmap size: 0 x 240
stack traceback:
	[C]: in field 'new'
	?: in field 'init'
	?: in field 'Message'
	?: in field 'init'
	?: in field 'Game'
	?: in main chunk

The sprite class here tries to create a new image by passing self.width. setImage has not been called at this point. The same build works on the device with 1.13

I can confirm that table.indexOfElement() / userdata issue is fixed in beta, too. Thanks for such a speedy fix!

(I tested both the 1.12.3 build and beta build and nothing else seems to be broken in Stars.)

1 Like

"playdate->lua->callFunction()" seems to be working correctly. Thanks for your quick fix!

1 Like

It's hard to say what's going on there without seeing the code. It looks like you're creating a new blank image using computed bounds but the width is somehow coming up zero. This is on the 1.13.1b1 build, and it doesn't do that on 1.13.0, right? I'm not having any luck thinking of a scenario where you'd be getting width = 0 there but wouldn't have on 1.13.0.

I think it’s the same in the simulator for 1.13.0 and the beta but for some reason it works on the device with 1.13.0.

It’s tricky to not lose track when testing 2 games with 3 SDKs and 2 devices.

Is there anyway to force my Playdate to update to test this build on actual hardware? I've looked around but can't seem to find anything and I think my device is still on 1.12.3.

1 Like

There's no way to do it automatically, but if you DM me your serial number I can put a build on Memfault (the service we use that manages updates and crash reports) and put you into a test cohort. After that, 1.13.1b1 will show up when you check for updates.

1 Like
  • integer overflow in sequence:goToStep()

Confirmed FIXED

1 Like

The behavior of overlappingSprites is the same for me in 1.13.0 (simulator and device) and 1.13.1b (simulator).

I’ve tested this many more times now to be 100% sure. I fixed all cases of using width but one and added some logging to report the width after setting it. The relevant lines look like this now:

self.width = LEVEL_WIDTH * TILE_SIZE - 16
print("self.width in Message is", self.width)
self.image = gfx.image.new(self.width, 240, gfx.kColorClear)

In the 1.13.0 simulator the game loads fine and I get this in the console:

?:-1: sprite properties x, y, xy, width, and height are read-only (for now)
self.width in Message is	200

In the 1.13.1b simulator the screen is blank and I get this in the console.

?:-1: sprite properties x, y, xy, width, and height are read-only (for now)
self.width in Message is	0.0
invalid bitmap size: 0 x 240
stack traceback:
	[C]: in field 'new'
	?: in field 'init'
	?: in field 'Message'
	?: in field 'init'
	?: in field 'Game'
	?: in main chunk

So in 1.13.0 it says width is readonly but apparently it still takes the value and creates the image with width 200. In 1.13.1b it ignores the value, stays at 0 and the game crashes when trying to create an image with width 0.

PS: I’m happy to give you access to the source code.

Here's another beta for y'all!

I believe this one fixes the sprite x/y/width/height setting and getting work the same as it did in 1.12.3. I still don't know exactly what I did wrong in 1.13.0 but everything I've tested so far is working correctly. :sweat_smile:

It also adds a few fixes for some regressions in the Linux/Windows simulator:

  • Upload game to device isn't launching the correct path
  • Breakpoints aren't working as expected
  • Possible crash reloading the simulator

If you want to test on the hardware, DM me your serial number and I'll add you to a test cohort on memfault!

7 Likes

Might this be a good time to consider options for focused testing of system updates prior to deploying them to the general public?

1 Like

just fyi, I re-uploaded these with the correct version number in the simulators :sweat_smile:

2 Likes

All regressions I’m aware of are fixed. Thanks a lot!

1 Like

We did quite a lot of testing, internally and externally — these issues obviously didn't show up/weren't reported. We'll have to figure out how to get even broader coverage in the future.

We also selectively deployed to ~10% of Playdate users, to try and catch problems before we deployed to the whole user base. That approach served us well in this case — I feel more secure about deploying the upcoming 1.13.1 to everybody.

3 Likes

Tested quickly with the Nim bindings, everything seems to be working in 1.13.1-beta2 using the example project.

Nice to see the sprite origin "bug" of moveWithCollisions etc. has been fixed!

2 Likes