The Panic Playdate is a tiny, just-for-fun indie game console. This post will discuss getting started with the Panic Playdate. It will cover downloading the SDK, installing it, and running the examples. macOS will be used, but the steps should be largely the same for other platforms. This post assumes familiarity with the command line.

Note that command line familiarity is not needed for Playdate development. Downloading the SDK is enough to get started if Pulp is sufficient for your needs. For most developers, Lua knowledge and a Playdate-integrated editor, like Nova (link to Playdate Extensions), will be enough to make their Playdate development dreams come true. (Dedication to see a project to completion is also required.)

Software Versions

$ date -u "+%Y-%m-%d %H:%M:%S +0000"
2022-10-03 20:21:04 +0000
$ uname -vm
Darwin Kernel Version 21.6.0: Mon Aug 22 20:19:52 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T6000 arm64
$ ex -s +'%s/<[^>].\{-}>//ge' +'%s/\s\+//e' +'%norm J' +'g/^$/d' +%p +q! /System/Library/CoreServices/SystemVersion.plist | grep -E 'ProductName|ProductVersion' | sed 's/^[^ ]* //g' | sed 'N; s/\n/ /g'
macOS 12.6
$ echo "${SHELL}"
$ "${SHELL}" --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin21)
Copyright (C) 2007 Free Software Foundation, Inc.
$ cat "${HOME}/Developer/PlaydateSDK/VERSION.txt"



First, download the latest Playdate SDK (link to all versions) from the Playdate Developer Page. Update the path, set the SDK path, and consider adding an alias for the Playdate simulator.

# update path
echo 'export PATH="${HOME}/Developer/PlaydateSDK/bin:${PATH}"' >> "${HOME}/.profile"

# set the Playdate SDK path
echo 'export PLAYDATE_SDK_PATH="${HOME}/Developer/PlaydateSDK"' >> "${HOME}/.bash_profile"

# add alias for simulator
echo 'alias playdate_simulator="open ${HOME}/Developer/PlaydateSDK/bin/Playdate\"' >> "${HOME}/.bash_profile"

# reload profiles, if necessary
. "${HOME}/.profile"
. "${HOME}/.bash_profile"


Pulp is a web-based game editor for the Playdate. The target audience is entry-level game developers and people who want to rapidly prototype. All development and testing can be done in the browser. Pulp has a lot of limitations, but it is also easy to learn! (Links to documentation for Pulp and PulpScript.) Pulp is a good choice for people who are not ready to learn to program.

Entire games can be exported and imported in JSON format. To run a game developed with Pulp in the simulator, click the “DOWNLOAD PDX” button, and then pass the PDX file to the simulator.

playdate_simulator "${GAME_PATH}/${GAME}.pdx"

Lua Examples

The Lua scripting language can also be used to develop Playdate games. The target audience is moderately sophisticated developers. Lua is a popular scripting language commonly used in game development, and the Lua API is not as restricted as Pulp’s web-based development model. (Link to Lua documentation.) Lua is generally the best choice for projects with a programmer.

Regular project-based Lua examples can be run as follows.

# cd to location of examples directory
cd "${HOME}/Developer/PlaydateSDK/Examples/"

# run the "2020" exmaple
pdc "${EXAMPLE}/Source" "${EXAMPLE}.pdx"
playdate_simulator "${EXAMPLE}".pdx

# cleanup file when no longer needed
rm -rf "${EXAMPLE}.pdx"

Single file Lua examples can be run as follows.

# cd to location of examples directory
cd "${HOME}/Developer/PlaydateSDK/Examples/"

# run the "animator" exmaple
pdc -m "Single File Examples/${EXAMPLE}.lua" "${EXAMPLE}.pdx"
playdate_simulator "${EXAMPLE}.pdx"

# cleanup file when no longer needed
rm -rf "${EXAMPLE}.pdx"

C API Examples

Sophisticated developers can use the C API to make software for the Playdate. Many professional AAA game developers use C++, but C is the language they used in the past. (Link to C API documentation.) Only use the C API if you know why you need to use it.

The C API examples can be run as follows.

# cd to location of examples directory
cd "${HOME}/Developer/PlaydateSDK/C_API/Examples/"

# run the "3D library" exmaple
EXAMPLE="3D library"
(cd "./${EXAMPLE}"; make; playdate_simulator *.pdx)

# cleanup file when no longer needed
(cd "./${EXAMPLE}"; make clean)

More Information

Consider visiting the Playdate Developer Page and Playdate Developer Forums for more information!