Sunday, March 6, 2016
Hacking ICE in the world of "No Crypto For Old Men"
Today, I really focused on getting some interesting things to do into the game while fighting the "Intrusion Countermeasures Electronics", or ICE. Basically, this is the combat system of the game, but instead of fighting monsters with your sword, you are fighting security programs with terminal commands.
My goal with this combat system was to help the player feel like a clever hacker, just like in the movies, where they pop into a network, type some esoteric commands into a console, and watch the expensive and high-tech servers fall like dominoes. And make it all look really easy when it's done.
To that end, you have a pretty limited number of things you can type in the console, and the gameplay revolves around figuring out when to type what. There's an onboard wiki and help system that should (hopefully) make this a fairly simple task, but it will require some reading and poking and experimenting to get it right.
Once you understand the handful of commands, it's just a matter of sussing what you need to do to circumvent the ICE. For this part of the game, I took a lot of inspiration from the excellent co-op game Keep Talking and Nobody Explodes. It's an easy game where you have to defuse a fictional bomb by looking up esoteric instructions in a bomb defusal manual. The challenge comes from executing the complicated instructions under a time pressure, but what was interesting to me was how well it conveyed that sense of doing something important and "smart" just by following instructions. Even though you were just doing what the manual said, the game succeeded in making you feel like a bomb squad expert during play – especially when you defuse the bomb!
So I'm taking that idea and running with it in a new direction here. The conceit of the game is that a newly-elected President Trump has demanded that all data is available to the FBI (this policy position, sadly, appears to be the only part of my game that is not science fiction). All ICE is now hackable by definition; every security system must, by law, have a back door. And as anyone in IT knows, that's the kind of genie that won't stay in a bottle. Within days of the policy decision, there is a "Hacker's Wiki" that details all known back doors, and it is usable to quickly defeat the encryption on bank transactions, personal communications, surveillance systems, etc.
The player can thus look up any (well, most) ICE they encounter in the Wiki and find instructions on how to defeat it. In essence, you get the instructions for the puzzle. Then, you merely need to execute the actions to solve the puzzle.
To achieve this, I've got a pretty robust ICE description system in place in the code. Each block of ICE has a cadre and a release that can be used to learn about the general class of ICE and the specific instance in the wiki. And it has a modular description system to describe when it should fail. I've created several of these modular pieces so far, and they can be mixed and matched to create any number of back door types.
For instance, some of the weakest ICE is susceptible to the Hammer command, which creates a bunch of workers that attack the ICE with buffer overflows. Each block of ICE has a publicly-viewable registry of icons (either "+" or "-") that would normally seem to be meaningless, but if you count the number of "+" signs, you'll know how many Hammer workers you should attack the ICE with to get it to shut down. Thus, one of the modular pieces is a note that the ICE shuts down if it has as many Hammer workers as it has plusses in its registry. Another would shut down the ICE if it has as many Hammer workers as it has minuses.
ICE from the same cadre will tend to have similar solutions, so that as you play, you should pick up on which ICE blocks behave in which way, and not need to reference the wiki, which will make you feel like even MORE of a hacker. "Oh, this is the Nakatomi series. I can take that down with just a few buffer overrun attacks. Shouldn't be more than a moment...there!"
Another modular rule looks at the Drain workers attached to this ICE, which attack certain channels of the registry. Instead of a simple count, Drain workers toggle the channels in the registry on and off, and the goal is to turn all the registry items to the same symbol.
A third modular rule might be to just allow access when you type the correct username and password.
In addition, these modular rules can be made sequential, so that you might need to do several of these steps in a row, or parallel, so that if you fulfill any of them, the ICE falls. These can even be nested, so that you can do sequences of parallel tests.
Using these modular pieces, I should be able to make any number of interesting tests and puzzles for the "hacker" to attack. I've already got a library of eight fairly robust ICE blocks, and more will be easy to create.
Hopefully, this will end up being a really unique, interesting, and engaging departure from traditional roguelike combat while still capturing that roguelike feel. In many ways, it has parallels to the higher-level experiences in popular roguelikes, where you need to cleverly use your potions, your armor, your scrolls, etc., to navigate the death labyrinths, so I think it's a pretty solid direction.
at 10:58 PM