Changelog
A list of notable changes to Pulp and PulpScript.
Since October 23, 2023
These changes improve performance in large Pulp projects.
Runtime
- changed: graphics blitting no longer relies on canvas nodes, which will reduce memory footprint
Editor
- changed: tiles now render using fewer HTML nodes
Compiler
These changes only affect compiled .pdx files of Pulp games.
- changed: identical frames are deduped to save memory
- changed: authoring metadata is removed to save memory
- changed: identical PulpScript block commands are deduped to save memory
Since June 16, 2023
Runtime
- fixed: crashes in
fin
Since July 18, 2022
Editor
- added: tiles within a room can be selected and shifted
Web Player
- added: screenshot button for capturing gameplay
Since May 5, 2022
Editor
- added: importing tiles from a png that follows the Playdate imagetable naming conventions now prefixes imported tiles with the imagetable name
- fixed: loss of transparency information when importing/exporting tiles
PulpScript
- added: calling
store
without an argument now immediately writes persistent storage to disk - added:
id
function to get tile id by name or coords
Runtime
- fixed: wait timers not firing under certain conditions (again!)
Documentation
- added: changes to
store
function
Since March 4, 2022
Editor
- changed: downloaded pdx now contains a zipped copy of the game’s data.json (an additional safeguard against data loss, can be removed without affecting the game)
- changed: commented out
toss
in thefinish
handler of the default Untitled Pulp Game example code - fixed: envelope sustain volume was miscalculated
- fixed: room becomes invisible when highlight tile is active
- fixed: deselect erase tool when not on player tile
Runtime
- changed: reduced overall volume to reduce clipping at max hardware volume
- changed: reduced noise volume to better match editor/web player
- fixed: wait timers disappearing before completing
PulpScript
- fixed: handling of trailing backslash in strings
Documentation
- added: Publishing a Pulp Game section
- updated: clarified
event.ra
(relative angle)
Web Player
- fixed: envelope sustain volume was miscalculated
Since March 1, 2022
Editor
- added: Player tiles now support transparency!
- fixed: prevent overlapping exit (except for perpendicular edge exits)
PulpScript
- added:
done
statement to return from an event handler or callback early - updated: the
w
argument tosay/ask/menu at
is now measured in tiles not chars (this is only a breaking change if using half-width fonts)
Runtime
- added: menus can now be navigated with the crank
Web Player
- fixed: locked down incompatible JavaScript string concatenation in PulpScript
Since February 10, 2022
Editor
- fixed: newline parsing in formatted strings
PulpScript
- fixed: embedded tiles work in fin exit
- added:
crop to x,y,w,h
- added:
config.followOverflowTile
,config.followCenterX
, andconfig.followCenterY
- added:
datetime.timestamp
(seconds since midnight on January 1, 2000 UTC) - updated:
label
now supports newlines and optionallen
andlines
arguments - added: crank
dock
andundock
events
Runtime
- updated: optimized drawing for when the camera follows the Player
- fixed: room dirty logic when drawing to non-screen contexts
- fixed: dirty logic around windows and menus
- fixed:
wait
’s duration is parsed inline, not at the end of the frame
Web Player
- added: keyboard key to web player UI
- added: toggle crank docked state
Documentation
- updated: non-macOS shortcuts
- updated: documented PulpScript additions
- added: link to default Ace keyboard shortcuts
- added: note about
emit
’s impact on performance
Since January 28, 2022
Editor
- updated: window resize breakpoint
- fixed: volume slider alignment
- fixed: volume slider appearance in Firefox
- changed: bitsy link opens in a new window or tab
- fixed: alignment of Song mode center icons
- added: descriptive text to remaining layers in Room mode
- changed: wording of wall toggle icon tooltip
- fixed: AudioNode.disconnect errors after playing Noise channel in Song and Sound modes
- fixed: missing UI when certain nodes aren’t available
- fixed: missing UI after importing certain tiles
PulpScript
- fixed: parsing of negative numbers
- fixed: passing variables to
once
andloop
- added:
datetime
variable - added: basic trig functions
- added: left and right pad string formatting
Runtime
- fixed: type in error message
- fixed: drawing now handles negative dimensions correctly
Web Player
- fixed: missing music
- changed: now simulates Lua’s number formatting
Documentation
- changed: improved readability on mobile devices
- updated: additional info about exit
- added: documented
datetime
variable - added: documented basic trig functions
- added: documented left and right pad string formatting
Since January 10, 2022
Editor
- added: condensed mode for less wide displays
- fixed: incorrect mapping for backslash character in UI
- updated: indenting and block matching in PulpScript editor
- updated: prevent name collisions when importing a game from json
- fixed: simple says behavior containing embed syntax
- fixed: player icon in the connecting rooms menu was too large
- changed: deferred PulpScript syntax error reporting when clicking on docs
- fixed: dragging to draw or move something no longer drags the underlying HTML element in Firefox
- fixed: page disappearing when opening a scrollable menu in Firefox/Chrome
- fixed: command/control detection in Firefox
- fixed: prevent audio voice settings from getting into invalid state and fix those that have
- changed: undoable UI changes no longer set the data dirty flag
- changed: saving adjusts history dirty flags
- changed: constant editor internal variables are now actually constants
- changed: correct interleaving of editor and navigation elements including overlays and menus
- changed: compatibility alert overlay changed to dismissible banner
- added: link to Pulp category of developer forum
- added: link to help form
PulpScript
- fixed:
frame
returns the correct frame for 0fps tiles - fixed: variables can include “frame” in their name
Runtime
- fixed: incorrectly calculating dirty rects for fill
Web Player
- fixed: shake
- fixed: return to editor keyboard shortcut in Firefox
- fixed: command/control detection in Firefox
- fixed: antialiasing when using non-integer values
Compiler
- removed: uncompressed flag for faster loading on device
- added: strip debug symbols flag for smaller pdx size
Documentation
- added: syntax for positionable versions of
say
andask
- added: web player keyboard shortcuts for fullscreen and pause
Since December 3, 2021
Editor
- fixed: percussion lagging in Chrome on Windows
- added: room center to grid UI
- fixed: weird interaction between card overlay and disabled grid overlay
- fixed: Font mode clear and invert button titles
- added: keyboard shortcuts to change Voice in Song and Sound modes
- added: additional Tile transform options and keyboard shortcuts
- added: keyboard shortcuts to Font mode
- fixed: icon alignment issues
- added: highlight tile feature
- fixed: alert window scrolling the page
- added: constraints on tile name display widths throughout UI
- changed: context-based Tile buttons are disabled instead of hidden
- added: link to the Pulp category of Playdate Developer Forum
- changed: disabled Fill tool on Exits and Player layers in Room mode
PulpScript
- added: config.allowDismissRootMenu to allow dismissing a root menu with B
- added: support for page breaks
\f
insay
dialog - added: config.sayAdvanceDelay to insert a short delay before the player can advance text
- updated:
say
,ask
, andfin
are now positionable - changed: the edge of the screen triggers
bump
event - changed:
frame
can now be called without an argument or with dimensions to get the frame of the targeted tile
Web Player
- fixed: percussion lagging in Chrome on Windows
Documentation
- added: section and function anchors
- added: table of contents
- added: Song and Sound mode documentation
- updated: Pulp editor documentation
Since November 12, 2021
Editor
- fixed: room with same room id as the player tile id displaying as “player” in Script mode editor
- fixed: selecting text in an overlay and releasing the mouse outside the overlay window shouldn’t dismiss the overlay
- fixed: deleting the last instance of a search result and finding again would enter an interminable loop
PulpScript
- changed: number strings are no longer converted to number literals
- fixed: broken
{embed:tileName}
syntax - fixed: escaped newline not recognized in strings
Runtime
- changed: correctly identifies room state when warning about failed
emit
- fixed: incorrectly identifying the source of a coordinateless
tell
call in error reporting - changed:
swap
now clears the tile play timer - fixed: crash when calling
fin
from event handler called byemit
- added: warn when menu has 0 valid options
- changed: using
goto
in an “exit” event handler is now a fatal error (instead of a crash) - changed: calling
swap
on a room is now a fatal error (instead of a crash) - changed: prevent selecting empty spaces in menus
- changed: removed deferred dirty optimization (was causing dismissed windows to hang around for a noticeable extra frame)
- added:
event.option
is now available in a menu’soption
callback (and not just theselect
event handler) - fixed:
{embed:tileName}
lookup is now shared by all strings (so now you can compare and matchevent.option
to identical strings that include embeds) - fixed: wrong
menu
width when using half-width font - fixed:
label
crash ifmaxChars
argument is provided and the string was less than that value - fixed: crash caused by calling
fin
in unanticipated event handlers - fixed: fatal error when manually drawing tiles with fps set to 0
Web Player
- changed: Lua’s
a or b
syntax is transpiled using JavaScript’s ternary operatorLuaTrue(a) ? a : b
to ensure comparable behavior
Compiler
- fixed: cached pdx downloads (by adding timestamp to filename of all pdx downloads)
- updated: compiler to latest version
Since November 9, 2021
Editor
- updated: persistant storage locations in PulpScript docs
- fixed: menus with longer item names overlapping adjacent UI elements
PulpScript
- added:
event.ax
,event.ay
,event.az
, andevent.orientation
to access accelerometer data
Web Player
- added: accelerometer UI
Since November 5, 2021
Editor
- added: mute to global volume
- fixed: card overlay UI updates immediately when changing card room in Game mode
- changed: made bar divisions more pronounced in Notes palettes
Runtime
- changed: calling
emit
in theload
event will warn that the room and tiles haven’t been loaded yet - fixed: variable set to empty string was being set to
0
instead
Web Player
- added: press F key to enter fullscreen mode, ESC key to exit
- added: mute to global volume
- added: controller UI
Since October 12, 2021
Editor
- added: short explanation about tiles in the Player layer
- fixed: Download pdx now uses the correct room to generate the launcher card
PulpScript
- added:
event.player
(usetell event.player
instead oftell "player"
) - added:
shake
function - added:
invert
function - fixed: the increment/decrement operators no longer result in a parse error
- updated:
draw
now accepts a variable for its tile argument - added:
invalid
event, sent to game object whenever the player performs an invalid action (current dismissing a top-levelmenu
or selecting an undefinedmenu
option)
Runtime
- changed:
while
loops now have a max iterations of 400 - updated: optimized runtime by minimizing unnecessary drawing, string allocations, and function calls
- updated: added additional
event
members todump
output - changed:
loop
event is no longer emitted whilesay
,ask
, ormenu
window is on screen - changed:
select
event now emitted after dismissing theask
window (otherwise any window displayed by theselect
event would be dismissed immediately) - changed:
ask
menu now paginates 6 or more options - added:
event.option
now available inselect
event - changed:
change
event also emitted when a menu is initially displayed - fixed: prevent selecting undefined
ask
options
Web Player
- added: pressing the space bar or clicking the screen pauses/resumes the game
Since October 5, 2021
Editor
- fixed: event menu listing comment ids when a script contains only comments and no event handlers
- fixed: overlap issues in search input field and events menu in Behavior pane
- fixed: only autocomplete exact matches
- fixed: Import button confirmation
- fixed:
name
function could be parsed from but not back into PulpScript - added: Pulp audio runtime download
- added: Assets pane to Game mode
- fixed: keyboard focus in modal windows with no text inputs
- fixed: modal window + menu + esc key interaction
- fixed: documentation typos
Runtime
- fixed:
emit
could call the same event multiple times on the same tile
Since August 17, 2021
Editor
- added: play sound when interacting with a sprite or collecting an item without writing any PulpScript
- updated: improved PulpScript syntax error reporting
- updated: improved keyboard navigation of custom buttons and select menus
- fixed: all other inputs are disabled when modal window is visible
- added: copious Aria labels
- fixed: various icon alignment issues
- added: auto-complete for default event names and event and config properties
- updated: script editor now also restores cursor position when switching between scripts
- added: Events menu for quicker script editor navigation
- fixed: search error when Player object has no script
PulpScript
- added:
name x,y
/name tileId
function - added:
config.follow
to make the camera follow the player around the current room - added:
fill stringColorName at x,y,w,h
function - added: multiply and divide assignment operators
- added:
floor
,ceil
, andround
functions
Runtime
- added: cranking 180° advances/dismisses
says
text - fixed: crank input now honors
ignore
- fixed:
loop
event only called after a room has loaded - added: independent PulpAudioRuntime to enable using Pulp songs and sounds in non-Pulp Lua games
Web Player
- fixed:
event.ra
returns correct change when crossing 0° counterclockwise
Since July 2, 2021
Editor
- added: this changelog!
- added: two new styles, the darker Perpetual and lighter White Collar
- added: a new type of exit that connects the entire edge of one room to the opposite edge of another
- added: search (Command+F to focus input, Tab or Up/Down arrow keys to change selected result, Return to go to select result, Command+G and Command+Shift+G to go to next or previous result)
- added: volume control (shares value with web player)
- fixed: clicking an icon in the Recent Used scripts list selects the script
- updated: Script mode editor resizes with window
- updated: card overlay more accurately reflects crop
- updated: Script editor remembers scroll position when switching back and forth between sources
- fixed: voice volume of short notes
PulpScript
- removed:
sound ... priority ...
form ofsound ...
(editor will update game next time opened and saved, runtime ignores existing priority) - added:
while
loops - added:
change
,select
, anddismiss
menu events - added:
event.option
tochange
event
Runtime
- added: a new type of exit that connects the entire edge of one room with the opposite edge of another
- updated: Playdate compiler from 1.0 to 1.2
- fixed:
play
no longer plays the first frame twice - fixed:
math.random()
is now manually seeded on hardware
Web Player
- fixed: missing sound when song plays a note on the same tick on an earlier channel
- fixed: arrow keys no longer scroll the page
- added: hold Shift when clicking Toss to toss storage without confirmation
- fixed:
0==""
istrue
in JavaScript butfalse
in Lua (JavaScript now uses===
to match Lua result) - fixed: voice volume of short notes
Since March 26, 2021
Editor
- fixed: default fonts didn’t include new cursors used by
ask
andmenu
PulpScript - fixed: tool-specific cursors
- changed: remove/replace unsupported characters from
say
calls - added: icons to docs links
- changed: tile fps is capped at 20fps
- updated: increased line-height in Script mode editor
- fixed: couldn’t create new exits
- fixed: if an input value was clamped to its previous value it still displayed the pre-clamped value