My Life In Neon

Sci Fi / Fantasy writer Autumn Nicole Bradley – Dream in digital, live in neon

Archive for January, 2013

19 January
4Comments

Reset: Code Snipets and Source

Node map of your apartment

Your apartment, as seen from above

“So, can I trust you with my source code?”

In the interest of sharing resources with others using Twine to create, here’s the code snippets for all the things that used javascript in Reset:

Color Changing

This is what is used to create the color changing effects. The passage they were placed in was called “Style Changer”. The macro layout here was modified from the Timer script by Stefano Russo (right click to download).

The macros were then called by <<display “Style Changer”>> <<typical>>, <<redgreen>> etc…

<<silently>>
<<set $StyleChanger = 
function()
{
 macros['typical'] =
 {
 handler: function(){
 document.getElementsByTagName("body")[0].style.backgroundColor="#333";
 document.getElementById("passages").style.color="#ddd";
 }

 }
 macros['redgreen'] =
 {
 handler: function(){
 document.getElementsByTagName("body")[0].style.backgroundColor="#333";
 document.getElementById("passages").style.color="#ddd";
 }

 }
 macros['cb'] =
 {
 handler: function(){
 document.getElementsByTagName("body")[0].style.backgroundColor="LightSteelBlue";
 document.getElementById("passages").style.color="DarkSlateBlue";

 }

 }
 macros['badcolor'] =
 {
 handler: function(){
 document.getElementsByTagName("body")[0].style.backgroundColor="#b38201";
 document.getElementById("passages").style.color="#009900";
 }

 }
}>>
<<print $StyleChanger()>>
<<endsilently>>

Prompt Box

Rather than just show off how to create a prompt box, this is the segment in which the result the user types in is actually used immediately to determine which of the color schemes should be displayed. Since the user is given one of the Ishihara plates and asked which number they see, the two common answers are 29(typical) and 70 (red-green deficiency), and I also included a guaranteed answer in case either they saw nothing or entered something other than the two options. This is from the “erozha gnuj” passage.

<<set $numberSeen = prompt('#?')>>Not-you see you. Not-noise.
<<if $numberSeen eq 29>>[[Two touch things. Five-and-four touch things.|typical]]<<endif>>
<<if $numberSeen eq 70>>[[Five-and-two touch things. No touch things.|redgreen]]<<endif>>

The useful thing to note about this is that you can use a variable collected in a prompt on the very same screen the prompt appears.

Alert Box

For the alerts, I wasn’t able to find a macro to simply display the alert. So I set it to dump the result into a variable which means it has to be evaluated as JS. You can find this in the “Plug it in.” passage.

<<set $alert = alert('Warning: Attaching device could allow unauthorized access to digital as well as biological function.')>>

I think(?) the value  $alert will evaluate to is true if the player clicks “Ok” and false if the user escapes/closes the box without responding. But I’m not certain on that.

Confirm Box

Ah, yes. Turning yourself over to Alison’s control. I wanted to use this moment to mimic the normal experience of having to explicitly permit a different user to use administrator or root privileges.

The way this works is that clicking “Ok” sets the value returned from confirm() to true, while clicking “cancel” or “X” sets it to false.

<<set $confirm = confirm('You are about to grant user [Administratrix] ALL access privileges. Are you sure?')>>
<<if $confirm eq false>><<display "wrong">><<else>><<display "surrender">><<endif>>

Again, just like with the prompt box, you can use the result of clicking “Ok” or “Cancel” right away. In this case, I have two other passages, and whichever gets displayed depends upon whether the user accepts Alison’s control or not.

Full Source

You can download the full source of Reset here.

With regard to the license, this was a tough one for me. 99% of the work of this lies in the writing, not the code, though the interaction between JS and Twee code makes some obvious things in JS not so obvious in Twine, which is why I wanted to share those insights here. As far as the “code” stuff, I don’t really have any particular attachment to it. Use the JS stuff as you see fit, since much of this is so trivial (from a development standpoint, not necessarily a learning standpoint) that protecting a function call under copyright seems a crass assertion of that power. The CC license is meant to protect the prose, setting, and story arc from unattributed use before I turned it loose.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Complete nodemap of Reset

Complete Nodemap

17 January
4Comments

Reset: Post Mortem

Rediscovering My Art

So, I can’t even start this without mentioning CYBERQUEEN by Porpentine. There’s really nothing I can say specifically besides this: it pushed all the right buttons in just the right order at just the right time to remind me of something terrible I had forgotten: I actually really love games and writing. For the past two years, transition and school have taken up so much of my focus that I, essentially, forgot why I love them.

Frankentwitter’s Game

This is the fateful tweet that started this game:

LifeInNeon: In the future, "I'll let you play with my source code" will be the ultimate offer of dom-sub trust

“I’ll let you play with my source code”

See, Reset started out as a bunch of ideas cobbled together from mostly-sometimes-joking replies to Porpentine on twitter. My usual conversations with her go something like this: Porpentine posts some decontextualized short-form genius, I invent a context and reply with an equally decontextualized statement that presumes we’re inhabiting the same context. Powerful emotions ensue, one hopes. Or just laughter, camaraderie, and the erotic validation that only nice hard faving can supply.

Then I have a moment of:

Other Lydia: Hey Lydia.

Lydia: Yeah, Other Lydia?

Other Lydia: We just came up with something really cool.

Lydia: *Blink* *Blink* *Scrambles to find a pad to scribble an idea fragment down*

The words are scrawled at an angle to the lines of the paper. It feels proper. It's your way of signaling to yourself that this was an idea you wished to be reminded of so you could develop it further in longer, with-the-lines writing.

Reset: the Crumpled-up note

In fact, there’s a scene in the game that reflects this:

I actually have a bin in my cube shelf just for collecting notebooks, note pads, torn notes, and all the other things on which I have scribbled idea fragments. (Fun trivia fact: the text of the note is from an idea I had nearly 7 years ago for a different story. It fit perfectly, and also foreshadows the situation the character is trapped in before the player realizes the nature of the trap.)

The inclusion of the note the character couldn’t remember the significance of was yet another idea fragment spawned by twitter banter:

 

The emotion of finding something you had written down but realizing it no longer means what it meant then

A very complex emotion

 

The Horror of the Transhuman World

My relationship to my body has changed a great deal in the last two years, but in doing so, it has also changed my relationship to the transhumanism movement. I grew up on stuff like Neuromancer, and the fastest way to hook me into your story was to provide a world where body replacement was feasible and accessible. Now, don’t get me wrong: I only see this as a trans thing in retrospect; back then, transsexual was not something I even remotely associated with myself—I just wanted to be free of my bodily limits entirely. However, these days, now that my body is sliding into alignment and *gasp* I actually like it from time to time, my pressing “need” for settings to include body replacement is gone, but in its place is a different need:

I don’t need body replacement to like your story, but if you include it, you must also tell a more mature story.

If you simply project modern day forward and add this one aspect, I want to hear the stories of the people who don’t have access to all the cool stuff because capitalism has prevented them from getting it, or the ways in which enhancements become tools of exploitation to serve the needs of the still-at-the-tops. I want to hear the stories that don’t just sweep disability away by saying “we fixed that”, but rather the stories that talk about the new disabilities created by technology when someone comes a long that it doesn’t work for (after all, every disability arises in a social context) .

So I spend a lot of my time these days fantasizing about the nightmarish horrors of the transhuman future, not the idealized dreams. Dreams are easy. Horrors are hard to face, and if we don’t, they’ll be what we get.

But there’s another aspect of meditating lovingly on the horrors. For some of us, the belief that we can overcome these nightmares keeps us looking forward to this future. This game is not meant to be a Luddite warning that brain hacking is too scary of a possibility and therefore we should halt all progress (impossible, but folks try). I do not raise the spectre of the worst that can happen in the hopes of frightening others away from the future. If I’m being candid, in this hypothetical future, I imagine the absence of scarcity will remove much of the threat of unwanted violation, such that violation as expressed in the game becomes an erotic and dangerous but ultimately recreational act engaged in consensually,  not a selfish or criminal one.

Simultaneously, I’ve been playing a lot of Deus Ex: Human Revolution. So I have a lot on my mind regarding the shortsightedness of Get Augments -> Become White Upper-class Demigod Corporate Enforcer in a setting beset by racism and poverty, and virtually defined by the way everyone except the player needs a drug, Neuropozine, just to survive. I had a very involved conversation recently with Merritt Kopas about that very shortcoming. So that genre was already tumbling around my head when the Big Chaos Twine Jam came along. (I’ve also been working on another game that deals with this: Cuts, which I hope to finish by the end of January, that deals directly with the issue of access and affordability in the era of print-on-demand organs.)

The Mechanics of Sensory Control

One thing I wanted very much to include in this game, as fitting with the “mind got wiped in a cyborg kink scene” theme is the idea that when a person’s brain computer got switched back on, it would need to be recalibrated. With a text based game and no 2D art talents to speak of, I had a limited palette of senses to play with. I chose to focus on two: color vision and language.

Luckily, one of the themes of the challenge was CSS formatting, so I decided to use some fun javascript to alter the colors on screen throughout the game. I chose to make the text onscreen deliberately difficult to read before the calibration takes place, and the color scheme makes it even harder for people with red-green color deficiency to play without highlighting the text on screen. Very early in the game, I alleviate this strain (I made it the first recalibration so as not to go from immersion to punishment of the player), and I do so using one panel of the Ishihara test. A pop-up box appears asking for what number the player sees, and depending upon either of the typical answers (29 for full color vision, 70 for those with r-g deficiency, nothing for full color deficiency) it recolors the game to something more tolerable.

The macro for the color changing:

<<silently>>
<<set $StyleChanger = 
 function(){
     macros['typical'] =
     {
          handler: function(){
          document.getElementsByTagName("body")[0].style.backgroundColor="#333";
          document.getElementById("passages").style.color="#ddd";
      } 

}>>
<<print $StyleChanger()>>
<<endsilently>>

The CSS for anchors (links) and backgrounds were set to “inherit” from the body and from the passages, so changing one background and one text color overhauled everything relevant. Since Jonah loads the page once and just fills in the passages <div> each time a new passage is loaded, styling it once each time does it for the entire page until the next time the player hits a style point.

Update: For those looking for more code snippets from the game, I made a followup post here.

I used a reversed rot-13 cipher to garble the text and simulate aphasia. I chose a cipher instead of simply random text strings because language has a structure, and just because the character doesn’t understand the language being used doesn’t mean that structure disappears. I have auditory processing problems; occasionally people speaking to me sounds like wordless babble. I could even repeat the words back to them, but they have no meaning. So I occasionally have to ask people to repeat themselves even though they might be the only person in the room with me and no other sounds to distract me. But there’s still some sense of meaning that gets through: I still understand tone of voice, I still understand that I am being spoken to and not the wall, I might have an inkling of the subject being discussed. But the words themselves are incomprehensible for a few seconds. Like a mental hiccup. So I leaned on another test: the Rorschach test, to “re-align” symbolic language processing, allowing the player to freely input whatever they saw in the ink blots.

I wanted to simulate that experience of aphasia: the words being said by the doctor still have a structure and a meaning; there is still a purpose and if the player chooses, they can actually use a translation tool to decipher the text. It’s just like I have to in my real life: I think about what was said to me, playing it back from memory like a recording, and “re-hear” it, just as the player must (if they are dedicated) re-read it to translate it.

Likewise, the narrative has a greatly reduced vocabulary palette to choose from: concepts like “touch-thing” for finger, or “not-you” substituted for any person that you recognize isn’t yourself. It felt incongruous to use a full linguistic spectrum when simulating a scene in which the character-as-player-as-character has no access to their words. “What would it be like to be reduced to the vocabulary of a 2 year old?”

The color vision one is dipping into dicey territory because unlike the language, I do have full color vision (and from what I’ve been tested, on the high end of my ability to discriminate colors). So I absolutely could not go forward with that in the game without providing a safe way out: there is a color-fuckery-free way to play the game because as hard as it is on those with full color vision to look at the absolutely garish color palette, it’s even harder on those with color deficiency. Likewise, the intended compensation mechanic—using the mouse to highlight the text—is not available to players who play on many touchscreen devices or who have difficulty manipulating the mouse. (Full disclosure: as a stimming method, I compulsively highlight and unhighlight any text I am reading, so it still forces players to play as I would in a roundabout way.)

The Kink Metagame

Both of these things constitute a metagame layer: the game is playing with the player as much as the setting is manipulating the player character. Since the second-person article “you” is used throughout, it seems appropriate.

That makes the kink scene a lot more complex, because I’ve already established a dialogue with the player that they are in fact the one experiencing what the character is experiencing. I wanted to provide incentive to keep going with the kink scene: the further you go, the more the story gets revealed in memories. Likewise, to emphasize the submission and control held by the Administratrix, I realized I could undo the re-calibration done at the beginning. This also bookends it, giving the sense that it was a scene like this one that led to being in the hospital in the first place. Indeed, one could end the game on that belief when it loops back to the beginning.

The Safe Words and the True End (SPOILER ALERT)

Because of that metagame layer, because the game was telling the player they were experiencing the kink, I wanted to provide the player as much as the character a safe way out. So I made the choice to make everything from beyond the beginning of the kink scene entirely optional. Like kink off-screen: it’s there if you enjoy it, but if you don’t, no worries, mate. Likewise, it ends when one of the players says it ends.

Therefore: the safe words are always available to the player from the initiation of the kink scene to the end.

If a player ends at the initial loop back, thinking the Administratrix reprogrammed their head and put them in the hospital, I think that is a satisfying-ish ending as a story, but it says some deeply fucked up things about kink (or what folks might think I feel about kink).

It was very important to me that the game actually end without it being some nefarious plot: there was no murder, no jealousy, no cheating, no revenge fantasy, or any of that. It ended when the player/character said it ended, and reaffirms the trust placed in the Administratrix. If anything, I feel I was a little rushed with the ending and may not have provided enough aftercare in the form of confirmation that the player/character is back in the “real” world.

Recursion, Foucault, Soc1ety

Obviously recursion is a big deal in this story. The player/character is breaking out of consecutively deeper loops until they arrive at the real world. This is echoed by the very safe phrase used: turtles all the way down, a concept of cosmic recursion when one postulates that the universe rests on the back of a turtle. What’s the turtle standing on? Well, it’s turtles all the way down.

If you haven’t read anything by Foucault, you probably should. If you enjoyed this game enough to reach this line of this post mortem, you ought to know what the man had to say about the nature of power and control and structures to maintain them. Even if you can’t get through his full-length works (guilty), get the notes from someone who has. And grab a strong drink and prepare for some soul-searching on how to get by in such a deeply fucked up world.

Soc1ety is, of course, a panopticon qua social network service accessed through one’s headware. The analogues to it in our present world should be obvious. But I had to include it, since this entire game was spawned by a transhuman version of “Hey everyone, I lost my phone. PM me your number!”

Thank you

I’m glad you enjoyed it as much as I enjoyed making it.

Much love. Take care of each other. <3

_-*

15 January
11Comments

Reset: A game by Lydia Neon

Screenshot of Reset by Lydia Neon

Play Reset

Reset is a game about the bizarre, frightening, and exciting possibilities for kink in the cyborg / transhuman future.

Who can you trust with your source code if you can’t trust your Administratrix?

Reset was created with Twine as part of the Big Chaos Twine Jam.

 

Play Reset Here