Pulp Game Devlog: Playcee's Mod

This is a fangame implementing Inscryption mechanics (basically a collectible card game) in Pulp/Playdate. I'm pretty exhausted from getting this far, so a better description and videos to come. Still, here is the opensource game prototype:

No tutorial, and it isn't made to be fun or challenging yet, but it shows how things work. Hit the bell (on the left) to start combat. Try the crank!


Changelog below, or just watch the video:

​Playcee's Mod 0.7

Playcee's Mod has been in development for over a month now, and it is finally getting close to being playable for fun, and not just as a tech demo.

The last two weeks have been hectic, with Covid playing a big roll in my life and little programming happening. Prior to that, the game had implemented creatures, AI (meaning the ability to automatically play creatures in the enemy slots and "preplay" the enemy's next turn creatures), card-art, and the ability to scroll up and down with the Playdate crank to expand the viewable screen real-estate.

During the two-week hiatus, I mostly worked on art, nailing down how to fit sigils(icons representing card abilities) into 8x8 pixels and doing a pretty good job on some art (cat and squirrel), and a very poor job at some basic wolves. This could be done offline.

Over the last five days I have dramatically expanded the back-end of the game by adding:

  • a deck, which cannot currently be viewed but exists in the game logic
  • a shuffle function for the deck
  • card drawing to start the game, and the ability (requirement really) to draw either a deck card or squirrel card so long as the respective deck still has cards.
  • A flexible hand
    • The hand grows to the right (beyond the screen) and can be scrolled right and then back to the left to view the full hand.
    • The hand shrinks when cards are played, and grows when they are added
    • The hand works at any arbitrary size up to a maximum (currently 10, but easily expanded to the goal-size of 50, if the CPU on the playdate can handle it)
    • The hand recognizes when a player tries to draw a card that would exceed the maximum hand size and stops it.
      • Eventually a function will force the player to discard (destroy) some cards once the maximum hand size is reached. In Inscryption, the player's hand only exceeds 50 if they are engaged in a game-breaking card duplication loop, so they will have enough duplicates in hand to be able to destroy 10 or so without affecting the game outcome.
  • sacrificing
    • As in Inscryption, cards with a cost above zero are paid for by sacrificing other cards. That function has now been implemented. Unfortunately, it can be a little hard to see in the video since the card cost is not yet displayed in the game.
  • Highlighting cards that are selected
    • MANY more animations are needed to make the gameflow clear, but at least you can see which card you are selecting.
    • Unfortunately, currently the same highlight is used for choosing a card to be played and for choosing a card to be sacrificed. That needs to be changed.
  • Leshy's AI was upgraded to appear more similar to the real game (though it is not a true copy at all).
    • Now Leshy plays random cards from a set defined at the beginning of the match, but occassionally plays no card, as he frequently does in the game.

I've also started thinking about new content to add once the project has fully de-made Kaycee's Mod (the mode of Inscryption being imitated). I will probably add my own fan-story to the game as it develops, since many key story elements in Kaycee's Mod only arise through functions that I will implement very late in development. After development of the true de-make is finished, I will probably shift my fan-story into a secret mode, along with characters like Squiggle, who a friend made as a 1-bit art project.

Some of these non-canon edits will be

  • Making secret unlockable cards

    • Squiggle will probably be unlockable by flipping the playdate facedown before starting the game. Shhh, don't tell! The artist suggested some elaborate animations for his tentacles that just might be achievable with the playdate CPU.
    • Secret unlocakble cards may have on-card animations. Inscryption had some very minimal animations (they're too distracting to have too many), but Squiggle at the very least will wiggle his tentacles on his card once every ten seconds or so.
  • A similar function to the max-hand-size block will be implemented for exceeding the maximum deck size (currently 10, to be increased to 25).

    • Exceeding 25 cards is difficult or impossible and very poor strategy in Inscryption. Still eventually Playcee's mod will have a function that treats all cards beyond the maximum deck size as a card called "gluttony."
    • I haven't decided if gluttony will be bad or good. If your deck exceeds 25, you're probably in a rough spot since your deck is full of garbage, so maybe good? Then again, you can only do this by earning tons of currency and intentionally ballooning your deck, so you're more likely to be an experienced player messing around.

Before that though, a lot is left to do. This todo list will be updated as items are crossed off:

  • Make todo list
    • I'm way too tired after editing the video and writing all this out. Todo list TBD.
1 Like

The latest update, 0.9, is a doozy. It takes the project from a demo to a game, and is actually pretty fun to play, and challenging depending on some RNG. Check out all the gameplay details here.

A serious issue arose as I closed out this update: after adding a ton of visual improvements, about 12 new cards, new art, and making alterations to the draw functions (to avoid using "while" when possible), it looked great on the web emulator.

It caused a full system crash on the Playdate. The crashlog was a bunch of text about the "random" math function not having a second variable (as in, it was "random 1,..."). This was obviously not the case when I wrote the code and ran it in the emulator, so I had no idea what to do.

It only happened on the second and later card-select screens, never on the first one and never during a round of gameplay. I ultimately had to hunt down every random function I was using on each of the card-select screens and remove/replace them. I shifted the randomization functions to other parts of the code, and I tried to front-load the randomization (like a randomizing seed) in case it had something to do with running random after already calling so many variables.

Ultimately, I also cleaned out a bunch of leftover code that came about from copying rooms that served different purposes. The card-select screen had a bunch of events related to combat (which doesn't happen on the card-select screen), and it had "shuffle deck" written into the "enter" event. I left that originally because it doesn't hurt to shuffle the deck before adding new cards, but it wasn't necessary either. The extra uncalled events were similarly unnecessary but (in theory) harmless.

Between rewriting my randomization and removing those leftover lines of code, the problem was fixed. Unfortunately, the current version has shuffled rather than random card pools (meaning no card can show up twice at the same time), but the game runs.

I still have no idea what caused the issue; every line of code that I removed from the second card-select room was also present in the first card-select room, which never caused a crash. The borked copy of the code (before I restructured it) is attached, if anyone wants to take a look. Again, this runs fine in the web emulator, but crashes on the playdate (and refuses to compile if pulpmilled, and sometimes throws errors in the desktop simulator).

Playcees-mod-0.9_20220803005341.zip (197.7 KB)

The big lesson I learned is: test on device as frequently as possible, so you can quickly identify which version introduces strange errors like this.

1 Like

great, after seeing your description of this game i think it is what i was looking for i really like apk mod games like that