Difference between revisions of "Pulp"

From Playdate Community Wiki
Jump to: navigation, search
Line 23: Line 23:


An internal game jam for Pulp was held at Panic, which produced six different games.<ref name="Internal jam Twitter thread">https://twitter.com/playdate/status/1466495120753061897</ref>
An internal game jam for Pulp was held at Panic, which produced six different games.<ref name="Internal jam Twitter thread">https://twitter.com/playdate/status/1466495120753061897</ref>
==Components==
===Game===
Here you can set your game’s Name, Author, Background Color tile, and start Looping a song, as well as open existing games and create new ones. Note the Script button  in the corner; it will take you to Script mode where you can edit the main game script. You can also choose a room to use as your game’s card in the Playdate launcher and download individual assets collected from all over the Pulp editor.
===Font===
Choose between full-width and half-width fonts. You can clear or invert the entire font and UI tiles. Redraw individual characters or UI tiles. Preview the font with alphanumerics, a familiar pangram, or your own custom text. You can also import and export Pulp format fonts to simplify sharing between projects. (But note that each game only supports a single font which includes the UI tiles.)
===Room===
The meatiest mode. You’ll probably spend most of your time here, drawing and animating tiles, then using them to layout your rooms. You can toggle the display of the tile and pixel grids and a red overlay for solid tiles. In the room you have selected as your card, you can toggle an overlay showing how the room will be cropped for the card.
====Tiles====
There are four tile types, each with their own unique use. You can reorder tiles within their Layer and frames within their tile. You can change the type of most tiles, the only exceptions being the two default “white” and “black” World tiles, the default “player” Player tile, and the last remaining Sprite and Item tiles.
World tiles do not support simple or scripted behavior. Both Sprites and Items can say something when bumped into or collected or define more advance behavior with PulpScript.
All types of tiles can have multiple frames. By default all instances of a tile will loop continuously at the specified fps (frames per second), but using PulpScript you can tell specific instances of a tile in a room to play once or set their fps to 0 and control which frame to display manually.
=====World=====
The majority of your rooms tiles will be World tiles. A World tile can be solid or allow the Player to pass through.
World tiles do not support simple or scripted behavior.
=====Sprites=====
Sprite tiles are always solid
=====Items=====
Item tiles can always be passed over.
By default, when a Player overlaps an Item tile it will be swapped with the Background Color tile and a variable matching the plural form of the tile’s name will be incremented (eg. an Item tile named “dot” will increment a variable named <code>dots</code>when collected).
But once you declare your own <code>collect</code> event handler for an Item tile you become responsible for tracking the amount collected and swapping out a different tile upon collection.
=====Player=====
The Player tile is unique. Only the primary Player tile can be placed in a room and only one room which then becomes the starting room. Only Player tiles can contain transparent pixels. Only the primary Player tile can define behavior. Additional Player tiles can be created and swapped in for different animations based on movement direction or context. Unlike other tiles, when swapped, only the Player’s representation is swapped. This way all Player behavior lives in one place, on the primary Player tile.
=====Exits=====
Exits can connect a single tile in one room to a single tile in another room, connect the edges of two rooms, or display an ending.
Single tile Exit connections are one-way. To connect two rooms to each other, you must place an exit in each room pointing to the other room. First place an exit in the current room, then in the Exits palette to the right, select the room to connect to and place the exit outlet. Then open the connected room and create a reciprocal exit. Related exits and targets should be placed next to each other, not on top of each other. Exits can be placed on solid World tiles and still be interacted with unless covered by a Sprite. This allows you to create door Sprites that require key Items to unlock and clear to access the Exits below.
Edge Exits automatically create a reciprocal exit in the target room. Place the edge exit in the current room, then in the Exits palette to the right, select the room to connect to, and place the exit outlet. That’s it, the rooms now have a two way connection. Despite their name, Edge exits don’t have to be placed at the edge of a room. They can be inset from the edge as much as you like which is useful if you want to have square rooms and use the remaining space for a HUD.
Fin Exits display some text and reload the game when dismissed.
===Song & Sound===
The two audio modes have a lot of overlap. A little music theory will help here but just like you don’t need to be an illustrator to use the Tile editor, with a little experimentation and practice, you’ll be hammering out little opuses (opera?) in no time.
===Script===
The script editor is fairly fully featured. It supports PulpScript syntax highlighting, auto-indenting, auto-pairing of most control structures, and snippets for most functions (try pressing tab after typing if or tell and experiment to find others).
The PulpScript parser validates your code as you type, highlighting compilation errors below the editor. The editor will not save code that does not compile. If you switch away from a script before fixing its errors, when you return the code will be in its last working state—which may be an empty editor. Take care to address any issues as they arise.
Check out the [https://play.date/pulp/docs/pulpscript/ PulpScript documentation] to learn more about PulpScript.


== Limitations ==
== Limitations ==


* Pulp uses half the resolution of the Playdate's screen (running at 200x120 pixels).  
* Pulp uses half the resolution of the Playdate's screen (running at 200x120 pixels).  
* Pulp runs on top of the SDK and as such, the performance ceiling is quite low.
* Pulp uses a tile-based system mainly intended for "turn based" gameplay mechanics. It won't suit well to anything "real-time" such as a scrolling shooter.
* Pulp uses a tile-based system mainly intended for "turn based" gameplay mechanics. It won't suit well to anything "real-time" such as a scrolling shooter.
* PulpScript cannot be coded for as heavily as making a game from scratch using the SDK.
* PulpScript cannot be coded for as heavily as making a game from scratch using the SDK.

Revision as of 20:30, 9 March 2022

Pulp
A screenshot of Pulp.
Release Date: Public Beta: 20/1/2022
Developers: Panic
Language: Point and Click

PulpScript

Link: Pulp

Pulp is a special development system for the Playdate that is used via a web browser. Pulp has functionality for creating graphics, sound, music and fonts for usage in games, and more advanced behaviour can be made through its own scripting language known as PulpScript. Games created in Pulp can be exported directly to a Playdate console. Pulp is intended for an easier route to begin development for games on Playdate, to invite those who would be otherwise intimidated by programming languages like Lua and C.

A public beta for Pulp has been released and is available now to the public after an extensive closed beta period.

An internal game jam for Pulp was held at Panic, which produced six different games.[1]

Components

Game

Here you can set your game’s Name, Author, Background Color tile, and start Looping a song, as well as open existing games and create new ones. Note the Script button in the corner; it will take you to Script mode where you can edit the main game script. You can also choose a room to use as your game’s card in the Playdate launcher and download individual assets collected from all over the Pulp editor.

Font

Choose between full-width and half-width fonts. You can clear or invert the entire font and UI tiles. Redraw individual characters or UI tiles. Preview the font with alphanumerics, a familiar pangram, or your own custom text. You can also import and export Pulp format fonts to simplify sharing between projects. (But note that each game only supports a single font which includes the UI tiles.)

Room

The meatiest mode. You’ll probably spend most of your time here, drawing and animating tiles, then using them to layout your rooms. You can toggle the display of the tile and pixel grids and a red overlay for solid tiles. In the room you have selected as your card, you can toggle an overlay showing how the room will be cropped for the card.

Tiles

There are four tile types, each with their own unique use. You can reorder tiles within their Layer and frames within their tile. You can change the type of most tiles, the only exceptions being the two default “white” and “black” World tiles, the default “player” Player tile, and the last remaining Sprite and Item tiles.

World tiles do not support simple or scripted behavior. Both Sprites and Items can say something when bumped into or collected or define more advance behavior with PulpScript.

All types of tiles can have multiple frames. By default all instances of a tile will loop continuously at the specified fps (frames per second), but using PulpScript you can tell specific instances of a tile in a room to play once or set their fps to 0 and control which frame to display manually.

World

The majority of your rooms tiles will be World tiles. A World tile can be solid or allow the Player to pass through. World tiles do not support simple or scripted behavior.

Sprites

Sprite tiles are always solid

Items

Item tiles can always be passed over. By default, when a Player overlaps an Item tile it will be swapped with the Background Color tile and a variable matching the plural form of the tile’s name will be incremented (eg. an Item tile named “dot” will increment a variable named dotswhen collected). But once you declare your own collect event handler for an Item tile you become responsible for tracking the amount collected and swapping out a different tile upon collection.

Player

The Player tile is unique. Only the primary Player tile can be placed in a room and only one room which then becomes the starting room. Only Player tiles can contain transparent pixels. Only the primary Player tile can define behavior. Additional Player tiles can be created and swapped in for different animations based on movement direction or context. Unlike other tiles, when swapped, only the Player’s representation is swapped. This way all Player behavior lives in one place, on the primary Player tile.

Exits

Exits can connect a single tile in one room to a single tile in another room, connect the edges of two rooms, or display an ending.

Single tile Exit connections are one-way. To connect two rooms to each other, you must place an exit in each room pointing to the other room. First place an exit in the current room, then in the Exits palette to the right, select the room to connect to and place the exit outlet. Then open the connected room and create a reciprocal exit. Related exits and targets should be placed next to each other, not on top of each other. Exits can be placed on solid World tiles and still be interacted with unless covered by a Sprite. This allows you to create door Sprites that require key Items to unlock and clear to access the Exits below.

Edge Exits automatically create a reciprocal exit in the target room. Place the edge exit in the current room, then in the Exits palette to the right, select the room to connect to, and place the exit outlet. That’s it, the rooms now have a two way connection. Despite their name, Edge exits don’t have to be placed at the edge of a room. They can be inset from the edge as much as you like which is useful if you want to have square rooms and use the remaining space for a HUD.

Fin Exits display some text and reload the game when dismissed.

Song & Sound

The two audio modes have a lot of overlap. A little music theory will help here but just like you don’t need to be an illustrator to use the Tile editor, with a little experimentation and practice, you’ll be hammering out little opuses (opera?) in no time.

Script

The script editor is fairly fully featured. It supports PulpScript syntax highlighting, auto-indenting, auto-pairing of most control structures, and snippets for most functions (try pressing tab after typing if or tell and experiment to find others).

The PulpScript parser validates your code as you type, highlighting compilation errors below the editor. The editor will not save code that does not compile. If you switch away from a script before fixing its errors, when you return the code will be in its last working state—which may be an empty editor. Take care to address any issues as they arise.

Check out the PulpScript documentation to learn more about PulpScript.

Limitations

  • Pulp uses half the resolution of the Playdate's screen (running at 200x120 pixels).
  • Pulp runs on top of the SDK and as such, the performance ceiling is quite low.
  • Pulp uses a tile-based system mainly intended for "turn based" gameplay mechanics. It won't suit well to anything "real-time" such as a scrolling shooter.
  • PulpScript cannot be coded for as heavily as making a game from scratch using the SDK.

Links

Pulp

Pulp Documentation

PulpScript Tutorial

All games on the wiki made with Pulp

Playdate Pulp: Zero to video game in 60 Seconds

Images

References