I set out on a little quest: could I make a game like Final Fantasy Legend or Dragon Quest in 2 weeks?
Two weeks later, here's what I've got: 1-Bit Fantasy:

It's a prototype made with Lua. After I finished the first draft of my Playdate book, I wanted to expand upon the final project to make a bigger turn-based RPG. And then share the source for those who might want to make their own JRPG.
You can download 1-Bit Fantasy on itch:
And download the source on GitHub (it's all public domain):
1-Bit Fantasy features:
- Map exploration with 3 different maps; using Tiled
- NPC conversations
- Turn-based combat
- Save and load data
- Sound effects and music
Basically, a lot of the foundations you'd need to make your own JRPG for Playdate.
Technical Aspects
I tried to write the Lua code in such a way that's all data-driven and without too many globals. Here are some interesting bits:
OptionSelect has a draw and update function that can be used to easily add menus, since there are so many in the game:
It's used throughout combat, menus, and NPC dialog trees.
And then MessageQueue.push and MessageQueue.pop power all of the combat and NPC textboxes:
From anywhere in the game, messages can be pushed onto the queue:
MessageQueue.push({
speaker = "Innkeeper",
text = "Welcome to the Generic Village Inn! The finest (and only) inn in the village.",
})
Messages have optional onShow and onConfirm callbacks, which can push more messages on the queue or change game state.
Which all gets rendered by MessageBox:
The MessageBox handles rendering and updating the message on the top of the queue, if there is one.
Lastly, I think the code for handling scenes and subscenes is pretty elegant:
A scene is a table that has an update function and optional init and close functions:
main.lua calls out to the current scene and handles switching:
And the Gameplay scene has subscenes (field, combat, and menu)![]()
Lua isn't the language I'm most comfortable with, so some of this may be a bit weird, but I really love how flexible Lua is. Structuring the game into scenes and subscenes and being easily able to switch between them made developing pretty quick.
Sunny
Right before I started 1-Bit Dungeon, I made a Playdate Lua template that has some of these foundations called Sunny
:
It has the scene switching and some organization of the code. I'll backport some of the stuff from 1-Bit Dungeon to Sunny soon.
What I Didn't Get To
I planned to add magic spells, items, and equipment, but I wasn't able to get those done. I do think they're similar enough systems to what exists that it wouldn't be a big leap to add them. They'd be great to add in a full game.
Asset Credits
- Monster Sprites:
Hexany's Monster Menagerie
(CC0) - Map Sprites: Kenney's 1-Bit Pack (CC0)
- Music tracks: [BitMidi](https://bitmidi.com/
What Next
Well, that's the big question! I am going to finish editing the Playdate book. Then make some smaller prototypes before I decide what kind of bigger project I want to commit to. I have an idea for a multi-hour JRPG that'd be a good fit for Playdate. But that'd be a big commitment that I'm not sure I'm quite ready for.
Hope you enjoy the prototype and let's all make some great RPGs for Playdate!