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:
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.
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
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.
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.
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.
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:
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.
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.
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!
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.