Shitty Wizard Installer and the Allure of Becoming Sandpaper

Shitty Wizard Installer and the Allure of Becoming Sandpaper

By Katie

Shitty Wizard Installer is a clicker game intent on arming you with the tools of your own destruction. The game starts with a Disclaimer, and if you’re like me, your eyes can’t help but glaze over the wall of text beneath to find the inevitable checkbox. Our first clue that something’s amiss is when we scroll down to find the classically vapid and perfunctory “Agree” checkmark is replaced by an option that is both antagonistic and true, “I don’t care.”

This subversion prompts me to read the disclaimer and discover that I am not agreeing to any kind of license agreement. Instead I am: 

“If you are still reading this, you are acknowledging that the team responsible for this document is not aware of the efficacy nor the utility of such a document”. 

It turns out that all this text box wants to tell me is that nothing will actually be installed on my computer (despite the window box title including the word “installer” and also claiming it will install a game called “The Gobbler). Well, ok!

After a failed install attempt, I’m told my only course of action is a dreaded Manual Install. Proceeding opens up the “manual install wizard” which is a façade. This isn’t an installer, it’s our game UI. Like universal paperclips or cookie clicker the only action available is individual clicks, 1 Click = 1 Installed Bit. Setting this game inside an imaginary Windows XP era install window opens up a context for clicker games that felt novel and worthy of further discussion. While it’s hard to play universal paperclips and cookie clicker without your mind drifting to the all-consuming nature of capitalism, Shitty Wizard’s scope is much smaller. Even in its most mature stages, we’re still just installing a single program on a single computer, there are no catastrophic consequences. Being asked to perform a manual installation is something that would cause most users to roll their eyes and huff in frustration. The automatic install is easy and a manual install introduces unexpected friction into something you thought would be automated out of site. Even calling the installer a “wizard” promises a technology sufficiently advanced as to be indistinguishable from magic (Arthur C. Clark, eat your heart out). But in the case of Shitty Wizard Installer, the friction is where the fun is. 

Even when we start unlocking upgrades (auto installers, super installers, so on and so forth), the gameplay decisions I make hold a radically different emotional affect than the one I experience as a user stuck doing a manual install. As a player, I’m making judgement calls about whether to upgrade now or save up and enjoying the benefits and consequences of my decisions is engaging and activating. As I fill up progress bars, the sisyphean task of reaching 100% brings me all the joy that Camus promised. If you’ve played a clicker before, you know what I mean.  If I was asked these same questions as a user, I would squint my eyes at the screen, fretting what consequences a button press will have for the longevity of my computer. I’d be sighing and throwing my head back in annoyance. I would like my computer to just work, please.

After about an hour, I finished the “installation”, got my final score, and the program closed. It was fun! If that were the whole game, I’d recommend it wholeheartedly to anyone who has had their mind boggled every time the installer progress bar went backwards. Though, Shitty Wizard Installer has a little more on its mind. There’s another feature that, to me, feels intent on exploring the divide between what is and isn’t play. Thorough readers of that earlier mentioned non-EULA Disclaimer will learn that Shitty Wizard Installer comes with a REST API.

For the non-software inclined, that stands for Representational State Transfer Application Programming Interface, and you don’t need to understand what that means because I have a handy metaphor for you. Think of a REST API as a little guy who runs back and forth between you and the software and says “HEY, STEVE WANTS TO KNOW HOW MANY BITS YOU INSTALLED SO FAR!” and then runs back to you with the information. Normally, I’d just look at the UI, but the magic of the REST API is that now I can write my own little piece of software that can send the little man back and forth on my behalf. I no longer need to be looking at the game UI at all. We can theoretically write a piece of software that looks every second to see if we have another bits to make the next upgrade and if we do, it will buy the upgrade. Actually, not theoretically, I did it. For the software inclined, here, try it yourself!

import requests
import json
import time

url = “http://localhost:1414/AutoClicker”

def get_state():
    response = requests.get(url, params={“get_state”:”full”})
    return response.json()

def get_bits(response):
    return response[“Score”]

def click():
    requests.get(url, params={“click”:”true”})

def upgrade():
    response = requests.get(url, params={“upgrade”:”0″})

def upgrade_algo(response):
    bits = get_bits(response)
    upgrades = response[“Upgrades”]
    for upgrade_idx in range(0,len(upgrades)-1):
        if upgrades[upgrade_idx][“Price”]< bits:
            requests.get(url, params={“upgrade”:str(upgrade_idx)})

while True:
    click()
    response = get_state()
    upgrade_algo(response)
    print(get_bits(response))
    #print(json.dumps(response.json(), indent=4)) # see all gamestate details
    time.sleep(0.1)

To the chagrin of true coders, I used python because I crawled out of the seedy underbelly of data science, but example code is example code. When run, this code will look at the number of bits available and make the first affordable purchase. This is definitely not the most efficient way to beat the game and I leave optimization as an exercise to the reader. (Just note that the commands and localhost port no longer match the docs as of my writing. Refer my example code and confirm with the game’s accompanying console window).

The most interesting thing about this code snippet is how I felt while writing it. When I started, I found myself experiencing that user frustration I talked about earlier, as though I had been asked to do a manual install after an automatic install failed. Setting up an environment, finding the correct port, remembering what libraries I needed,  it was all, if I’m honest, a little laborious. Even during the process of actually writing the code, there was a lot of trial and error, I found myself wondering “Is this the best use of my time? I should be writing the article right now, not dinking around here.” But, like so many coding projects, it had an almost addictive quality. I kept thinking “I’ll just try one more thing and then if that doesn’t work I’ll give up.”  Now, watching the progress bars fill up as my little program runs, I find myself beaming with pride at what is essentially a particularly drab dippy bird for my desktop. Each small success was rewarded with a little jolt of dopamine, not unlike the propulsory feeling one gets when playing a clicker. The negative friction I experience as a frustrated user was transmuted, alchemy-like, into the positive friction I crave as a player. 

Shitty Wizard Installer illustrates how permeable the definition of annoying daily-life friction vs. engaging gameplay friction can be. Yet, an increasing proportion of daily life is about paying someone else to automate that friction away. As I wrote this very script, VSCode kept quietly nudging me to let me know I could leverage the built in AI Code Companion to simplify the process. No thank you, Cursed Clippy! Using AI Code Companions to remove friction from the process of making something is exactly what I’m talking about here. Even if you see yourself as the author, you still had the pleasure of paying Anthropic for the “privilege” of creation. The friction is gone, replaced with a price tag. As a woman, this phenomenon feels like it’s creeping out of my screen and into the real world as I’m advertised products on social media that will smooth my skin, tune my face, and cover my blemishes. All acts of smoothing out my appearance, removing the friction on my face for a nominal fee. The message I get from this is that the market would prefer for even our physical form to become a smooth frictionless surface. The end state here being some kind of… greased, silicone, egg?

Digressions about turning women into eggs aside, I am dismayed to watch opportunities to experience friction replaced with pay-to-smooth alternatives. However, I am also forced to admit that limiting myself to the real world alternative of just using the manual install button, 1 click=1 bit, also doesn’t seem practical, and it denies the reality that sometimes, yes, I do just want life to go smoothly. Sometimes, I want tasks to be automated. Shitty Wizard Installer emphasizes an important nuance to this age-old debate over the ethics of automation. The question isn’t over whether or not it is good to automate, the question is who “gets to” automate. Because the fact of it is, automating things is fun! Clicker games are built on this principle. The fun comes from our shared drive to reach that moment when we can sit back and just watch the game play itself because of the decisions we, the player, got to make. The act of automation itself is a form of play. Why are we paying people to remove an opportunity to have fun? We should be the agents of smoothing, not the subject that pays for the privilege of being smooth. By playing a game that explicitly frames something as technical and practical as an API as gameplay, I am reminded that it’s not that I want my life to be without friction, it’s that I want to be the one to remove it. I want to be the one smoothing, helping to shape reality and making my world as perfect (or imperfect) as I want it to be. Featureless smooth silicone eggs can’t do that. I want to be sandpaper, a rough, intentionally imperfect, agent of smoothing. Fuck AI. Let’s be Sandpaper Together