Skip to content

Save Game Data

So you want to keep track of your high score in a Thumby game, or you want to save some game data to pick up where you left off? Look no further than this section of the API!

The save methods available from the thumby API:

thumby.saveData.setName(subdirectoryName) | creates a persistent.json file for save data to Saves/subdirectoryName/persistent.json

  • subdirectoryName
    • type: string
    • value: use the name of your .py game file to keep the Saves/ directory clearly organized per game.

Note: The /persistent.json save file created under the subdirectoryName will persist in the Saves/ directory when updating the game, or removing the game from the Thumby. So, you can feel safe removing games and trying out different games from the Thumby Arcade while maintaining saved game data.


thumby.saveData.setItem(key, value) | set a save entry under the key string name with value variable

  • key

    • type: string
    • value: name of the game data or variable you wish to save in Saves/subdirectoryName/persistent.json
  • value

    • type: bytearray, bytes, float, integer, list (all elements need to be the same type and in this list), string, tuple (all elements need to be the same type and be in this list)
    • value: save data you wish to keep throughout different game plays

thumby.saveData.getItem(key) | get a save entry under key string name. Returns value saved at key.

  • key
    • type: string
    • value: name of the game data or variable you wish to retrieve data from in Saves/subdirectoryName/persistent.json

thumby.saveData.hasItem(key) | check if save entry under key string name exists. Returns true if key exists, returns false otherwise.

  • key
    • type: string
    • value: match the string value of the data entry previously set

thumby.saveData.delItem(key) | delete save entry under key string name. Returns none.

  • key
    • type: string
    • value: match the string value of the data entry previously set

thumby.saveData.save() | write all set save data to persistent.json save file

thumby.saveData.getName() | returns the current save path


Save high score example

For this short program, we'll use two buttons:

  • A - Increases the high score
  • B - Saves and quits "game" to the Thumby main game menu (on the hardware)
import thumby
import time    # added for delay at end of program

# Create a save file titled HighScore to match game .py name
# This will save a persistent.json file with save data to Saves\HighScore\persisten.json
thumby.saveData.setName("HighScore")

# Game variables
newScore = 0
highScore = 0

if (thumby.saveData.hasItem("highscore")):
    highScore = int(thumby.saveData.getItem("highscore"))

if(newScore > highScore):
    thumby.saveData.setItem("highscore", newScore)
    thumby.saveData.save()

while(True):
    # Print the save contents
    thumby.display.fill(0)
    thumby.display.drawText("High Score: " + str(highScore), 3, 0, 1)
    thumby.display.drawText(str(highScore), 30, 10, 1)
    thumby.display.drawText("New Score: ", 5, 20, 1)
    thumby.display.drawText(str(newScore), 30, 30, 1)
    thumby.display.update()

    # A button increases the score
    if(thumby.buttonA.justPressed()):
        newScore += 1

    # B button saves and quits
    if(thumby.buttonB.justPressed()):
        thumby.display.fill(0)
        # If we're done playing, check if high score is bigger and save it
        if(newScore > highScore):
            thumby.display.drawText("New High", 10, 0, 1)
            thumby.display.drawText("Score!: " + str(newScore), 7, 10, 1)
            thumby.saveData.setItem("highscore", newScore)
            thumby.saveData.save()
        thumby.display.drawText("Saved & quit", 0, 30, 1)
        thumby.display.update()

        # Exit to game menu
        time.sleep(2) # delay game for a few seconds so player can read closing message
        thumby.reset()

As the program is written, you can save the above code in a file named "HighScore.py" and add the file under the Games folder on Thumby. Note: Emulating this code in the Thumby Code Editor won't display the high score from the save file - test this program on the Thumby hardware for functionality.