Console Jockey - A Combat Programmer who uses a CyberDeck to perform illicit activities using Wares.
CyberDeck - Homemade, military grade supercomputer compacted down into a small square meter.
CyberSpace - The realm digital. Most often experienced in modern day through the usage of Augmented Reality, which blends Cyber and Meat space.
Hacking - Using social exploits and knowledge of digital exploits to access data and systems uninvited. Requires the Hacker’s full attention and is not advisable during combat operations.
Jocking - The act a Console Jockey performs when executing Wares. Much like the job it’s named after, it has a very high risk of debilitating or life-threatening injuries.
Programming - Writing and compiling programs. Can only be done during down time between missions.
Programs - Mostly called Apps nowadays. These are compiled code used to perform legitimate operations on a computer
Wares - Modern day WMDs that force devices to operate in potentially unexpected ways, usually against the operator’s will. Specifically made to be used in combat.Anyone with a pair of fingerless gloves and access to a device with an interface can hack. If you want it to be useful, it should also be connected to a relevant network. Some devices, like a computer, will most likely have an interface via keyboard and monitor. Other devices, such as a card scanner, will need additional devices to act as an interface, such as a Skeleton Passkey.
You can avoid the following mess if you’ve got the correct username/password combination for the terminal. Hackers typically trade usernames/passwords as a sort of second hand currency. Find someone who claims to have what you need, then pay their price. Or do the favor they need.
The rules (which were stolen from Warren, who stole them from Ava, who stole them from Telcanter) are rather simple: Select the correct hacking actions - composed of Crack, Hack, and Smack - in order. Each terminal requires all three actions, and no action is repeated.
Crack is the brute forcing to discover passwords.
Hack is console commands jammed in where they shouldn’t be.
Smack is exactly what it sounds like: You haul off and smack the system.
Should the Hacker select a wrong action, they’ll be met with an error message. Should a wrong action be selected again, the terminal locks down and becomes unusable.
Depending on the level of devices security rating (1-4; assume 1 if not stated) you may be required to repeat the process.
If you insist on hacking while in combat, each guess takes a turn and requires your full attention. Leaving the terminal restarts the process and may trigger security.
Before you begin Hacking, you’re allowed an Intelligence test:
On a Success you eliminate one option for the first action as incorrect.
Succeeding by 5 or more reveals the first correct action.
Critical success and you immediately gain access
On a Failure you gain no insight or advantage to the situation.
On Critical Failure, the terminal locks immediately.
Now, mind you, just because you’ve hacked a device connected to a network doesn’t mean you’ll be able to make it do anything you want. A door access panel isn’t going to be able to control local cameras. It’s going to open, close, lock, and unlock the door. The console in the security room, however, will be able to control both. It’ll also have a higher security rating and pesky guards who will take offense to you being there.
Making a device do what it shouldn’t is what Wares are for.
So What Can You Do?
There are a few generic actions you can perform, though as said, not all of them will be applicable all the time. Performing them takes about a turn, besides Upload and Download, which are variable based on size of data be transferred
Download - You move queried information from the local drive to your portable that you’ve inserted.
Query - Ask a question and get an answer to the best of the system’s knowledge.
Sabotage - You out right break it, causing an alarm.
Suppression - You turn a specified system off for as long as you are at the terminal.
Upload - You transfer data from a connected portable drive to the local drive of the system.
Use - You use the system as it was intended. Leaving the terminal at this point causes it to continuously run the last command given.
Security
Typically, people don’t like it when you hack their devices and start touching their stuff. Which is why Security will eventually step in. Usually violently. With guns. For murder.
Programming
Hubris
“It’s too complicated and probably won’t be used.” Wise and probably true feedback. Wise and probably true feedback I’ve chosen to ignore.
A program, simply, is a series of commands written and stored into a file, which are then executed when the computer is instructed to RUN the file.
Why, though? In a setting with both hacking and Wares, why have a programming system? It’s simple really:
Shut up.
It sounded fun - A primary reason I do most things.
Programs don’t require Processing Dice - They’re significantly weaker than Wares, but once executed they don’t require additional resources.
Programs don’t require attention - They’re not as adaptive as hacking, but once executed the user can walk away without continued need for input.
Gives the players an additional chance to do something unexpected - See point 2. Sorry about point 1.
Writing a program takes anywhere from a few hours to a few days, including the testing and debugging.
Anyone with a computer and enough time on their hands can code a program, though Console Jockeys are just better at it.
A program must be on a device in order to be executed on it, meaning if you want to run a program on a device you’ve just hacked, you’re going to need to Upload it first.
If executing a program on your own device, it functions without issue.
If executing on a foreign device, you’ll need to roll (d20) to see if the computer understands the program. There is a 70% (14) chance the program of a non-Console Jockey will operate. For Console Jockey’s the odds improve by 5% (+1) for every template taken.
Should a 20 be rolled, then the computer crashes trying to figure out the code.
On a simple failure, however, the program just doesn’t run.
ABASIC
You won’t be using just any old programming language for all this, instead you’ll be using the most modern and versatile language available to modern man: ABASIC (Advanced Beginner's All-purpose Symbolic Instruction Code). Well, a severe abstraction thereof. The following is a list of commands available to you. Defining new commands is possible, however you’ll need to write a supporting program for it, as well as fist fight the General Manager (or ask nicely).
ACCESS <directory> - Moves the computer into the specified directory, to continue working.
BREAK - A command for interrupting whatever the system is doing.
CLS - A command that clears the screen of the terminal. Useless for our games of pretend, but it exists. If you want it.
CONNECT <address> - Connects to the remote terminal at the designated address, which is most likely now waiting for an account and password.
COPY FROM <source> TO <target> - Copies a file from source location/account to target location/account.
DELETE FILE - Erases the specified file.
DIM - Declares a variable.
DISCONNECT - Opposite of CONNECT. Immediately severs the connection to the remote terminal. Any logged in account remains logged in and unusable until logged off.
ELSE - Paired with IF…THEN. If the condition for the IF…THEN is not met, then this code executes. Must be ended with ENDIF
ELSEIF - Paired with IF…THEN. If the condition of the first IF…THEN is not met, then checks for another condition to execute other code. Must be ended with ENDIF.
END - The last command of a program. Tells the computer to stop what it is doing and without it, the computer will sit and wait forever for more commands.
ENDIF - Informs the computer that the IF block structure is over.
FOR <condition> - A loop command that causes the computer to repeat a set of commands until the defined condition is met. FOR loops execute a certain number of times. Loops must end with a NEXT command, or else the computer will only run the loop once and move on.
FUNCTION - Defines the start of a function, in case you want to get crafty with your programming.
GOTO <line number> - Moves the computer’s attention to the designated line number.
IF…THEN - The command following THEN is executed if and only if the condition in IF is met. Otherwise the computer ignores the section. Can be combined with ELSEIF…THEN and ELSE to form block structures that must end with ENDIF
INPUT - Accepts data input from either a terminal or specified file.
LIST - Lists the contents of the current account or folder.
LOAD - Loads data from the computer for use by the program.
LOGON <account> - Inputs the account name to a remote terminal.
LOGOFF - Opposite of LOGON. Logs out of the current account.
NEXT - Designates the end of a loop. It tells the system to increment its counter and return to the top of the loop in order to repeat the process.
PASSWORD <password> - Inputs the account’s password to a remote terminal.
PATH - Moves a specified file along the defined path. Mostly used to (attempt to) through off any monitoring entities.
PRINT <string> - Prints the defined string to the display.
REM - Designates a remark or note in the code. Not interpreted by the computer, but it makes it easier for humans to read. In case you forget what a section of code is doing.
RUN <program> - Runs the specified program.
SAVE <location> - Stores the currently loaded data onto the local drive as a file with the designated filename and location.
SEARCH <query> - Queries a file or database for data related to the defined query.
SLEEP - Causes the program to pause, waiting until the user presses a key.
SORT <condition> - Used to sort the contents of a file or database by the specified condition.
TRACE - Used to determine the path back to the terminal where the program originated.
UNTIL <condition> - A loop command that causes the computer to repeat a set of commands until the defined condition is met. UNTIL loops execute until its conditions have been met. Loops must end with a NEXT command, or else the computer will only run the loop once and move on.
WAIT <time> - Causes the system to wait for the designated time before continuing.
WHILE <condition> - A loop command that causes the computer to repeat a set of commands until the defined condition is met. WHILE loops execute until its condition is no longer true. Loops must end with a NEXT command, or else the computer will only run the loop once and move on.
WRITE <destination> <message> - Writes the message to the destination location. Should no destination be specified, the command defaults to the console.
Comparisons
Used in conditions to determine if a specified instance is true. Technically not needed for what we're doing, but it looks cooler.
Waits three hours, connects to a remote computer, enters account log on data, then loads the data to local and saves, before deleting the remote version and logging out.
WAIT 3 HOURS
CONNECT 126.02.1475.6512
LOGON admin
PASSWORD PetiteConnard69420
LOAD ./McGugginFile.txt
SAVE TO D:/Home/StolenFiles/McGuffinFile.txt
DELETE FILE ./McGuffinFile.txt
LOGOFF
DISCONNECT
IF…THEN example to show what a block structure looks like.
IF var = 1 THEN PRINT “Example 1”
ELSEIF var = 2 THEN PRINT “Example 2”
ELSE DELETE FILE *.*
ENDIF
Very cool, but a few comments on the Hacking mechanic:
ReplyDelete1. The name of the mechanic overlaps with one of its own sub-actions. When I "Hack" am I "Hacking", or selecting the "Hack" action from Hack/Crack/Smack? Confusing.
2. There seems to be some detail missing from the procedure. Does the terminal only shut down if two _consecutive_ wrong actions re chosen? Otherwise, nobody will get through a system with security level 2+. Perhaps a concrete example of play in which someone defeats a level 2 security system would be helpful.
3. Do you only get a single Intelligence test regardless of the security level of the system? Or once check per level/iteration of the procedure?
It seems to me that, in the absence of bonuses from the Intelligence test, one iteration of Hacking boils down to: 33% chance of success --> if fail, 50% chance of success --> if fail, lockout. This means that a level 1 system results in 67% chance of success, level 2 is 44%, level 3 is 29%, level 4 is 20% -- ASSUMING that you only fail after two CONSECUTIVE wrong guesses. If two non-consecutive wrong guesses result in lockout, it's more like: 67% at level 1, 33% at level 2, 17% at level 3, 8% at level 4. The intelligence test only slightly mitigates these numbers if you only get one for the whole system.
Sorry, my numbers are wrong for the "two non-consecutive errors results in lockout" interpretation: those % numbers should be much lower for level 2+.
DeleteCheers, thanks for the feedback!
DeleteMy thinking was the security levels would just make you repeat the process over, resetting any error messages and providing another Intelligence test. Typing it out now, instead of loudly thinking it in my head, it seems...not the best. It's just making you redo a thing without adding anything new. I'll have to chew on it some more. Thanks for running numbers!
Many boring games started with the question: "Won't this make the players too powerful?"
ReplyDeleteI am *very* interested in the broad strokes of this system. A game where the players are expected to write out a program in advance sounds fun AF to me. In fact, I think you could expand its scope significantly. All but the simplest hacking ought to be handled by these pre-written programs.
You have gotten too far into the nitty gritty of the language for my taste, though. The difference between a FOR loop and a WHILE loop is always a stumbling block for people actually learning how to do real coding for the first time, so it seems excessive for a game that presumably isn't meant to be played exclusively by real world programmers.
For my money, a more abstracted programming language would do the job better, where they game concepts are just "CONDITIONAL" or "LOOP," and the players are allowed to define what the condition or loop does in conversational language.
-0.02
You may be (are) right about the more abstraction of the language being more welcoming to non-programmers. You shouldn't have to learn an out of date programming language just to play a game of pretend. ...Or should you? Maybe I switch everything over to one of those esoteric art programming languages no human can actually understand.
DeleteAlso, expanding it is a powerfully tempting idea. Thanks again!