P2: Wisps


Graciela Smet


Wisps, as the title page suggests, is a game about the absurdity of labels. In the game, the player goes through a dream in which they’re filling out a form online, a mundane task that we do every day, filling out multiple choice options to capture their identity. In the dream, a crow flies in through the window, perches on their desk, then begins taking words from the screen. One by one, the player confronts each word that they had chosen earlier, each label, and is given an opportunity to exchange it with the bird for an absurd “gift” that replaces the text on the screen. This core loop continues until either the player has removed all their labels or until they decide that they’re happy with the “identity” that remains on screen. At this point, the player wakes up, and the dream game is complete.

In brainstorming the premise of my game, I was immediately drawn to the aesthetics of magical realism, especially by the short stories of Haruki Murakami and his story “Confessions of a Shinagawa Monkey” in particular. I knew that I wouldn’t enjoy nor be good at writing a “traditional” YA dystopian story without it feeling cliche, so I instead decided to descend down a path of absurdity. In doing this, though, I set myself up for the difficult task of communicating something important through surrealist storytelling that I had never done before.

I decided that I would focus my game on labels and identity politics. In the midst of a job application cycle, I often feel reduced to a pile of words and labels, worried that I have to try to capture as much of myself as possible in such limited spaces. The checkboxes and multiple choices can all feel so arbitrary. As more identities become mainstream the lists and options get longer and longer, but in my opinion it doesn’t solve the fundamental problem of trying to categorize the diversity of people into discrete buckets. In a more political sense, these categories can erase nuance and attempt to simplify complex narratives, and in an age of AI where data is gold it can be scary to think of people just as quantifiable and distinct instead of multifaceted. However, I also recognize the value of labels to people in offering them control and solidity in their identity, so I wanted to make sure that my game also allowed players to hold on to what they felt was important to them.

The Game

Play at: https://wisps.gracielasmet.com/

(Note: It’s best played on a full size browser window so everything displays properly)

Playtesting and Iteration

Prototype 1: Scratch

Initially, I dived right into Twine and tried to start building my first tiny playable prototype on that app. At this point, I had put together that I wanted to do a game inspired by Haruki Murakami, where labels are “stolen” and replaced with absurd images. As I worked through Twine, I quickly discovered that what I wanted to do was just not possible on the platform, specifically with images. Thus, I went to my old friend Scratch and built my first prototype there.

In the first prototype, the player walks through a narrative in which they’re dreaming about filling out a form, then a swallow enters and they begin “pecking at” (clicking on) words, replacing each one with an image. The goal of this prototype was to see how people responded to the “abstractification” of identity into images and how that communicated my point, as well as how they felt about the bird. 

Playtest 1: 

  • Location: In-class
  • No. Playtesters: 3
  • Demographic: Different genders, all college-aged


In class, I got generally positive feedback about this first scrappy prototype! People really liked the abstract/surrealist vibe that I had going and were excited to see what came next, so I definitely wanted to make sure I stayed true to that original vision as I iterated. Generally, however, this initial version of the game lacked a clear player motivation behind choices. It also relied heavily on my verbal explanation of what my goal was. There was no narrative explanation as to why the bird was “stealing” words, and there wasn’t much weight behind any choice a player made. From here, in addition to exploring transitioning off of Scratch because of the low resolution, I knew that I would also have to further refine the storyline to add more player autonomy and make my message more clear.

Prototype 2: Scratch + Narrative

As I continued to evolve my game, I decided that before I moved the entire thing onto a new platform, I would focus on refining the narrative. In attempting to give more weight to the player choices, I had a couple different options to pursue. 

In one idea, I considered giving the bird more of a backstory and allowing players to enter the dreams of different people to steal their labels, perhaps with a goal of restoring the bird’s home in a “liminal space.” I ended up deciding to flesh out my second idea: instead of having the player play as the bird, have them play more as the person in the dream. Rather than the bird choosing at random which labels to steal, the bird would present the player with one of their own labels, giving them the choice to either keep it or let the bird replace it with an absurd alternative. This core loop would continue until the player was happy with the “identity” that remained on screen.

Since I still wasn’t sure that I’d be able to do my idea of images in Twine, these prototypes consisted of a playthrough of the initial Scratch narrative to understand the visual aesthetic that was to come, then a playthrough of a limited Twine narrative that showed the intended core loop. Combined, the goal of this prototype was thus to determine if my narrative was getting closer to capturing the message I wanted.

Playtest 2: Elyse

  • Location: In class
  • No. Playtesters: 1
  • Demographic: College student

Playtest 3: Nick

  • Location: At home
  • No. Playtesters: 1
  • Demographic: 21-year-old man


I played through the demo first with my friend Nick, then in class with Elyse. Instead of trying to explain my goal, I let them each play through the two demos, explaining briefly how they overlapped, then had a discussion about what my intended purpose was and what they thought about a) the visual aesthetic and b) the narrative, then c) how they supposed my goal. Again, reception to the visual aesthetic was positive from both participants, and they both liked the fact that they would be given a choice as to whether or not to abandon a particular label. However, both agreed that there was still room for improvement in the narrative. Elyse asked me some really strong questions to help me hone in on what exactly I wanted to convey, namely: Is the goal to abolish labels or to highlight their absurdity? Is the goal for the player to create an identity that feels more “true,” or more “absurd”? Is the image supposed to “replace” the label? She also suggested that I add in something to wrap up the game better and leave the player thinking, perhaps a moment where they wake up from the dream and realize that the forms in real life haven’t adapted to the flexibility and absurdity of the dream.

From here, I knew that I wanted my next prototype to be stand-alone and all-encompassing, combining the core narrative loop with the visual aesthetic explored in Scratch. As I brought it all together, I reflected on Elyse and Nick’s feedback and questions and planned my higher-fidelity prototype to respond to these concerns.


Prototype 3: React

In choosing such a complicated and surreal idea, I inevitably shot myself in the foot since Twine had limited functionality to be able to do what I wanted. I had to code the entire thing out of nothing using React, but in the end this flexibility allowed me to get as close as possible to my original vision. To ensure that I held true to the vibe of interactive storytelling on Twine, I modeled my React app after Twine, creating a dictionary of messages that displayed on screen with hard-coded links bringing players to different screens depending on the decision they chose. To plan this out, I created a FigJam board to map out all the necessary screens and their key values. It was honestly way more time-consuming than I thought it would be to code, but it was worth it.

The two most important features of the React prototype were a) that I could display images inline with overflow and b) that I could display the “identity” on screen at all times. The first allowed me to achieve the absurd/surreal effect that I was going for, with text and images overlapping, while also in a practical sense ensuring that the chosen photos weren’t too small. The second feature was an important narrative detail that ensured that the player is focused on the identity at all times. I wanted to make sure that even as players make choices and new messages are displayed, their previous choices feel constant and that they’re able to see this progress and status at all times. Below, see a screenshot near the beginning of the narrative, when the screen first appears, and a screenshot further into the narrative where the player is being offered a decision about the label.

Within the expositional narrative, when players are filling out the form, I added in a moment where it explicitly says that the options feel limited. I decided to force players to click through the cycling options a certain number of times before the message would give them an option to continue, with the goal of encouraging them to fill out the form with answers that reflected their real-world answers. To make sure that they kept filling it out even if the message appeared, I put the link text on the word “finish.” This design choice made the choices later on even more weighty as they were labels originally chosen by the player instead of pre-filled by me.

Now, the prototype was fully functional as per my original vision, consisting of a short exposition like before where the player is in a dream and filling out a form with their background information when a bird flies in, then a core loop where the bird chooses a random word and the player has a choice to take it back or let the bird have it, at which point the bird offers them a choice from 3 gifts to replace it and the loop continues.

Playtest 4: Liv

  • Location: At home
  • No. Playtesters: 1
  • Demographic: Female college student

Playtest 5: Laura & Max

  • Location: In class
  • No. Playtesters: 2
  • Demographic: College students

Playtest 6: Jason

  • Location: At home
  • No. Playtesters: 1
  • Demographic: Male college students


I did a lot of playtests with this prototype, and because the prototype was so high-fidelity it was the most helpful round of feedback yet! I started first playtesting with my friend Liv, who I just handed the computer to and let run wild. Then, I playtested with Laura and Max in class: Max had playtested in the original round so his feedback on the evolution was super important. Finally, I sent my game to Jason, who played it asynchronously then gave me his feedback later in person.

Liv and Laura both told me that they were excited about the game but that they still didn’t quite understand it without my intro at the beginning that it was a game about the absurdity of labels and learning to let go of self-categorization that we feel doesn’t apply to us. Max, who knew my premise from the first playtest, felt that the narrative and mechanics were much stronger than at the beginning yet agreed that the “seed” of my idea could be planted earlier and made more explicit. Laura thought that an end state wasn’t necessary because players could step away when they felt content with what was on the screen (as she did in the playtest), but Jason was confused about the endless loop of choosing words and thought it was a bug. Laura also told me that the loop became less effective after the first one or two passes, as she stopped reading the text and was just clicking through screens to get to the meaningful actions.

Some moments that I observed that weren’t explicitly mentioned to me were that my design choices in the exposition were successful. Players had a moment of exploration when the screen first appears and there’s no underlined text to click on, but once they found that the blue labels were clickable there was always an “Ahhh” and a moment of delight as they began filling it out. To my surprise, all the players spent time on this screen filling it out honestly, which was great for the goal of the game. 

Thus, my conclusion from this prototype was that I needed to adjust the text in the game, make my target message more explicit, and make the core loop mechanic more intentional and not a bug.

Prototype 4: React (refined)

As I went into my final prototype, I made some key changes to improve the game. First, I added an intro screen to start the game, reading “welcome to wisps. a mini interactive fiction about the absurdity of labels.” With this, players have a short and sweet moment to take the game in instead of just immediately being thrown into the game, and I’m able to plant the seed of the game’s message at the very beginning. 

I made some big adjustments to the narrative to make it crystal clear what my intention was. I added a short intermediary message while the player is filling out the form at the beginning to provide explicit context about the options for labels feeling limited.

Next, I decided that instead of the bird choosing words at random, the very first word she picked would always be the exact same to give me a sense of control. I decided that no matter what, the first word that the bird picked would be the introvert/extrovert word. This felt like a good label to start with since I think it applies perfectly to almost no one, and I reflected this idea in the game. Now, upon the bird taking this first word, I explicitly call out the absurdity inherent in the label before offering the player the core loop decision, hoping to design it so that they choose to let the bird take the word. After they choose to exchange the word, I explicitly call out after the word the intended effect: that the sentence “made just as much sense either way”

Next, in response to Laura’s feedback about the loop being unnecessarily repetitive, I shortened the length of messages involved in the core loop after the first decision is made. During the second and third loops, I call out that once again the player is supposed to reflect on whether or not the label feels important to them to again explicitly reinforce the message of the game.

Finally, I added in an end state to the game, taking inspiration from Elyse’s suggestion during the initial playtests to build it in as “waking up” from a dream. If players exchange all their labels for gifts from the bird, to prevent infinite loop bugs and prevent players from getting confused if they reach this point and can’t continue. I also decided to offer the option to “wake up” even if a player doesn’t exchange all their labels to honor the fact that they might choose to keep some words that they feel especially connected to. To make sure that players understood the goal of the game, however, I decided not to offer the choice of “waking up” unless they’d gone through three core loops. After these three loops have been completed, instead of seeing the message above, they see a third option reflecting whether or not they were happy with what was on the screen. If the player wakes up through either of these methods, the screen simply shows the “identity” box, giving players space to reflect.

With these changes in place, I was feeling much stronger about my game’s ability to communicate its intended message, so I continued with one final playtest to test whether or not it was successful.

Playtest 7: Joyce

  • Location: In class
  • No. Playtesters: 1
  • Demographic: Female college student


In my final playtest with Joyce, I received a lot of positive feedback! There was one small bug where the loop would break after the third attempt but I was quickly able to fix it. Joyce said that she really liked the game and described it as simple but effective. Furthermore, she was able to correctly name the intention of the game. As intended, she chose to let the bird take the initial word “introvert,” but chose to keep some of the other labels on the screen since she said she didn’t want to let those labels go. This made me feel GREAT about the success of the game in sparking decisions that encouraged players to actually reflect on the labels they wanted to keep. One other small moment of delight was that when the screen appeared describing how the new sentence with the image made “just as much sense,” she let out a small laugh when reading the line about laughing, reflecting a moment of successful storytelling. We discussed the idea of an “identity playground” that exists outside of the core narrative to let players return and fine-tune the images and words in the identity screen on their own time, but limitations on time made this impossible. I did, however, make sure to fix that important bug to make the game playable.


I learned a TON throughout the process of making this game! Even though I chose something that didn’t make a ton of sense and required a lot more engineering time than I initially thought, I’m proud of myself for sticking by an idea that I was excited about and seeing it through all the playtests where I had to explain it. There’s also something exciting to me about putting a spin on the text-based IF, a digital tool that is inherently reliant on data, categorization, and using limited vocabulary to try to capture people, and I think the visual aesthetic is a really fun spin on the tool that challenges the expectation. Overall, like I said, I’m proud!

I learned a lot about how to refine an idea and communicate it through design choices. I think I initially chose a surrealist direction to avoid having to say outright “labels = bad,” and I’m excited about how much I was able to improve in communicating this idea through more subtle choices and language while still leaving a lot of space for player autonomy. I think my general creative practice leans a lot on abstraction of ideas to avoid having to directly verbalize it, so in a more general sense it was also a great opportunity to refine my skills in materializing an idea effectively. It changed a lot while still feeling true to me, plus I think (I hope) that my playtesters walked away with something!

Next time, if I were to do this again, I think I would’ve liked to explore more narrative options. While I’m happy with the effect that my dream loop mechanic had, I’m curious if other narratives in the same world could have opened up space for a longer story or deeper reflection. While I should say that React took a long time and I’d rather do it in something easier like Twine, I don’t think I would’ve been happy with the game if I had sacrificed that aesthetic and I also don’t think it would’ve been as successful. I’d make sure to continue to playtest early, even when it’s just a scrappy combination of Scratch and Figma, since these stages were still incredibly valuable moments of feedback despite not being high-fidelity. Maybe if I had more time it would’ve been cool to make some of the images small gifs or even add a soundscape to lean into the surrealism even more, but even if I go back to do that I’m happy with it as is! 

Thanks for the opportunity to try this out, and I hope you enjoy the game 🙂

About the author

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.