UI Design Suggestions

Discussion in 'General' started by sarashinai, Feb 28, 2017.

  1. sarashinai

    sarashinai Active Agent

    Hello all, I wanted to start a thread to discuss suggestions for how Stinger OS is being designed. This discussion shouldn't be read as a complaint, this is an Alpha release after all, but it would be good to get this discussion going in the early stages as making the changes later on would likely result in a lot of extra effort that could be avoided.

    Playing through Alpha 0.4, there is a big stress on using multiple workspaces to run multiple tasks. This appeals to my power-user mentality and I tried to embrace it but I found I was slowed down by how I was forced to actually run tasks. For example, it's very common to run to run this series of commands at the start of a mission: search for hosts, portscan, fingerprint, and then foxacid. There's two ways you can do this:

    1. Click through the menus to get to each tool
    2. Type in the name of the command with all appropriate parameters into the current terminal window

    Both of these has its own issues.

    I'll start with case 2. This is very familiar command line interface behaviour but there are two things missing: a standard shell (terminal) and keyboard caret control.

    Since I always need to type in the commands, I'd like to be able to quickly open a blank terminal. I think this should be a main menu button; one click = terminal.

    This also presents in a different way in that each different command I enter automatically opens a new terminal. For the frequent command chain I mentioned above, that's four separate windows that are less useful than an extended terminal scroll history. As well, there's too many independent terminals, they should all share the command history and opening a new one should be optional, perhaps by prefixing a command like "term" before the actual command.

    All in the same terminal:
    portscan rosenews.com
    <- portscan results shown here
    fingerprint rosenews.com -p 80
    <- fingerprint results shown here

    First terminal:
    portscan rosenews.com
    <- portscan results shown here
    term fingerprint rosenews.com -p 80

    Second terminal opens:
    <- fingerprint results shown here

    "term" would also be a useful command to open and switch to a new terminal in the same workspace.

    That ties into keyboard caret control. Inevitably, I'm going to press enter on a mistyped command. Right now, I can press up to bring back previous commands but I can't edit the line with the keyboard, I need to switch to clicking with the mouse in the spot I need to change and then switch back to the keyboard. I can see the argument that this is faster but I'd like the option to stay on the keyboard.

    The issues concerning case 2 really connect to case 1, as the process of clicking through the menus to access extremely frequently used tools is cumbersome and, in the end, doesn't save you from having to type the commands again. Clicking a tools menu item provides a useful description of it's use but, after a couple of missions, I've already memorized the names and parameters for the commands. I suggest two ways to resolve this: Turn that menu into a series of manual entries so you can have a new window open with the usage for the command or give the commands their own inner shells. Here's an example of what I mean by inner shells:

    csh> nslookup google.ca

    Non-authoritative answer:
    Name: google.ca

    csh> nslookup
    > google.ca

    Non-authoritative answer:
    Name: google.ca
    > ^C

    In A, I typed the command and parameters together and got the response back, same as in Alpha 0.4. In B, I typed just the command name, pressed enter, then got the commands inner shell where I only needed to type the parameters. This is especially useful when you want to use the same command over and over but don't want to have to retype the command name (or press up).

    I'm eager for others' insights into these and other UI design choices.
    Anders, Iuvenalis and raul_ct like this.
  2. Anashel

    Anashel Puppet Master Staff Member

    Hi there!

    Thank you so much for starting this thread, you have no idea how excited I am to talk about Stinger OS and how I can make it an awesome experience for you guys.

    Quick comments on your post:
    • Case 1: As you know, the terminal and stinger OS is a simulation built in Unity. Each terminal holds its own code behind it. Because of that, we can't use a powershell that holds all the code for each terminal.
    • Case 1 B: Right now you can type any command in a terminal and it will automatically open a new terminal and execute the command. (What you describe as the command Term)

    • "I can press up to bring back previous commands but I can't edit the line with the keyboard..." : No, this is a bug. On most PCs, you can use the arrow to navigate your cursor and insert / delete what you want.

    • As for the inner shell system, it could be possible.
    That said, the terminal experience you have is not the game I want to build. It IS part of it, but lets brainstorm around the Terminal foundation and all the crazy things we can do with it!! There are three types of terminal, so far only two types have been explored.

    1. Direct to OS module (aka basic terminal):

    These terminals let you control a specific sub-routine within the Stinger OS. These are crude implementations, but efficient. For now there are 3 of them:
    • DNS and VHOST Mapping
    • Portscan
    • Fingerprint
    Future additions include:
    • WMI scanner (Alpha 0.5)
    • Custom IoT and Scada system connector (Beta)
    It is worth mentioning that in the next version, the Fingerprint tool will be upgraded with an exploit database. Since Fingerprint already injects thousands of requests to detect the technology signature and the operating version, it will be able to mark any technology for which exploits are known at the same time.

    2. Assisted FAY module (aka enhanced terminal)
    This terminal includes "AI assisted" commands to manage a high volume of calculations and decisions related to the input given. For this case, PRINCE config (modern password guessing algorithm) is improved to use FAY in order to validate variables to shuffle the dictionary.

    Foxacid is a enhanced terminal. Right now, we did not have the time to implement it, so it's only used to inject a rootkit on a vulnerable technology to enable Turbine C2 control.

    3. FAY Uplink (aka FAY Terminal)

    These are terminal modules powered by FAY Artificial Intelligence, for processing quantum levels of information. Most of the hivemind experience falls into that category, as well as XKEYSCORE. They have their unique visual aspects but still interact with each other.

    Missions will involve various modules: fast pace sniper attacks (basic terminal), medium level sustained attacks (enhanced terminal) and nuke level attacks (FAY terminal). Scenarios will start to become less network-level.

    Next mission, for example you will be challenged with a missing persons case.


    Right now it is provided as recon graph, but we are working on mockups to provide you the information in various other formats. For example, an interactive mobile emulator to dive into your target's sim card.


    Keep in mind that all of this is an early work, and it is more probable that NT4 has the ability to remotely tap into your target's cellphone versus having to get their sim card. But you get the idea: multiple terminal experiences, multiple terminal levels, a design where the goal is to have the terminals bring value to each other rather then being merged into a powershell, a seamless cyber investigation throughout all the tools provided by stinger OS: all that to support the core storyline.

    Our work is far from over and there are countless of hours left of it to do, nights and weekends to get there, but these discussions are what make me so excited, to create this game with you all.
    Last edited: Mar 1, 2017
    sarashinai and Joris like this.
  3. Joris

    Joris Active Agent

    For case 1. how about a shell that contains all the commands but instead of excecuting the command itself it opens the terminal that is able to excecute the command?
  4. Anashel

    Anashel Puppet Master Staff Member

    That's how it is right now. In every terminal you can input any commands. So in the DNS and Vhost Mapping you can for example enter "portscan domain.com" and it will opens the portscan terminal and execute the command. :)
  5. sarashinai

    sarashinai Active Agent

    There's a lot in your reply and I want to get into all of it but could you elaborate on this first?

    I have a sideline project (a hacking MMO, do you get the feeling that I like the genre?) and am using Unity to power it. I have a terminal in mine and don't understand the limitation that you're describing. You're certainly much more advanced in Unity development than I am but I could send you my code or explore that particular limitation for you so you don't have to spend time on it.
  6. Anashel

    Anashel Puppet Master Staff Member

    Actually, it's more related to the way we made the structure to save time. The terminal is a template (animation, code, api call, namespace, etc...) that we inject the content layer on it. Content that is controlled by our CMS.

    This enables us to develop new terminals pretty fast, since it's just a new instance of a stable template. If we were to actually change it for one big module, testing, templating and integration with the CMS would be more time consuming, both in dev and in QA.

    How did you approach your terminal development? Don't assume we are more advanced in Unity, theres always a lot we can learned from other dev.
  7. Code

    Code Active Agent

    Wanted to give some various feedback on the interface. As others have said, having a general terminal that accepts any commands without opening up a new terminal would be cool. Of course if it can't be done, it can't be done. Also I would really enjoy a hotkey to get the initial text info you get when opening a module. That text disappears after enough commands, and I have to close and reopen the module to get that info back. It's more useful to me than "help" command. Additionally, the "help" command doesn't show you parameter limits, making my previous point more needed.

    Now onto the handicap issues: I have really poor eyesight, and the transparency of the terminals is not helping at all. There needs to be a transparency slider in the graphics setting, or at least a toggle on/off. I notice the window gets a little darker when in focus, but it's not enough. Additionally, there should be color blind settings, especially with skins like the red one I've seen around.

    And finally UI flow: Pretty decent. The only thing I wanted to mention is I keep accidentally hitting Mission Center instead of Hacking Tools which is a bit annoying when I'm in the zone and I get interrupted by the debrief. There's a lot of space there on the left column, please consider spacing the options a bit more. A final gripe, some with terminal exposure would be interested in being able to navigate the entire game with keyboard only. That might be a tall order for the small return though, just wanted to mention it.

    Edit: Noticed the Shutdown option does not have a confirmation screen. "Are you sure you want to exit?" This is needed, especially considering how close that button is to the Settings option.
  8. Anashel

    Anashel Puppet Master Staff Member

    Hey Code!

    Thanks for the feedbacks, stuff like the transparency setting is easy to do. I will put that in our next QOL patch.
  9. codex-13

    codex-13 Senior Agent

    Seconding that I consistently hit 'mission center' instead of 'hacking tools'. Maybe move it to a different part of the screen? You really only need it once (maybe twice if you get stuck) per mission.
  10. Code

    Code Active Agent

    Did a little more playing around and managed to get a window stuck up at the top far enough for me to not be able to grab the bar at the top to move it again. Need a "Clear Workspace" button and double-click on window borders to snap them back into the visible area like M$ Windows does. Additionally, terminal windows probably should have priority over the text in the top left.

    Love the game, the concept, the progress, and the dedication to the community! Don't take my posts as crapping on you at every turn, I'm just very analytical. (Probably not needed to be said, but I have found to be abrasive to some. Just wanted to get that out of the way immediately.)

    Glad to hear you'll be adding transparency option next update. Will be huge help to my vision, thank you.

    Anashel likes this.
  11. Code

    Code Active Agent

    Adding another suggestion: Ability to resize terminal windows. This ties into the above post for retrieving windows that go out of bounds.
    Last edited: Apr 5, 2017
  12. Steelgramps

    Steelgramps Gold Member

    Also if we get the rezise, maybe an easy way to tile the terminal-windows could be a nice feature?

Share This Page