- Behemoth's idea from a few posts back (link).
- My expansion upon Josh's idea of harmonics (link).
- Josh's scanner UI (link).
- Flatfinger's revision of the scanner to display frequency-space (link).
- My programming language idea for Limit Theory (link).
Now, when you've designed the program, you'll need to compile it (program compilation is necessary in order to make sure it's valid and to cast it to an appropriate type of program e.g. business management plan, power/CPU allocation program, etc.). The system then determines a "complexity" measure for the program you've created. A program that involves simply extracting information from the databanks of another computer system will have much lower complexity than a program that's designed to offline scanners, hijack comms and override reactor safety protocols. You store these hacking programs until you need to use them.
So all that is done in preparation for hacking. What follows is a description of what you do when you actually want to hack someone.
Let's say that you spot a mining vessel off by an asteroid field using long-range scanners. Let's also say that you're flying a stealthy hacking vessel and figure the mining vessel might be carrying some sweet ore in its cargohold. You fly up to the asteroid field, and keep yourself hidden behind one of the larger asteroids. The mining vessel hasn't noticed you. However, as a precautionary measure, it has its shields raised to a quarter maximum capacity.
You order your computer to establish a target lock on the vessel, and then get the computer to try to crack the frequency of its shield harmonics. The computer gets your active scanners to perform a frequency sweep of the 10-100 THz range with low-intensity EM radiation, monitoring for returning signals to determine the frequencies of the harmonics. Fortunately, you discover that one region of the mining vessel's shields has a harmonic frequency of 60 THz. You select one of your hacking drones from your inventory, configure its shield harmonic to 60 THz. You take careful aim, pointing your cursor to draw a straight line through that vulnerable region of the shield and straight to a section of the mining vessel's hull. You squeeze the trigger.
The drone - no bigger than a few centimetres - is launched from a hacking drone launcher attached to one of your turret hardpoints. It sails almost imperceptibly across the distance bridging you and your victim. As it approaches the shields of the mining vessel, it squeezes some juice out of its capacitor and establishes a weak shield around itself at 60 THz, making its shields fully-synced with that region of the shield and allowing it to pass through as if there weren't shielding there at all. It touches down on the vessel's hull, latches against it, extends a small antenna, configures its transceiver frequency to 60 THz, and begins establishing a communication link back to your own computer systems. At the same time, it releases small nanobots that tunnel into the hull of the mining vessel and down into its core, where they integrate with its computer system networks and broadcast data back to the drone, which then acts as an intermediary between your ship and the nanobots. Your ship is now beginning the process of establishing a connection with the mining vessel's computer systems, all without it having noticed anything so far.
So far, this entire process has taken less than a minute.
Now, what I imagine is that the core of every computer system of every vessel and station maintains a kind of "IDCS" - identification carrier signal - which is shared among other trusted entities (e.g. drones the computer controls, allied vessels, HQ, etc.) to allow their computer systems to communicate with each other automatically. When one allied vessel or drone or whatever wishes to communicate with another entity that it trusts, it will broadcast its IDCS to that entity, and that entity can then modulate the IDCS with whatever input signal to send instructions directly to the first vessel's computer systems. Because both entities are agreeing on using the same carrier signal, they can re-convert each other's signals into a series of 0's and 1's, whereas if an entity receives signals that are modulated using a different carrier signal, it'll interpret the resulting signal as garbage (therefore avoiding the possibility that the signal will do something bad), and furthermore it will know that an untrusted entity is trying to broadcast signals to it. That'll make it suspicious.
So, when your hacking drone begins establishing a connection with the mining vessel's computer systems, it will try to discover its IDCS. This process will take some amount of time, but it will report back its progress to you. When it has the IDCS, you'll basically need to transmit your virus over, but to get it trusted, you will need to modulate the signal you send over with the appropriate carrier signal - the mining vessel's IDCS.
Now, I want you to think of Josh's radial scanner UI. Here's the link if you want to see it as you read this. Now, based on Flatfinger's suggestion (that Josh is very fond of), imagine that instead of having it display temporal-space (i.e. as a history buffer), what it actually displays is frequency-space.
Now imagine something similar to that, but instead of displaying signals being detected by your vessel, it displays signals being (or that will be) emitted by your vessel.
So basically, every bar you see in that radial UI corresponds to a sinusoidal wave of a particular frequency, right? Now, this really clever mathematician called Joseph Fourier discovered that any arbitrary periodic function can be represented as an infinite sum of sinusoidal waves of different frequencies, known as a Fourier series. See for yourself:
Spoiler: SHOW
Now, because what Fourier said is true, you can generate a signal like that by combining a bunch of sinusoidal waves of different amplitudes and frequencies (and phases, but let's not overcomplicate things ). So how do you do that? By dragging bars on a radial signal generator element in your HUD.
The waveform I posted above can be expressed as: f(x) = 0.2cos(x) + 0.1cos(2x) +0.3cos(3x) + 0.2cos(4x)
So this waveform is composed of a fundamental frequency and the following three harmonics. Let's assume that the fundamental frequency is 60 Hz. So then the second harmonic is 120 Hz, the third is 180 Hz and the fourth is 240 Hz.
Then a workspace will show up containing a Scanner Generator UI element that looks like this:
- Up = fundamental frequency
- Left = second harmonic
- Down = third harmonic
- Right = fourth harmonic
I don't expect the average player to be a whiz at harmonic analysis (I suck at it myself), so what will happen is that, depending on the quality of the hacking module and the amount of CPU allocated to it, it will narrow down the ranges in which it calculates the harmonic amplitudes to reside within:
I spoke about program complexity earlier. The more potentially dangerous or exploitative your virus is, the more complex it is, and so the more code it likely consists of. The more code it consists of, the longer it will take to transmit it to the other computer, right? So to transmit the virus, you will need to keep your signal generator honed at the other vessel, and making sure that its generating a carrier signal that matches the victim's IDCS. The more complex the virus, the longer you will need to sustain this for in order to successfully transmit the virus.
However, the other vessel will have automatic security systems in place, and these will (among other things) continuously and gradually alter the waveform of the IDCS over time.
So let's say that after a while, the waveform changes to this:
This waveform corresponds to the Fourier series: f(x) = 0.2cos(x) + 0.5cos(2x) +0.4cos(3x) + 0.2cos(4x)
So now, your signal generator UI may look like this:
Let me explain what's happening here:
- The green box shows where you would have the harmonic matched very close to what it should be. Keeping the amplitude of that harmonic in that range is what you want.
- The orange box, which is always wider and encompasses the green box, shows the range at which the harmonic is close but not quite within the right range. Your virus transmission rate will decrease. For instance, if you're controlling four harmonics, and one of them is in the orange zone, your virus transmission rate might be 75% of optimal. If two out of the four are in the orange zone, it might only be 50% of the optimal rate.
- If the amplitude of a harmonic is outside of this range (shown by a red circle), then that means it's pretty far off where it should be, and the victim computer system will start to get suspicious. The more harmonics are in the red, and the longer they stay there, the greater the risk that your hacking attempt will be detected by the victim computer system.
Josh likes the idea of being able to do things manually and automatically, and this offers a kind of sliding scale of manual to automatic, depending on how much CPU you allocate to your hacking module. The more CPU you're allocating to the hacking module, the better it will assist your efforts to keep the harmonics in check, and the less time and effort you will need to spend making corrections. This means that a hacker with a high quality hacking module and a lot of CPU allocated to it may be free to do other things and only periodically check back to the hacking module to make minor adjustments.
So if you keep it so that your emitted signals matches the IDCS of the target vessel, it'll be able to transmit the virus over to the target system. You'll see a progress bar, and when that hits 100%, the virus will have been fully transmitted and take effect. Like Behemoth said, the amount of time the virus will remain active will negatively correlate with its potency and the complexity of what it's trying to do, to keep things in balance.
I should point out that I've been talking this whole time as if a vessel only has one IDCS. It doesn't. A vessel will maintain a set of IDCS's, some more complex than others, and these IDCS's grant trusted vessels different amounts of control over the vessel's own systems. For instance, a vessel might maintain a simple harmonic just for low-priority, peripheral systems, medium-complexity IDCS's for things like databanks holding fairly important data, and perhaps scanners, and highly-complex IDCS's for things like reactor-control systems, weapon systems and life support. This will mean that if you're trying to transmit a virus that extracts basic data, you may only need to worry about matching an IDCS with four harmonics. If it's controlling sensors, it might be six harmonics. If it's controlling a reactor, it might be ten harmonics that you need to worry about.
One last point that matters more to immersion than gameplay - the actual waveforms and harmonics are meant to be interpreted as abstractions for vastly more complex waveforms. Where the player has to deal with four harmonics in gameplay, you can imagine that the actual waveform might be composed of 4 million harmonics. This is because even the crappiest computer today would easily be able to deduce the Fourier series of a waveform based on just four harmonics.
Going back to the mining vessel example quickly, you will have designed and compiled a fairly low-complexity "open cargohold" program, matched a pretty simple IDCS that the vessel uses to grant trusted entities access to its cargohold and other systems of a similar security clearance level, transmitted your virus over in no great amount of time, and then as soon as the virus is transmitted, the miner's cargohold will pop open. You fire up your engines, swoop right past the miner and channel all of his cargo into your own hold. You kick your H-drive into cruise mode and fly away into the night. Well done for successfully looting a miner without having to kill him. What a nice guy you are!
So, why all this?
- It's far less mini-gamey. Really, it'll feel pretty similar to scanner gameplay, the way Josh showed it in the last video. But instead of detecting signals and interpreting bars on a radial UI, you'll be emitting signals and controlling the bars on a radial UI.
- It's more appropriate for an action game. You won't be popped into a tower defense game or anything like that. You'll be orientating your vessel in the right direction, making sure you remain hidden, etc.
- There's no need to run the game in slo-mo. Time will pass normally while you're doing this. If you're doing this in the middle of a battlefield, you'll probably want allies to help keep the heat off of you as you hack.
- It still allows for the possibility of upgrades, both offensively and defensively.
- There are precautions and steps that can be taken by both you and other agents to better defend against being hacked.
- It's a hell of a let less time-consuming.
- It fits the feel of Limit Theory a lot better.
- It's not OP - like Behemoth suggested, the more powerful a virus is, the shorter it will remain active for.
- It's honestly not as complicated as it may sound, what with all that about Fourier series and stuff. Just make sure the bars stay within the green boxes and keep your ship pointed in the right direction.
- It's simpler for Josh to code.