Cyberspace as a place and a Cyberdeck as an Item

Hi,

I’m relatively new to Inform 7, and I’m learning as I go. I’ve been tinkering with a cyberpunk setting for a project, but I cannot solve this problem no matter how hard I try to bash my head against it. In brief, I would like to figure our how to code the following:

  1. Cyberdecks are items (the one I have in my project is an Ono Sendai Cyberspace 7, but I think I know how to get Inform 7 to understand it as a cyberdeck).
  2. Cyberdecks are carryable.
  3. Cyberdecks are enterable.
  4. Cyberdecks lead to Cyberspace with a command like “jack in”.
  5. Cyberspace is a room separate from any other room (leading to other parts of Cyberspace, each of them a room connected only to other rooms in Cyberspace).
  6. “Jack out” moves the player from cyberspace to the location where they jacked in.

Is there any way to set this up in Inform 7? Any help would be greatly appreciated!

–A.

2 Likes

I’m on my phone now so can’t easily write up a bunch of code, but yeah, this shouldn’t be too hard! Personally the way I’d manage things is to have a separate “avatar” character who runs around in cyberspace while the player’s meat body stays put. The instead of making the deck enterable is just create a new “jack in” command that says “now the player is avatar” or something like that (“jack out” would likewise just need a “now the player is meat-body”, or however you want to name it). There are a lot of advantages to doing things this way, like not needing to manually keep track of the player’s location or moving their possessions around.

Mapping cyberspace connections to only attach to other cyberspace areas should be easy; you can also define regions if you want the rules to be different there vs in the real world.

From what you posted I’m not sure if the idea is that jacking in should always take you to the same place in cyberspace, or if the location of the avatar shifts depending on where you go/what deck you use; similarly, you might want to keep the avatar in place when you jack out, or alternately reset its position back to some “home” location. But you can play around with that sort of thing as part of your carry out rules for the new actions. Oh, and you’ll want a check jacking in rule to make sure the player is carrying a deck!

2 Likes

Hey Mike,

Thanks for responding so quickly! I like the cut of your jib. It hadn’t even occurred to me that it would be possible to make a secondary player character for use in cyberspace. When you have a minute (not on your phone!), would you mind walking me through some of this? I can make a cyberdeck as a thing, that’s easy, but I can’t for the life of me figure out how to make a carryable cyberdeck capable of teleporting the player (or, in your idea, making the player a different player). I don’t even know how to make the avatar, exactly. Forgive me, as I said, I’m still new! I’m proud even when I can make a bunch of connected rooms with lockable doors.

I’m not sure how to define regions, but I figured cyberspace could just be a second set of rooms not connected to anything else. Would that work? Or is a region a better idea?

I’m not sure if jacking in should always take the player to the same spot in cyberspace. Would it be possible to have a “landing” space for the first time you jack in, then have jacking in take the player to the last room in cyberspace they left? And is it possible to have the jack out command take the player back to where they were in the real world when they jacked in? This would be easier with an avatar and a meat body, I realize, since the first would be at the “landing” by default, then be wherever the player left it when they jacked out, while the latter would always be where the player left it when they jacked in. Still, I’m not sure how to code that up.

Again, my thanks for your ideas and help!

–A.

1 Like

Try this, for a start.

Your Apartment is a room. [The player will start here.]

A cyberdeck is a kind of thing. The player carries a cyberdeck.

Cyberspace is a room. An avatar is a person in Cyberspace.

Jacking in is an action applying to nothing. Understand "jack in" as jacking in.
Check jacking in: unless the player can touch a cyberdeck, say "You can't jack in without a deck." instead.
Check jacking in: if the player is the avatar, say "You're already jacked in." instead.
Carry out jacking in: now the player is the avatar.
Report jacking in: Say "Beep boop beep."

Jacking out is an action applying to nothing. Understand "jack out" as jacking out.
Check jacking out: unless the player is the avatar, say "You're already jacked out."
Carry out jacking out: now the player is yourself.
Report jacking out: say "Boop beep boop."
2 Likes

Hi Daniel,

Thanks so much! That all works exactly as intended with the exception of the “Report jacking in” and “Report jacking out” lines (the prompts say nothing after “jack in” or “jack out,” though they move the player appropriately. Very cool!

–A.

1 Like

Ahh, right, because the player is no longer the person who initiated the action by the time those rules run.

Try changing those to “report an actor jacking in/out”.

2 Likes

Hi Daniel,

Worked flawlessly! Thanks so much.

–A.

1 Like