Extremely Online
Edited January 31, 2023
Another of my 2020 jam games. This one's pretty cool, I think. You can click the picture up there to play it, or see it over on itch.io where it was originally published.
Original devlog / postmortem post:
Another MiniJam entry, and the last-minute limitation almost hoisted me this time. Maybe I should just stop reading the themes ahead of time, so I don’t get married to an idea in my head and then have to shift gears when the jam starts. That said, the point of this whole exercise, if there is one, is to make a bunch of games, not to follow a bunch of rules. The constraints are tools, not supervisors.
Anyway. The theme was “Internet.” I have extremely fond memories of first getting online in the early 90s. My first experience of the Internet was also my first exposure to the UNIX command line, and I had to learn by just randomly trying stuff. “mail” seems like it should be something. Hey, turns out this is how you do e-mail. At some point I tried every single letter command in sequence, and I learned you could type “w” to see a list of other users on the system and what commands they were running. This broke it wide open. I saw people using archie, and gopher, and a newsreader, and a randomly named executable in a temporary directory that was secretly a copy of the IRC client, which the sysadmins couldn’t officially install. I wanted to make a game that included that “w” moment.
I was thinking about the kinds of programming I’m comfortable doing, to try to figure out how to best get outside of that mindset. BASIC, PHP, the internal scripting language for the Loathing games -- the thing they all have in common is that they are essentially turn-based. The states are “present output” and “wait for input.” This is also the kind of game I like to make, I guess, but who can say which direction that causality flows. (NOTE: The scripting language in the West of Loathing engine is NOT actually limited to this kind of behavior, it's just the kind I use it for most of the time.)
I knew I wanted to use Javascript, because I want to keep stepping on that thumbtack until I get used to it. Javascript, like most modern languages and engines, assumes you want things happening in real time, not the call-and-response mode I’m used to. I had the idea to split the difference -- a game where you issue commands one at a time and seeing the results, but one where stuff is also happening in real time because there are other agents besides the player. Like a MUD, or… a multi-user UNIX environment in 1993.
Just Ice was turn-based in its gameplay, but the display happened in real time so I could animate the fairies and orrery bits in script. There was no reason stuff couldn’t have been happening on its own, there. This game has a similar loop where it just draws whatever is supposed to be on the screen 10 times a second, and autonomous processes collect player input and the actions of AI agents.
I had always assumed, for some reason, that it would be impractical to include a comprehensive(ish) English wordlist in a Javascript program, but I tried it and… it was fine? Not sure what that hangup was. This allowed me to turn the hacking and social media elements of Extremely Online into word-based minigames. (Side note: How the hell does Javascript not have a built-in function to tell you whether a value appears in an array or not? Christ.) I also tracked down some of Chris Moyer’s code from a previous project, a JS implementation of a basic version of our madlib system for generating procedural text. This will come in handy in future jams.
The last-minute limitation of the jam was “everything dies in one hit,” which I kinda assumed I’d have to just ignore since the game I was planning had nothing in it to kill. That limitation gave me the idea for the ads, though, which I think turned out pretty cool and funny.
I don’t care too much about the ratings these games get in the jams -- I know this stuff isn’t going to be broadly appealing. That said, I did get annoyed with myself when Just Ice got a zero in the sound category, on account of having no sound. Fair enough, judges. I don’t really enjoy doing sound design, so I decided I would spend exactly one hour on it for this project. Deciding that the kid using this computer had installed a pirated NES sound pack made it way easier to steal assets. I mean easier to source assets.
I do feel like I’m getting more comfortable with Javascript. I spent less time banging my head against basic syntax stuff this time around. Maybe next time I’ll force myself to learn how objects work.