daid / EmptyEpsilon

Open source bridge simulator. Build with the SeriousProton engine.
https://daid.github.io/EmptyEpsilon/
GNU General Public License v2.0
531 stars 181 forks source link

Making Hacking a little less random #467

Open RustyPotato opened 7 years ago

RustyPotato commented 7 years ago

I was playing the relay role the other day, and I was a little bit angry at the fact that, like most minesweeper games, the mines were arbitrarily set up. This leads to situations where the "correct" answer is logically unsolvable and it is impossible for the player to know the result without guessing.

I know it's a small thing, so I'd like to see it with deterministic puzzle where there is no guessing necessary.

Also since we are talking about hacking, what are people's thoughts on having flags/markers to denote bombs, as found in other minesweeper variants.

daid commented 7 years ago

The minesweeper was always indented as a placeholder. But life did kinda catch up with me and never found time to replace it.

However, the reasons why I picked it are valid I think. With room for 1 mistake, and the time element, you are pressed to solve it as quick as possible, or just fail and try again instead of studying the possible solutions. Yes, occasionally, you are left with guessing. That's the curse of the RNG. But failing isn't a huge problem, as it generally doesn't make the difference between life&death.

The whole reason I added something was to make relay feel more engaged. As relay was just generally standing around doing not much.

The reason for the lack of flags is two fold, one is the "it's just a placeholder" the other is that we play on touchscreens, so putting down flags would have been a bit difficult there.

But maybe you have a suggestion for a replacement minigame, that also feels more like hacking?

amir-arad commented 7 years ago

Here's what we do, for our specific needs: when we simulate hacking in our larps (even with EE) we use a terminal console game (the hacker needs to connect with putty) where the hacker needs to pass fast typing challenges. A hack is generally a series of 3-7 lines, each line is a string of 20-200 characters (alphanumeric, sometimes special characters, no whitespace). The hacker has a cursor that only progresses when the next character is typed, and the "computer" has its own cursor that advances in a seemingly random, but pre-determined speed. each line completion resets both cursors (if the computer completed a line before the hacker, the hack failed) it looks something like:

-----------------------------> aLSfcnJ6KA33iu0fhe482hT34fH9T#TH453G5Y%gDeRgtYUg3VeR8GHe54t#$DF1 ==========================================>

the difficulty parameters of a hack are the number and length of lines, the types of characters in a line, and the computer's speed (both total time and distribution of progress: there's a lot of drama when a seemingly slow computer starts speeding up exponentially after it passes 30%). The gamedifficulcy is self-adjusting per player, so it gets harder after each success and easier after each failure.

We like that hacking simulations because it has an overall predictable failure ratio (game-design wise), it demands the hacker's total attention, and the scene in the eyes of the rest of the team is very old-school hacker movies. However, in our games cyber warfare is its own station in the bridge, as the comms officer usually has her hands full (it's a larp, so there are real people communicating over the comms). also a noisy keyboard goes well with our rugged sci-fi theme (we like "The Expanse" feel more than the "Star Trek" feel).

aBlueShadow commented 7 years ago

I find the take-over minigame from paradroid kinda cool.

for those who don't know that game, there's a free clone called freedroid, wich is e.G. in the debian repository: screenshot_20170724_222828

Maybe hacking could be like a stripped-down version of the game: Instead of robots, you have to take over multiple "data nodes" before you are powerful enough to attack the "master node" 999. Like in paradroid/freedroid you could also try to to attack nodes that are much more powerful than the one you are controling, but that will result in a much more difficult hacking attempt, as the enemy node will have much more power-capsules than yours.

aBlueShadow commented 7 years ago

I made a mock-up how this maybe could look like in EE:

Node overview paralon-overview Taking over a node paralon-takeover

thorgod commented 7 years ago

That looks fun. But how hard would it be implement.

daid commented 7 years ago

Maybe I'm stupid, but I never really understood the hacking game of freedroid. It felt "random" to me...

I do like the "top" part of the concept, taking over multiple nodes to slowly attack and take over the system. (Deus Ex - Human revolution did something like this as well) But the takeover "minigame" is important then.

aBlueShadow commented 7 years ago

Actually I also didn't understand it when i played the original decades ago. I guess the logic-gate thing is pretty straightforward, turning more blocks in the middle to your color than the computer by powering the according lines.

But one important thing is that each power capsule only lasts a few second, so the one that powers the block last will win. Exception are repeaters (colored capsules in the original, "+" in my mockup), here the line will be powered till the end. So it can be a good idea to wait just before the time limit runs out. When a block is powered from both sides, he is flickering until one of the lines runs out of power. Thats maybe what looked random to as back then without knowing the timed power thing. After knowing that, the hacking game is imho pretty easy to understand, so maybe a short help message would be needed.

daid commented 7 years ago

I like it that most of the rest of the game explains itself pretty quickly. (If you are not afraid to press buttons). I'm not a fan of needing messages to explain things.

aBlueShadow commented 7 years ago

OTOH, the only reason why the current hacking minigame needs no explanation is because most players already know it from minesweeper :-)

Maybe the time a charge lasts can be indicated by a gauge next to the line. Or the charge is used up immediately, so no time of uncertainty is needed. But that might make the game more hectic, as the same line could be repowered immediately, enabling annoying back-and-forth recoloring moves.

But now as i'm writing, a compromise could work: No flickering, the middle block instantly takes the color of the last charge that reaches it, but the powered lines still are blocked for a few seconds, so you have to wait a while if you want to re-power a line. That way it should pretty clear what is happening, while still keeping the original spirit and tactics.

Fouindor commented 7 years ago

While I like the concept of the presented hacking mini-game, I fear it may be a bit confusing for random pickups/convention games (especially logical gates concepts).

A “middle-of-the-road” solution may be be a Mastermind/Bulls and cows (https://en.wikipedia.org/wiki/Mastermind_(board_game) & https://en.wikipedia.org/wiki/Bulls_and_Cows) type game. I like this solution because it is still a good compromise between simplicity for players and for programmers, quick enough and it will eliminate unfair randomness.

TolotosRhodan commented 6 years ago

Just an Idea, let`s use Game information.

Relay opens a Screen for Hacking, similiar to Comms. There he can put in information debending what he wants to hack or simple push a button of what he want to hack and then he gets selection options like the Shield Frequenz at weapons.

Hacking Shields: "Shield Frequenz" - "Ship size" - "Number of Shields" - "max Shield power" - "which shield to hack" Timer 5 seconds. if correct -> this shield gets dropped to 0%. He can either "quess" the information or ask Science for them.

Hacking Impuls: "ship type" - "move speed" - "Ship size" Timer 10 seconds. if correct -> Impuls dropped to 50%

and so on...

You get rid of the minigame, and use actual game mechanics, also Science gets a more "important" role and Database gets more usefull unless relay knows each and every ship in EE.

amir-arad commented 6 years ago

@TolotosRhodan I really like the idea of researching the target in order to hack it!

However, I think that hacking should take longer and be less certain than a speed trivia game. An attack should be something that takes time to "plan" and execute.

The hacker has a limited number of concurrent attack operations she can start/kill at any time.

each attack is directed at a single specified target (i.e shields of ship X, maneuver of ship Y). the time takes for an attack to succeed is determined by the amount of info it is provided. for example, attacks with no info will take around 10 minutes, and attacks with 10 correct data items will take a second. incorrect info means a silent fail (it will take forever), but when the hacker is uncertain of some detail, she can simply spawn another attack operation with the same info except for the one in question.

an attack starts with 0 info on the target, and the hacker can put in more info at any time, as she finds it out in the database / from the science officer.

add to that some randomness, and hide the duration (current and required) from the hacker.

amir-arad commented 6 years ago

also, a lot of relevant information may only by retrieved via a successful hacking attack, making the information itself a target for hacking. example: attack target can be network of ship X. this attack will take a short time (and/or require very little info to succeed immediately) and will provide a random info detail of the target ship (network layout, pulse sequence, hash metadata, foo/bar ratio, node-e34x encryption key etc.). this info can then be used in other attacks on the ship, either for more info or for direct effects. this means that the hacker's ability to inflict damage to a specific ship can increase exponentially as long as she's working the target. making her a natural boss-killer.

having the ability to run multiple parallel attacks on a ship might be an overkill in such a mechanic, but it can balance if a ship only has a limited amount of hackable info.

amir-arad commented 6 years ago

How about the fishing minigame from stardew valley? a target has several encryption keys (say, 2-7, depending on the target) which are the equivalent of fish. in order for a hack to succeed the attacker needs to reach a state where she successfully 'lock' all of the target's keys. ('fished' them all). a 'lock' has a timeout of 30 seconds, so in order to hack a target with 7 keys she must be really quick about it, and probably spend a lot of time re-locking previous keys. the UI model is very similar to the power management screen (though it can be made to look much cooler)

nerdcorenet commented 2 years ago

FWIW, I like the black and white flip-flop Hakcing game, but I find myself clicking "Reset" over and over again until I find an easy solution (1-2 clicks). If the solution is more complex, I just Reset until it's easy to solve. This is immersion-breaking for me a bit, as it seems deeply unrealistic. I don't have anything better in mind except maybe making each hack static and disallowing manual Reset. Just my $0.02.

Umbetari01 commented 2 years ago

Hi! I really like the idea of a mini game for hacking, and it serves its purpose of engaging the relay player well.

However, I find two problems with the minesweeper: 1. In all the games I've played, the enemy ship gets destroyed before I can do any significant hack with the minesweeper. This feels discouraging and I root for a faster mini game. 2. The lack of marking button backfires in the face of the experienced minesweeper players, causing them to loose a favorite game, and makes it needlessly hard on an inexperienced player.

There are several logic-and-dexterity puzzles out there (pipes, bulls and cows, nonogram, damn, even blendoku) - please, help us relays out, @daid ! ;)