PlayPaint - A Drawing App for Playdate
A downloadable app
This is an application for the Panic Playdate game console. It recreates the classic MacOS MacPaint from 1984. Surprisingly this is actually quite a good match as both the Playdate and early Macintosh only have Black & White displays (no color; no grayscale).
I have some changes to improve the drawing experience on Playdate, but where possible it is nearly pixel perfect to drawings made with the original MacPaint app. Notably I've added a new brush selection panel on the right side (formerly buried inside a submenu) and you can easily toggle between snap-to "Grid" (fast move 8 pixels) and precision (move 1 pixel) because that's more important without a mouse.
This is EARLY ACCESS, but it is extremely usable, even by kids.
- [x] Rectangle / Filled Rectangel (v0.2.0)
- [x] Rounded Rectangle / Filled Rounded Rectangle (v0.2.0)
- [x] Ellipse / Filled Ellipse (v0.2.0)
- [x] Polygon / Filled Polygon (v0.2.1 on-stream 7/11/23)
- [x] Eraser: 5 Sizes (v0.2.0)
- [x] Pencil: Pixel perfect drawing (v0.2.0)
- [ ] Paint Bucket
- [x] Paint Brush (v0.2.0 details below)
Paint brush shapes - 36 Options (v0.2.0)
- [x] Square & Round: • ◼
- [x] Horizontal, Vertical & Diagonal: | ─ ⟍ ⟋
- [x] Dotted lines: ︙⋯ ⋱
- [ ] Mirrored brushes / symmetrical drawing
- [x] 40 Different Mouse cursor icons (v0.2.0)
- [x] Preview shapes and fill patterns while drawing (v0.2.0)
- [x] Filled Polygon inverts colors on overlapping segments (v0.2.0)
- [ ] Animated reselection
- [x] 25+ fill pattern choices + solid black and white (v0.2.0)
- [ ] Fix accidentally bit-inverted fill patterns (there's a couple)
- [ ] Visual Fill Editor / Create Custom Fills
- [ ] 25 Bonus fill patterns (e.g. second row in toolbar)
Stroke selection (v0.2.0)
- [x] Filled shapes - 4 weights of outline strokes + no outline
- [x] Four sizes for each brush shape
- [x] Save as Gif (v0.2.0)
- [x] Save as PDI - PlayDate Image format (v0.2.0)
- [x] New Document / Clear canvas (v0.2.0)
- [ ] Save/Save As: Custom filename support
- [ ] Open: Load from File
- [x] Auto-Recovery: save WIP drawing when leaving app
- [x] Save as SVG (v0.5.0 see devlog)
- [x] Document canvas is larger than window
- [ ] Support panning canvas
- [ ] Goodies Menu -> Show Page
- [ ] Rectangular Selection Tool
- [ ] Edit menu: Undo/Cut/Copy/Paste/Clear/Invert/Flip/Rotate Selection
- [ ] Font face (Athens, Chicago, Geneva, London, Monaco, New York, Venice)
- [ ] Font size (9, 10, 12, 14, 18, 24, 36, 48, 72)
- [ ] Font style (Plain, Bold, Italic, Underline, Shadow)
- [ ] Text alignment (Left, Right, Justified)
Playdate Specific and Bonus Features:
- [x] Use Crank to select tools (v0.2.0)
- [x] Kid-friendly input -- Never require holding and pressing multiple buttons at the same time. Small kids lack the dexterity to do this. (v0.3.0 see devlog )
- [x] Keyboard support (Simulator only)
- [ ] Multiple levels of Undo/Redo
- [ ] Goodies menu: Fat Bits (Zoom)
- [ ] About Menu
- [ ] Gallery view of multiple images
As this is an early-access version of PlayPaint, there is no guarantee that all these or features will be implemented. That said, every version posted here is a fully capable painting application. Rather than focus on implementing every last feature, I focused on stability and performance -- suddenly I found myself with a stable app that can draw, fill, paint, erase and export to your hearts content and so I decided to release it early. This is not an unstable / unsupported build, quite the opposite. I have never observed a crash in any of the released versions and have an automated testing setup to ensure new features don't break existing functionality.
As development progresses I will post additional builds and devlogs here so you'll get new features/refinements as they are completed -- this includes the any 1.x releases when I feel things are feature-complete.
- Bill Atkinson, the original MacPaint author. QuickDraw and MacPaint are still impressive feats of engineering 40 years later.
- Susan Kare, the designer of all the icons used by the original Macintosh and MacPaint. Likely the greatest 1bit designer of all time.
- Playdate team at Panic whose excellent Playdate SDK enabled me to implement this initial beta in <1000 lines of pure Lua.
- Apple: Thanks for not immediately suing me.
- The original QuickDraw+MacPaint Source is available. I haven't read any of the ~25k lines of pascal and assembler, but I'm really happy it was preserved.
Technical requirements: This game can be played on the Panic Playdate game console or on the PlayDate Simulator on Mac, Windows or Linux (free download of Playdate SDK required).
Side-loaded to your device via usb or play.date/account/sideload and it will appear under Settings->Games. You can even purchase & download on iPhone/Android and upload the zip file to play.date/account/sideload from your phone -- no computer required!
If you've read this far you're probably my ideal customer. You have a Playdate or are eagerly waiting for one to arrive. You've sunk at least $199 (probably $219) into the device...and you may have spent more than a few hours trying to make a game. What's an hour of your time worth -- surely more than $20.
Are you curious how this thing works and want to see the ~1000 lines of code for yourself? You can follow along live-coding at @notnotpeter on twitch but if you wanna encourage me to keeping making odd shit for playdate consider donating $99 more to get a copy of the source code and I'll happily add you to the GitHub repo so you can see the full history and follow along in real-time.
In order to download this app you must purchase it at or above the minimum price of $12 USD. You will get access to the following files: