Mechanic #119 - Net Hacker - Integrated Circuits|
Expansion to Code Cowboy, build reusable chip configurations.
Net Hacker - Integrated Circuits|
This is an expansion on the premise set forth in the previous entry, [#118 - Net Hacker - Code Cowboy]. It mainly deals with the concept of integrated circuits, which allow you to compartmentalize specific circuits into individual chips. This will also allow you to create AI entities or control panel interfaces on the world map.
Fig 119-1. Abuse's level editor.
The idea of linking inputs and outputs in not a new idea. It's actually used quite frequently. [#118 - Net Hacker - Code Cowboy] was based, in part, on the Abuse level editor, where you would link objects together to produce cause and effect relationships. If you linked an enemy to a door, killing the enemy would open the door. Notice in this shot from Abuse's level editor all the lines linking different objects together.
Fig 119-2. The Amazing Quartz Composer.
Probably the best example of this Apple's Quartz Composer application. I had forgotten about it until I was looking for screenshots of Interface Builder (which also used a system for linking "outlets" to objects). It allows you to create graphical effects and animations through the judicious linking of various components. With particularly large applications (I've seen someone create a game of Asteroids using Quartz Composer), the huge number of links creates something that looks a lot like spaghetti. Limited in the scope of what it does, it is still an amazing application to play around in for a few afternoons.
Fig 119-3. Code Cowboy, Refined
What's my point with all this? Making the links into physical objects that take up space on the grid is confusing and would probably be a least a little time consuming. A much better approach is simply to draw a line from an input object to the object it wants the output from. So, if a controller used four buttons (and has four inputs), just drag a line from each inputs to each of the four buttons.
Rather than making the inputs obvious on the chips themselves, hovering your mouse over will show a list of the inputs and outputs on the chip as a tool tip. Drawing a line between two objects will pop up a dialogue showing two columns - the inputs and outputs on the two objects - and you can drag lines between the left and right columns to make links. This allows a single object to link to several inputs/outputs on another object in one two-step action.
To prevent the visual design from looking like spaghetti like Quartz Composer can look, the links are initially hidden. Hovering your mouse over a chip will highlight all the links associated with just that chip (green lines are output links, gray lines are input links). Perhaps you can hold down the CTRL key or hit a toggle button or something to show all links on the screen simultaneously.
The advantage to this is that it removes the physical relationship between the links and the chips. You can put chips right next to each other, or clear on the other size of the board. Every space on the board can now contain a usable chip, and establishing links should be trivial now.
But what happens when you need more space or want to preserve a circuit for later? That brings us to...
Fig 119-4. Integrated Circuit.
An integrated circuit is just a chip that contains its own grid, with its own chips installed in it. You can move, save, or share this as a single chip. The main difference is that the inputs and outputs are chips that reside in the outside border. Rather than linking the chips inside directly, you declare the outlets and link the chips to those. External chips then link only to the declared outlets. In short, you are basically hiding everything inside the IC and communicating through the outlet chips.
Fig 119-5. Controls Installed On the Flip Side.
The twist here is that ICs have a front side and a back side. The backside is where the chips are installed. On the front side, you can put down sensors, gauges, screens, or controls. These controls are likewise added to the exterior border of the chip side, so that you can link them to the internal circuit. Border (external) chips can be moved around at any time, but must remain on the border.
Fig 119-5. Build modules, create systems.
When the IC is placed in your control grid, it is done front side up. The controls are accessible from the grid itself. Create a controller IC that you can use with other ICs. Control a game of Tetris, or control your avatar in cyberspace. Create a command line console, then pop up as many as you need or want to multitask.
Every object in cyberspace, including you (technically), is considered an integrated circuit. If you find a key panel that unlocks a gate, you will be presented with the front side of the panel's IC which will feature a bunch of buttons for each number. Interacting with an NPC might bring up a text console where you can 'chat' with them. Files are just data storage, but the interface might be a few buttons for copying or deleting.
There should be some way to flip over an IC to the circuit side, to muck around with it. Maybe allow players to flip it and see how it is put together, but they can't change it unless they damage it enough or something. You should be able to defeat an enemy and then reprogram him to fight on your side, perhaps by simply replacing one chip with another.
The First Law of Robotics|
The reason you can put sensors on an IC is that you can install them into the world, as a sort of AI agent. You can install a radar which will allow it to see its surroundings. The only difference between an Agent and an IC is that Agents have a "brain" sensor built in that allows it to be controlled. This way you can create an Agent, plop down some sensors on the front side, and create an AI circuit that will cause it to fight for you.
Or, if you want a dummy, you can install a radio sensor on the agent. Then create a control panel (possibly a controller and video screen) that allows you to see the Agent's location and command it through the set frequency. Even better, create a bunch of dummy Agents, then put a dial on the control panel allowing you to change frequency, and thus control all of them with the one controller. Create an Agent that will wander around, searching for files that it will automatically download to it's circuit board. You can then find him later, access his circuit board, and grab all the files off him.