Exploring multisensory descriptions in Inform7

Over the past week I’ve been experimenting with different ways to make an interestingly playable game where the player’s point of view can be multisensory in various ways. So, for example, a character who is hearing and sighted would experience visual, sound, touch, and scent based room descriptions, while a Deaf character would not get the sound descriptions.

One way is to use Touchy Feely extension by Quantum Games. I ended up forking this and adding a few things to fix a couple of errors in the extension, and then adding more options as default descriptions for items. This extension builds in some commands like smell, touch/feel, listen, and taste. You can set the sound of a room, a person, or an object very easily just like you set the (visual) description.

With those rules, and a few others, I started writing rooms like this:

The Bedroom is a room.
The description of the bedroom is
"[if the player is sighted]A small room with white walls and some posters hanging up. The bed has a colorful striped bedspread and paisley sheets. The doorway is in the west wall.[end if]
[if the player is hearing] There is an air filter humming loudly in the corner.[end if]
[if the player is not sighted and the player is not hearing] A small room with a bed in it. The west wall has a wide doorway.[end if]"

The sound of the bedroom is "A loud air filter in the corner fills the room with white noise."
The scent of the bedroom is "The air in here seems very clean and fresh."
The bed is scenery in the bedroom. The description is "A soft, comfy bed. You give it an experimental bounce."
The pillow is scenery in the bedroom. The description is "A nice, soft, squishy pillow."
The bedspread is scenery in the bedroom.
The bedsheet is scenery in the bedroom.
The air filter is scenery in the bedroom.
The doorway is scenery in the bedroom.
The walls are scenery in the bedroom.

Things that are scenery aren’t described until you examine them. I wrote a general search command called (explore, or tap ) which conveniently lists all these “scenery” aspects of a room for non-sighted characters. Sighted characters have to examine them one at a time.

The problem with this method is that it is clunky and I’m repeating various elements of the room description. Ideally, I’d be able to replace a bunch of Inform7 behavior so that:
– Each room (and thing) can have a visual, sound, etc description.
– The game checks if the player has those senses
– The game concatenates the various sensory descriptions appropriately

This turns out to be difficult. I got into reading the Standard Rules (which, from the Inform7 IDE, you can see as an extension) and then realized what I wanted to do was basically happening in the Carry out looking (this is the room description body text rule): section of code. I thought maybe I could hack in a check on the sound of the room and print that.

But! This code refers to the Inform6 core of the game, with

To print the location's description:
(- PrintOrRun(location, description); -).

I tried copying THAT and doing something like PrintOrRun(location, sound), which didn’t work because location and description here are constants from Inform6, I think.
Not sure how to pursue this further. Maybe in future as I get more familiar with the guts of Inform.

So, I tried another way. I suppressed the room description body text rule like so:
The room description body text rule is not listed in any rulebook.
And copied it and pasted it into my example game with a slightly different name.

Carry out looking (this is the room descriptions body text rule):
if the player is sighted:
if the visibility level count is 0:
if set to abbreviated room descriptions, continue the action;
if set to sometimes abbreviated room descriptions and
abbreviated form allowed is true and
darkness witnessed is true,
continue the action;
begin the printing the description of a dark room activity;
if handling the printing the description of a dark room activity:
now the prior named object is nothing;
say "[It] [are] pitch dark, and [we] [can't see] a thing." (A);
end the printing the description of a dark room activity;
otherwise if the visibility ceiling is the location:
if set to abbreviated room descriptions, continue the action;
if set to sometimes abbreviated room descriptions and abbreviated form
allowed is true and the location is visited, continue the action;
print the location's description;
if the player is hearing:
say "[sound of the location][paragraph break]";
otherwise:
say "[feel of the location] [scent of the location] [taste of the location] [paragraph break]";

Because I’m not using the “print” function the sound and other sensory qualities of the room are described under the actual room description. That might be OK but now I need to learn how to elegantly write a room description that is broken out into visual, sound, and other qualities. I also need some kind of bare bones description that doesn’t show to the player unless the player character is deaf-blind. This will take some practice to learn to write well, and some more refining of how I show which bits of the descriptions.

Note that I will probably be adding in low vision and hard of hearing (by taking the visual and sound descriptions and munging them a bit.)

Building accessible infrastructure into writing and coding style

As you may be aware by now, faithful reader, I am obsessed with my game, which is set in the Bay Area on and around the BART train system. It is science fictiony and magicky, with time travel and weird stuff abounding. I set out with the intention that the player should be able to pick a mobility level and sightedness, possibly in elaborate gradations but for now, at a minimum viable level, the player can choose to be walking or a powerchair user, and blind or sighted, in any combination. For the powerchair character, they can’t do stairs and that’s about it. The blind player (simulated at this testing phase by providing the player a pair of wraparound mirrorshades) will have the “look” command replaced by listen *(maybe) or all room, object, action, and NPC descriptions will have non-sight-based descriptions.

Just as a note, I have not written the system yet for cane tapping but that will likely be integrated.

I am finding it interesting to try out the alternate description route. For example here is a super easy case where the description is written to make it very flexible, with only one word difference in the description:
The description of Calle 24 Northwest Corner is "A busy corner at a busy intersection. You can [if player is blind]hear[otherwise]see[end if] a steady stream of cars, buses, and people passing by."

Or, a little bit longer example,

A flower seller is a person. In Calle 24 Southwest Plaza is a flower seller. The description of a flower seller is "[if player is sighted]A short, smiling woman in a baseball hat and a red checked scarf pushes her wheely cart full of roses and carnations. Her jacket has a ladybug pin.[otherwise]You can hear a short woman just next to you, fussing over a metal cart.[end if]".
Every turn when the player can see a flower seller:
say "A flower seller [if player is sighted][one of]beams at you with a huge happy grin[or]watches the people passing by[or]smiles as she stops to talk with a friend[or]offers you a little bunch of carnations tied with string, saying 'Flores para ti?[otherwise]calls out, 'Flores!'[or]'[or]shares a coffee with a friend, chatting[or]fusses over her bunches of flowers, arranging them nicely[end if][as decreasingly likely outcomes]."

It becomes clear to me that I have to train myself to structure the experience of the reality of the game in particular ways. I might establish a convention (enforced with tests) where each thing defined in the game is required to start with a description for the blind point of view character, then have a description for the sighted. Each clue for the puzzle needs to be playable both ways, as well, and both should have a richness and depth of experience that makes the game fun & action compelling, hinting at possible avenues to explore. So, it will affect how I design the puzzles and clues as well as just some sort of “layer of extra text” to think through. One result is that talking with other characters will likely be more important than it might have been otherwise.

This shows very clearly how important it is to design an environment (whether it is a game, a novel, a class, a web site, software, a real life building, or a city street ) with the point of view of different people in mind. Having written only 6 sample rooms and couple of NPCs and objects and their behavior, I’m very glad that I’m doing this now, and not trying (as so many designers, programmers, and architects do) to staple on a half assed ramp or some probably flat braille a month before finishing a 2 year long project.

Happy Discardia!

I did some decluttering today, setting out some clothes and books on the free shelf outside and throwing a bunch of things away. There are also several bags of things to go elsewhere (to friends, to my sister, birthday presents for birthdays coming up, stuff that needs some sort of errand to deal with it) so that those things aren’t on the living room floor.

From underneath the bed I hauled out a box the size of a couple of shoeboxes full of junk that had been cleaned out of drawers probably years ago. More than half of it was trash and the rest is now put away.

Cleaned out under the kitchen sink where it smelled funny and was full of junk. Cleaning supplies are more organized now. Half the paper bags stashed down there are now recycled.

I also ironed my handkerchiefs, which I find oddly satisfying, and laid them neatly into a tiny cherrywood drawer.

Huzzah!

Danny just came in, looked around, and went, “Holy shit! Low level defragmenting, reformatting!” (Very true. That’s exactly what it’s like.)

In game progress, I added a ticket reader and BART ticket. The ticket is a device, which may seem odd, but swiping it turns it on and off to signify if you’ve paid or not. There are “switching on” and “switching off” actions in Inform7, and they’re separate, so they needed some extra logic to handle a new more generic verb (swipe) that flips the state from one to the other, depending, while not giving any weird extra messages about it.

So many good ideas in the last few days – I have a big file of ideas to stuff into the story and its infrastructure.

It’s helping to scope out issues to work on in github, with milestones, so that I can bite off small things to work on when I’m tired or only have half an hour. The complicated stuff has to wait for the weekend.

While reading the Standard Rules defined in Inform7 I came across this amazing line of code:

The darkness witnessed is a truth state that varies.

Kind of spooky, isn’t it?!

Pacifica side trip

After work I went off with seelight to have a sandwich and catch Pokémon at the beach. We looked for whales (none) and discussed geography, geology, clouds, games, and she told me there is a novel about magical BART. Or something. I only found this decolonized BART map so will ask her later about the book.

A woman standing by us at the cafe counter when “Funkytown” came on the radio sighed and said “You just want to put on those roller skates!” and I had just been thinking the same thing and remembering myself swinging about the roller rink with my feathered hair, my blue eyeshadow, my metallic weave buttondown shirt, white jeans with my name embroidered on the pocket, and a skinny stretchy gold metal belt (you know what I mean? sort of snake textured, like a cord where one side is flat). The belt buckle was a green roller skate. Probably, I was also drinking a “suicide” which was getting a soda with all the soda flavors mixed together. The junior high mocktail of my people. You felt badass skating up to the counter, like the fucking Continental Op but 3 feet high and on skates, leaning on one elbow to mutter to the bartender, “I’ll have a suicide“. I had mentally put the lady at the counter in a “older person” category as she had long grey hair and was leaning on a cane; go figure, we are likely less than 5 years age difference; my hair is half grey and I’m in my wheelchair. I enjoyed the moment of our gentle mutual reminiscing. The song is so perfectly evocative of a specific time.

A walk down the pier, where we watched fishermen, the sunset, the waves, the fog, the stripey layers of clouds that looked like both Jupiter and lasagna when photographed with my phone camera up to one lens of my binoculars.

sunset through a rounded lens

On the way back to land, Claire was like omg there is a … Grundleoot or …. I’ll be damned if I know what it was, but some powerful pokemon I had never even heard of, as the pier debouched into the street. We decided it was too tough for the two of us. But right around the corner a little knot of people were under the streetlights in a familiar configuration, a half circle, thumbing their phones with fervent concentration – they were catching the whatever it was, in a raid. We joined the stragglers and caught it too. The group then went off to reconvene at a church somewhere to the south to get a Kyogre, hitching rides with strangers and timidly Friending each other on the app. Tempting but…. I was tired. Yay now I have, well, one of those. Grundhorn? Groundlarg? I don’t want to get up and look at my phone.

Rewiring brain for new code

What can I say – I worked on my game all day again today. It was great. The feeling of seeing the entire huge structure holographically and knowing (more or less) what to do and how to break it down into pieces is just glorious. I’m all fizzy with ideas at really random times.

I spent some time trying to understand some excellent advice on the interactive fiction forum and halfway got there. Then needed to chill out a bit and let it percolate, so I worked through some of the examples in the inform7 manual and played around. At some point I realized a different way to approach the problem and plunged back in, making my magic elevator a room again instead of a vehicle.

Finally got that working around 6pm. But only imperfectly. Then had another epiphany, threw it out and refactored it again and now it is seamless! I thought of some good improvements and noted them as issues for later.

However, I still have to solve the original hard problem because my rideable vehicle (ie a wheelchair) has to be able to enter and exit another vehicle (the train.) It’s still satisfying to have the elevators work so neatly, in the meantime.

Danny and I went grocery shopping, he cooked (lamb with mint sauce and roast potatoes) and I cleaned up. He is still muttering into his beard about Lisp and stuff but I was too sunk into my own thing to know what about. A cosy and fabulous weekend.

Considering elevators

Yesterday I worked on my game for a while and we went to a friend’s (fan)vid watching party. Along the way we came across Orquestra de Calle 24 and people dancing in the BART plaza, then the entire Women’s March once we popped out of the station at Powell. Thousands of people with signs, drums, & that spine-shivering thing where you hear a cheer begin way down at another end of the march and it travels up and passes you like a wave!

The party was in a gorgeous building, the Medico-Dental building, and I assumed it was someone’s friend’s office. It was a dentist’s office with a huge screen TV and interesting decor – not at all dentist-y feeling – Odd things like a table made of what might have been an aluminum alloy cast of a gnarled section of a giant tree – Rococco chairs and mirrors and silver trays but then also a raw unfinished wooden beam with orange paint “MEETING ROOM” under a CAUTION HARD HATS REQUIRED sign. As we were leaving I found out that it was booked using something called Peerspace. Huh!!

It was nice seeing everyone – the vids were amazing – And I had fun dressing up. I had some doctors appointments near there and went into the Sephora to look for a specific shampoo and lotion – having never been in one of those stores before. And I was like Oh holy fuck I don’t wear makeup, like, I own one lipstick and an eyeshadow, but, now I want some because it is all strangely alluring and pretty and looks like candy. That was a couple of months ago and since then we have all been putting on “cyberpunk makeup” and now I own 4 colors of metallic matte lipstick (Fenty has a nice pencil one, but I like the Anastasia liquid matte a lot better.) So I busted out that stuff yesterday and had fun with it. Lipstick seems to have advanced since I last really wore it in like, 1990. It stays on and is not bothersome. As long as I feel properly like it’s a fun game and I’m in drag, all is well. Not really into it otherwise. (It is GLAM BUTCH CYBORG makeup.)

liz in silver blue lipstick

And, today I figured out a way around a problem that has been bugging me. I had modeled an example elevator which went between two floors, based on the simplest example in the Inform7 recipe book. Couldn’t figure out how to fix the logic to make it go to three or more floors, and also, with that and the more complicated elevator example (a skyscraper in Dubai) and a third way I thought of, I would end up with the problem of having to write 100 uniquely named elevators, each with their own logic. That would be tedious and make the code unnecessarily bloated so I have gone another route.

Instead of having the elevator be a room, I made it a vehicle, and put any room where the elevator could possibly be, into a region called Liftlandia. If the player is in the Liftlandia region, then the elevator is in the location of the player. I had to start it in nowhere, and haven’t quite gotten it to appear on the first time the player enters a room in Liftlandia. But, it works. If you try go up or down in Liftlandia (because you see stairs) it doesn’t let you- you need to use the elevator. Once you’re in it, you can go up and down to the rooms in whichever direction it’s possible.

Now, I’d like a nicer way to have the player push a button to go to the desired floor. With my ‘magic vehicle’ solution, I can write in a P, C, and S button (for Platform, Concourse, Street) and they are pushable. I’m not quite sure how to have the buttons take you to the correct place but it should be possible.

Along the way I also had to abandon my desires to build a nice simulation of the real life map because it was a huge pain in the ass and I am aiming for a different level of abstraction. Not without a pang but already you see that I have to have at least 3-5 “rooms” for each of 52 stations (platform, concourse, street, and likely something extra like more outside locations, or secret rooms in the stations, or whatever.) Mapping each station expanded that to like, 20 or more locations per station.

I started adding some NPCs with simple behaviors and I may try next to add “scenes”. For example, I’d like musicians to wander by, or, for some kids to get on BART and set up to dance and pass a hat and for stuff like that to happen randomly. Some NPCs or scenes would happen in particular locations and others might wander.

For the actual game aside from my mechanical difficulties, there will be magic and time travel, I still want to simulate various mobilities and sightedness states, and I have a sort of poetic mood or atmosphere in mind which stretches back to a book I never really wrote called The Secret Life of Buildings but which I could describe as a holographic vision of things that will lead people to see the city around them differently, and love it more deeply. (And to look things up.) We will see. And, I’m still working on another game with Milo. I may start systematically pasting in, running, and modifying each example from the Inform7 recipe book, as it is very helpful way to learn to make complicated things happen in the game.

The magic spells of engineering

Last night we watched the first two classes of Hal Abelson teaching Structure and Interpretation of Computer Programs in 1986 and they were sooooo amazing.

Danny remarked that this is a great example of teaching a beginning lesson in a language with math while most other intro-to-a-language-via-maths fall flat.

All the stuff about magic is just beautiful (and true).

So as opposed to other kinds of engineering, where the constraints on what you can build are the constraints of physical systems, the constraints of physics and noise and approximation, the constraints imposed in building large software systems are the limitations of our own minds.

So in that sense, computer science is like an abstract form of engineering. It’s the kind of engineering where you ignore the constraints that are imposed by reality.

Sweet that you can download text or PDF of the transcript of the lecture.

Meanwhile, in the night during some dark hour when my knees hurt and I couldn’t sleep I decided to change the scope of my mapping in this transit game, at least at first, and rather than make a perfect walkable (rollable) simulation of the geography of each station (or even this first one) I will abstract it a lot more. It could still be expanded later, but the hugeness of the map started to drag me down and I’d like to get the mechanisms working before that kind of precision. I have often felt that I have to throw out all the code at least 3 times before I know how I want to approach a project and I believe this makes 3. But, that means I’m not sticking it up on github yet until I have a clearer vision and a better prototype.

Progress on BART interactive fiction

I threw out the first prototype trying to write a train simulation from scratch and started over using Emily Short’s Inform7 extension Transit System. Now, I have two working train lines, the Red Line going from Daly City to Richmond, and the Yellow Line going from Daly City to Antioch. I could not quite figure out how to make the trains go north and then turn around and come south again and still be able to tell the direction of the travel from the platform. I’m leaning towards having separate north and south lines for each train, arriving at their correct platforms within the station.

Then, because I went all through the 24th St Mission station (the agent kindly let me in free to take notes!) I thought more about the level of detail for the game. I could stick with a very simple model or could make it very walkable in a way that means by playing the game you’d learn the geography. Leaning towards starting simple but having a placeholder for each station, then expanding the station descriptions and maps gradually as I go.

I also implemented (early this morning!) player choice for mobility and sightedness. I may write something for cane use but I sort of don’t want to write service dog, maybe because I know almost nothing about them but also because I am not super fond of dogs. It could be an expansion later. But, I’m figuring out how to make the choices impact each room, thing, and the player experience. I may write a “tap” command that would work like an extra sense in the Touchy Feely sensory extension. I could replace “look” with “tap” for example but I’m leaning towards, “look” will say something either practical or snarky (randomly). The practical would encourage the blind or low vision character to listen, tap (with cane), feel, smell. I have to figure out what “examine” would be understood as (feel for objects, tap for a room, maybe, and “listen attentively” if it’s an NPC). I ended up last night late reading blind wheelchair user forums for thoughts on handling blind/low vision plus manual or powerchair use together in descriptions of rooms or actions.

Coming this weekend an initial github repo with (playable) early versions of the game for testing. There will not be much game there yet but the mechanisms will work and you can board trains and walk (or roll) around.

Notes on 24th street station, I spent my lunch hour there yesterday taking notes and drawing maps. I sat one bench over from the Raccoon McDonalds guy while I ate my burrito and scribbled in my notebook in the Northeast plaza. A lady was selling tamales there – we smiled at each other a lot as i ate my delicious burrito – I saw someone with a chihuahua in a sweater, Lots of music in the background including, in El Farolito, some mariachi guys who wandered in with guitars, accordion, and a big speaker on a hand truck, the murals, rather a lot of pigeons, the tall washingtonia palms, the chinese donut place, silver stone coffee tea cafe, the Southwest corner plaza and its lively market scene, construction going on in the concourse level, saxophone player in the stairwell, the lovely arched ceilings that make me think of how some airport architecture is, like a hangar or wings, the abstract concrete bas reliefs in both majestic stairwells and the strange ridging of the walls (for decoration? for acoustics?) Anti pigeon nails everywhere in high up places. Of course the elevators…. And the platform with its brown and orange tile, its mysterious locked rooms, its beige “contact agent” phones which I longed to pick up but did not quite dare.

The game will have magic, and time travel, by the way! Working title, “Transitory”.

Visit to the SF Lighthouse

As part of the CripTech symposium I went along on a tour of the Lighthouse for the Blind and Visually Impaired a couple of weeks ago. Chris Downey, an architect who is on their Board of Directors, kindly gave us the tour and the benefit of his insight into the architectural design of the space.

The lobby was designed to feel welcoming to people who might be coming to the Lighthouse for the first time, or really for anyone. It’s a spacious central space in the complex, connecting through a large, open, glass walled stairwell to the floors above and below. It’s possible to hear people talking or laughing from other areas so you are aware of social activity nearby in the space. I was really impressed with the auditory environment, as I really could feel the warmth of “other people are here” without it being distracting or echoing in any way. The walls were lined in some kind of sound baffle type of felt (I think) with a design of wooden slats overlaid that affect the acoustics of the space and are also quite beautiful.

After being there all morning, the street and then the food court we had lunch in were noticeably inhospitable in their acoustics. I realized I felt more relaxed and able to focus while we were on the tour of the building.

There is plenty of natural light, and also bright but not overwhelming overhead lights in long strips going north to south for extra orientation cues for partially sighted people. There were also interesting “light walls” with big glowing panels, and sliding controls which anyone can adjust to play with the color of the light.

stairwell with wall of windows

The flooring is set up so that there are navigable edges for shorelining through the hallways. Travel paths are polished concrete, and seating or other areas are carpeted with metal edges to give more information to cane users about navigating the space. The stairs have distinctive kinds of wood (I think different at the landings so that there is a different sound from a cane tap) and bright but not overly reflective metal edges for high contrast (again, good for people with partial vision).

One especially beautiful touch – the handrails around the stairwell were the softest, silkiest wood with an unusual and nice-feeling shape, slightly concave on the side facing the travel path, and then curved in a slightly irregular way – not a half-circle or half-oval but a more organic feeling shape to fit a hand. If you visit, don’t miss feeling the handrails.

Here’s a picture of Chris demonstrating another thoughtful and elegant touch: the reception area countertops have subtle niches in the edge of the counter to allow a white cane to rest there without slipping to the floor. The photo also shows the wooden acoustic slats that line the wall and the thin metal boundary between concrete travel pathway and carpeted reception area.

Chris Downey

We saw the event rooms, training kitchen, science lab which I think is for making things and doing electronics or computer workshops, and a little maker space with large braille embossing printers and 3-D printers. The art all around the space was really neat, a lot of it from the collection of Donald Sirkin, the guy who left over 100 million dollars to the Lighthouse in his will. There was also a memorial wall talking about Sirkin and his life. (On my to-do list: write a Wikipedia page for Sirkin.)

As a wheelchair user I also noticed the spacious design, since there were several wheelchair users along on the tour we would get into a few narrow hallways, but each time that happened and there was a sort of bottleneck, I was able to go around the circumference of that section of the building and circle back to the “front” of the tour. There were points at each end and at the middle of the building on each floor where the hallways opened up to wider spaces so there were opportunities to regroup and the space didn’t feel claustrophobic. I appreciate not feeling trapped and being able to move freely around a space!

A few years ago I wrote a short text adventure for an unconference space, along with obtaining a tactile map of the interior of the building. It was a simple hack job to give the layout of the rooms. I started thinking through ways to make a much better one for the Lighthouse. So, a textual game where you can walk through a space and develop a feel for its geography and layout. To be done well, this should integrate a holistic impression of the different spaces and how they can be traversed or explored, rather than some straight “visual description” information it would need to include the ways that a space can be experienced by someone blind or with partial vision.

Playing with similar ideas a bit in Inform7, in writing “room” descriptions from the point of view of a wheelchair user, which for me, includes not just an awareness of slopes but of the feel of surfaces and whether they are pleasant (marble is amazing) or jarring (literally). One or two words can indicate that “you” the reader are wheeled. I think that can have an interesting effect on game play. For the Lighthouse, I might try just describing the lobby and a couple of connected rooms as an experiment. Since I am not blind or vision impaired I would need to pair up with someone or do lots of interviewing folks to do this project well if I did it for real! My 4-room experiment of being in a sort of fantasy world game setting, on wheels, gave me a little shiver of recognition to play through, even though I had just written it myself and it was not a surprise be in a garden and then to see the words “You roll into the gazebo.” Yet it was still a surprise, a pleasantly non-alienating one. Is there a word for de-alienating in a healing way, that makes you realize the ways you are alienated (from yourself or from participation or acknowledgement) in default representations? It made me think that representing “you” the player of interactive fiction as disabled along different axes (as living and experiencing reality in particular ways) could be a really powerful game.

Thanks again to Chris and to the Lighthouse and to Karen Nakamura who invited me to CripTech! I particularly enjoyed the tour and am still thinking hard about aesthetics and universal design & how our concept of whose experiences are important affect design & engineering decisions. A beautiful example of technology in action to make a pleasant and functional environment. If we do get a San Francisco Disability Cultural Center someday, I hope it will take the example of the Lighthouse and follow their lead!

Messing with Inform7 today

Thinking about this because I started showing Inform7 to my son. Inform7 is very elegant game programming language and interactive development environment. I recommend it! I think he will be teaching me some Unity in return…

Years ago I did a lot of coding for a MUD, a text based multiplayer interactive fiction game. After playing lots of MUDs, MUSHes and MOOs through the 90s I am not quite sure when I started coding but seems like late 90s, mostly for a MUD called Arcane Nites. It was fun being an “immortal”, helping new players and acting as a game moderator to resolve disputes and stop abusive or spammy behavior, often along with another immortal, an enormous macho giant named Stomp, who I only later realized was a woman older than me, old enough to be a grandma. Also later I heard from players who were like, 12 year olds at the time (which explains the frequent need for moderation). (Hi, y’all!)
In fact, I wrote a lot of code while pregnant or while actually wearing my son in a front carrier. Gaming is truly in his blood!
I remember working on some kind of in-game messaging or bulletin board system; little projects like expanding the “socials”, actions you could take in game, and having great time writing them to look properly grammatical depending on whether you were doing the action, seeing the action, or experiencing the action on yourself. I wrote code to made liquid containers behave properly with different liquids, and I think I got obsessed for a while with adding other physical properties to objects but don’t remember much of that.
But, the main fun of MUDs for me was writing new areas of the game. I’ve talked about this before but I wrote one based on the Chinese classic, Hong Lou Meng, translated a few different ways, “Story of the Stone” or “Dream of the Red Chamber” or “Dream of Red Mansions”. I had three different translations of it, drawing up elaborate character lists, geneologies, and so on to keep track of the different names of characters across the translations. In my version, you could walk around a small part of the town and the two houses of the Jia (or Chia) clan and the extensive gardens behind the houses. There were supernatural elements – you could end up in realm of the Stone itself, and there was also a dreamlike, kind of racy cave sequence where you traveled in time, or something, and ended up finding Hsi-men Ching and Golden Lotus from Jin Ping Mei.

Anyway, today I went looking for these files and started converting my version of the Battle of Kurukshetra from the Mahabharata into Inform7. I don’t have a good key to the old game data files so I am having to figure out a lot of weird data! It’s fun. If I can do this successfully then I’ll put the areas up as standalone playable interactive fiction. Since in the MUDs they were written for, the “point” was not just to explore, but to kill everything and loot its corpse, taking equipment and wearing it, and so on, I will have to either figure out some different experience (perhaps a more wholesome one of puzzle or mystery solving) or write a battle system for Inform7. Or, I may just release them as areas to wander and explore. Most of the point was absorbing the atmosphere, really.