Pulp Game JSON Sharing

  1. Describe your reason for requesting this feature. What problems are you running into?

So, I've been thinking a lot about the workflow related to importing json files as I've been looking through forum posts for completed games. I have a proposal for a feature of Pulp that would make that process much easier. Admittedly, this is low priority compared to many of the other feature requests, but I thought I'd document it to at least get thoughts on it.

My workflow for importing a game is as follows:

  1. Download json or json zip
  2. Unzip the zip file if necessary
  3. Create an empty Pulp game
  4. Import JSON and save

Overall, this is manageable, but becomes tedious the more times you need to do it.

  1. How would this request improve your experience with using Pulp?

This request would make the process of sharing games for players to quickly review and test out in the online simulator much easier.

  1. Include any other details you have relating to this request.

All pulp games are currently stored on the server with a set of urls for both editing (https://play.date/pulp/<gameID>/edit/) and playing the games (https://play.date/pulp/<gameID>/play).

Although I haven't tested it, I assume that accessing these urls requires that a user be logged in and have the appropriate gameID attached to their account.

My first inclination was to make it so that these urls would allow anyone to play the associated game or edit a copy of that game in their own account, but that would make all user's games accessible to anyone which I don't believe should be the case.

In order to get around this, my idea is to generate a unique GUID for each game that is permanently attached to a gameID (allowing for a user to temporarily share/unshare as they wanted) .That game would then be shareable via some url such as https://play.date/pulp/<GUID> or https://play.date/pulp/share/<GUID>. By default, the backend server would 404 on requests for GUIDs that were either invalid or not shared. The creator of the game would need to explicitly set an option in the Pulp editor to make the game url accessible.

The game would then load in the Pulp simulator and there would be an additional button from there to create a copy in a user's account if they are logged in.

1 Like

I like the idea, and there's a few more details to consider before sharing.

Perhaps a user might want to share at a specific version, and it would be nice to have that functionality. This could be the default, bc otherwise a dev could replace their game with something less wholesome after the link is shared far and wide.

Then instead of a one-time GUID, what might make more sense is a long id tied to a specific build of the game that a dev could create, basically as a "publish to the public" button. They would be able to manage published versions, removing them as they wish, but they can't do a bait-and-switch with a particular link.

1 Like

Thanks! Those are great points. Maybe the published page could even have a link for downloading the .pdx file and a link to docs for how to put it onto a physical playdate. Similar to how itch.io pages look/work.

As there would then be consistency between how games are shared, these pages could even be collected into another searchable site for sharing to the general playdate userbase. Obviously, there would need to be moderation at that point, but at the very least, it opens up the possibility.

GitHub integration would also be a good addition, then you could manage permissions on the repo.

IIRC this has been suggested before and the team at panic would like to do it (at least in theory) but it brings issues of moderation and currently isn't their to priority.

Surely if nothing else .json can be whitelisted as an upload format. It is rather silly that this forum, the official forum for Pulp, blacklists uploading Pulp's native source format.

Moderation on the share URLs is a good and challenging point. I also imagine Pulp is funded not as a general game engine but a method to ensure Playdata has games. Thus any money spent allowing Pulp games to be played online is money spent under curtting PlayDate itself.

I do hope the Playdate itself has a proper integration with Pulp, which itself will imply moderation. Or again if not an official Playdate game store then allowing whitelisted apps to have app-install permission would be the next best.

To be honest, the lack of transparency or future plans on how the Playdate game market-place might exist puts a dark cloud over potential for developing games/products for Playdate. Right now it feels like Panic isn't planning an official market and wants all third-party games to just upload to itch

I understand and agree that not knowing what the possibilities for game distribution are makes it tricky for developers. Sideloading and distributing on your own probably isn't what everyone wants; at the same time, the lack of sideloading is a common complaint about platforms that specifically don't allow it (like iOS) so we wanted to clarify that we were never going to require that games be distributed through some official channel.

We also have our Season model, which can of course only accommodate so many games at a time—but if you think your game could be a good fit for it, please reach out to us!

As for other methods, we'd appreciate hearing what you'd like to see. Our goal is to build what developers and players want (with the small caveat that we're a small team and features that require a ton of moderation can be tricky.)

1 Like

One more note on this: Pulp-produced JSON files are much smaller when zipped (my game goes from 700 KB to 78 KB) so zipping them has a not-insignificant effect on our server. PDX bundles would have to be zipped anyway (since they're folders) so zipping might just be unavoidable—for this sort of sharing, anyway.

The long-term plan for Pulp installation is that you'd be able to push a game from Pulp directly to your Playdate, without thinking about files at all. As for sharing with others this way, we'd love to do it, but it does open up a whole world of security and moderation concerns; we're working those out and making sure we have the bandwidth to handle it before jumping in :slightly_smiling_face: