Playmaker: a whimsical creative space for Playdate

Of course. When I saw Playmaker in the first Playdate Update (its been almost a year ALREADY?!) I immediately started jumping up and down wanting to play with it. It will be a long while before I have a Playdate in my hands, but the Simulator is a very nice alternative for the time being. :smiley:

Whenever you have new updates to share, or a build to release, preview, beta, super hyper mega pre-alpha, whatever... I will be waiting. :slight_smile:

2 Likes

Been reworking the UI across Playmaker to implement each control has a sprite.

Performance in Playmaker had been great up until I used the Mirror app. Mirror of course mirrors the Playdate's display and audio and control states to desktop for streaming and recording. For best performance while mirroring, it appears to be critical that you update the display only where necessary. I mean, it's obvious and frankly I had this feeling my redrawing the display every frame was going to catch up with me even though I had been seeing 50fps up until Mirror.

So, work continues on moving Playmaker's UI to sprites. Beyond getting some display update management for free, I also find that my code is better organized as sprites.

Here's nearly the finished rewrite of what was previously a fairly buggy color picker for Paint in Playmaker. It now works with the cursor system I built too (also a sprite :slight_smile:).

playmaker-colorpicker-new

5 Likes

Dude, I am loving this project! Can't wait for a public beta :smiley:

2 Likes

I absolutely cannot wait for Playmaker. Definitely in my top 10 most anticipated Playdate programs. I remember we even talked about it a good bit in a 1-Bit Wonders podcast episode awhile back.
Loving the devlog!

2 Likes

While I always adored the letters splashing into the water, this still looks better than I could have asked for. I'm even more excited to play around with this!

1 Like

I was following this one on the Discord for a while and excited to see how far its come. I just got my Playdate so will be stoked to check it out when you are ready to share.

1 Like

Working a bit on Playmaker's cursor management: free movement (player controlled) vs automatic movement (focused on and using a control). Various properties of the cursor are stack based and I borrowed the pushContext/popContext method names from other parts of the SDK. So when, say, a control uses pushContext, it can then modify the cursor position, disable free movement, etc., all of which will be restored when focus shifts to another control (which you do by pressing the B button).

So far this API feels pretty intuitive to work with.

However, Plan B will be to namespace all property adjustments if I find I want more than one control changing cursor properties at the same time.

I've gone back and forth on whether I should have a cursor in a d-pad controlled UI or not, as I've generally found them to be weird to use in practice. But for whatever reason I'm still pushing on this as I like the visual affordance the cursor provides as to what you are currently controlling/selecting in the UI. Hopefully this is not in vain. :stuck_out_tongue:

playmaker-cursor-management

2 Likes

It's a very cool software on the Playdate. I love it. :sunglasses: :heart:

reminds me of Mario Paint kind of.

@dustin People will buy the Playdate because of this software. It's very cool. as said it looks like those paint software for the Nintendo DSi or 3DS or like you said Mario Paint. Playmaker is the program to make Playdate to be the next DSi.

1 Like

Reimplementing the lost cursor indicator today as a sprite. Found it a bit tricky to orgnaize the management for this bit of UI, but I'm fairly happy with where it landed.

Originally I had this implemented as a simple ray cast from the center of screen. Though elegant, the placement felt wrong. I found I expected the indicator to point to the cursor along the x-axis if it is outside the screen above or below, and to where the cursor is along the y-axis if it is outside the screen to the left or right. Lastly there is the literal corner case where the cursor is outside the bounds to the left and above, right and above, left and below, or right and below. In these cases, the indicator simply points to the correct corner.

It feels easy enough to not only recover a lost cursor now, but also I can now draw outside the bounds of the screen which allows for my drawings easily bleed off the edge of the canvas.

playmaker-cursor-lost-indicator

2 Likes

Playmaker for the Playdate! Woohoo! :star_struck: Can you add a Share your Drawing with Friends feature on Playmaker. Could you also add a Animate feature so you can make animations on Playmaker, Oh what do you already have that feature, not the first one I talked about.

Both list controls in Playmaker are used across the different spaces. It took some effort but they both support wrapping in both directions, even when there are fewer items in the lists to fill the space the list consumes. They are now both efficient sprites as well that only redraw as needed. Plus, the animations are quick and cancellable.

playmaker-wrapping-lists

8 Likes

Reworking my old flood fill algorithm. This is a stack based algorithm, so it's not recursive and can be paused and continued easily. I use this to fill just a bit of the image each frame so you can still move the cursor around, for example.

However, my previous iteration would update the entire screen each time I iterated the flood fill's progress. Now the flood fill only draws what has changed each frame. I may allow more of the image to fill each frame now, but honestly I do like the perhaps Mario Paint inspired opportunity waiting allows me, perhaps an animated dancing cursor? :slight_smile:

Of course, implementing this algorithm in C would probably allow it to finish fast enough to be done in a single frame.

CleanShot 2022-05-06 at 09.33.23

Note: the red/orange are updates to the screen. So fewer/smaller = better.

2 Likes

What is the split of Lua to C in Playmaker @dustin ?

20 C/80 Lua? Something like that!

1 Like

Oh, this looks absolutely delightful! :playdate_heart:

2 Likes

Trying to feel out Playmaker's pixel pencil tool today.

Two options I came up with are.

  1. Operate on individual pixels. Uses magnifier so you can actually see the pixels you're setting and the area you're working on.

playmaker-pixel-pencil

  1. Operate within a kind of 3px grid. Get the feel of pixel art but at a scale that easy to read on device. Because it's not 1px pixels, you can use Playmaker colors too.

playmaker-pixel-tool

I'm leaning towards option 2. I think it'll just be more useful. It's very hard to read individual pixels and too much work to edit at that scale.

4 Likes

Some further work on cursor movement. Each tool now has individual variables (in code, not in UI) for pixel grid size, movemet speed while not painting, movement speed while painting, delay before automatic movement while not painting, and delay before automatic movement while painting. Alsoโ€”and I've found this to be importantโ€”I now allow one movement on the grid before the delay timer starts. This allows the player to tap the movement button to move in pixel grid increments precisely.

Pretty happy with how this is feeling. Will no doubt need to tweak the values a bit, but the movement logic is pretty solid.

Notice too how you can now get perfect diagonals while using directional pad to draw.

playmaker-cursor-precision

3 Likes

It's details like this that make this top tier! Great to see such attention to detail.

Would love to work on a game with you in the future.