Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UI/UX redesign #299

Open
Frooxius opened this issue Aug 28, 2019 · 52 comments
Open

UI/UX redesign #299

Frooxius opened this issue Aug 28, 2019 · 52 comments
Labels
Discussion To have a discussion about a certain feature Major Feature Large bodies of work, such as major changes to the engine UI Relating to UI and UI Experience Issues UX Relating to User Experience and Feel Issues

Comments

@Frooxius
Copy link
Collaborator

The current UI has a lot of usability issues and confusing behaviors as it has grown over long period of time and needed to work with limitations of the UI framework.

With the redesign of UI framework (#167) it'll be possible to redesign many elements and workflows to make the experience more unified, streamlined and easier to use (and also look better).

This topic is to discuss the high level redesign changes planned for the system. The goal is to also make this iteration more future proof, so it can grow better together with Neos.

Here are some planned key principles:

  • Modularity - the system will be widget based, allowing every user to customize their experience to their needs and expand the UI with user-made elements.
  • Unification - instead of scattering lots if different styles controls in different places and putting them where they don't belong, build them around just a few key principles, so the UI is more predictable. Instead of rewriting common behaviors, they should be done once and then utilized repeatedly.
  • Better integration with the tool system - each tool can have its own UI panel on the other hand and on itself, so all important controls are easily accessible (similar to TiltBrush system)
  • Better panel/window system - by default core windows should be part of one display and only be popped out into independent windows when user chooses to do so to avoid cluttering the workspace. Having ability to attach, snap and minimize the popped out windows/panels will also help with organization.
  • Better context handling - certain options will only appear when they're relevant and will automatically disappear if the user doesn't interact - this will prevent having certain menus open by accident (e.g. the radial menus)

Feel free to make any suggestions too, but note that it's important to establish the general principles first. Suggestions for the current state of the UI might not be relevant, as a lot of those elements will be removed completely.

@Frooxius Frooxius added the Major Feature Large bodies of work, such as major changes to the engine label Aug 28, 2019
@TehTurk
Copy link
Collaborator

TehTurk commented Aug 28, 2019

If possible, and component cards do stay for the Logix system. There should be some sort of field or pointer(if poor terminology sorry) at the top that lefts you quick reference a component on the slot by dragging it out of the inspector, and placing it on the top of card's field It could also have quick history but that may be a bit much. This lets you build out component logix interfaces faster and less digging through the inspector. When working on UI components atm, this would be handy.

@Frooxius
Copy link
Collaborator Author

Do you mean having something like component favorites?

@TehTurk
Copy link
Collaborator

TehTurk commented Aug 28, 2019

Something like this, the history would be a convenience tool at best.
image
The component card would only work if the slot has the component.
Also maybe it would be better do have drawings or some sort of ui designs when suggesting for the future.

@sirkitree
Copy link
Collaborator

These sound like some excellent principles to start with. I'm especially excited about the Better panel/window system description.

I wonder if a guiding principle around the information hierarchy would be good to have at the onset as well. Maybe that is too into the weeds, but it seems especially important around the inspector display (visual hierarchy), inventory, file browser, and the layout of the information in most panels. Paying special attention to the vertical rhythm and proportions of the information and components within a widget can help immensely to create a sense of balance and consistency in UI design.

More on this idea: https://www.lullabot.com/articles/designing-rhythm-and-proportion

@Frooxius
Copy link
Collaborator Author

@TehTurk Oh I see, so you could build up your own favorites by dropping them there? One thing that should help a lot is search, but Coffee is already prototyping that one.

@sirkitree Yeah definitely, the new UI system should make it easier to have spacers, some common styles and sprites, that will help to visually organize and separate the UI sections and elements. That should make it easier to visually parse and find what you're looking for.

@MR-Alex42
Copy link
Collaborator

MR-Alex42 commented Aug 28, 2019

Only a little thing, but I would like to see tab orders in the new UI system.

@TehTurk
Copy link
Collaborator

TehTurk commented Aug 28, 2019

@Frooxius You could! and I can't wait for the search But originally the intent was to have it be an easy way to swap to a logix node/interface/drive/reference that another slot has as a component. So like say I'm working on a button, instead of pulling out the NeobuttonComponent interface for that button(a couple different clicks), I just grab the slot/reference in the inspector and place it there, and the wires/ins/outs would update on the card like revealing the node(one click). Instead of digging through the inspector. Generally you won't have more then 1 of the same component per slot object, and if that were the case, maybe add some sort of index to them on the object itself when there is a repeat.

@Frooxius
Copy link
Collaborator Author

@MR-Alex42 Do you mean things like this? https://helpdesk.nuorder.com/hc/en-us/article_attachments/204229446/Screen_Shot_2016-05-27_at_1.02.46_PM.png

Those are definitely planned! They should help a lot with organization.

@TehTurk Hmm I plan on reworking the Logix interfaces a lot so that workflow should improve. I'm not sure I exactly understand your scenario, but one thing that I want to do is have certain components have "exported properties", that you can quickly access without digging through the inspector.

A way of quickly accessing things that you're most likely looking for (e.g. for slider, it would be the Value, Min and Max, with everything else ignored).

@TehTurk
Copy link
Collaborator

TehTurk commented Aug 28, 2019

@Frooxius Ah okay! This is only working within the context of the current system so do what you will. This just adds to the current UI Logix System in some form. I just find the act of grabbing a reference and placing it in another object and having it being called properly so workflow convenient. The one thing I've always noticed for VR is the faster/less tedious the interaction the better. Maybe I can make some sort of concept for you to see in Game.

@MR-Alex42
Copy link
Collaborator

MR-Alex42 commented Aug 28, 2019

@Frooxius Those are table/grid UI elements that allow sorting, column selection & repositioning and filtering which would be cool to have. My request was much simpler. If I press tab I jump to the next entry field. Maybe you know the feature as tabindex from HTML: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex

@TehTurk
Copy link
Collaborator

TehTurk commented Oct 28, 2019

Wrist menus should have each a way to open their respective menus. Like left wrist will have a system button to turn on your inventory, while the right hand would have something to enable your world/audio system. (Yes the orbs are a thing, but not super intuitive of I can use these) While the new system will be widget based, the default should be basic as possible so people don't have to think ( Because many won't want to)
Also would it be possible to have the sound menu be tied to the Inventory Menu and not a switcher within the world :O?

@shiftyscales
Copy link
Contributor

There are actually gestures already in the game to do what you're describing with the respective menus, @TehTurk. If you hold your left palm to your face (such that your grabber sphere collides with your head) and press the menu button, it opens/closes the tool belt. The right hand opens/closes the voice mode toggle/session orbs. If you use grip + menu on the left hand, it opens the inventory, and grip + menu on the right hand opens the session menu.

That said- being able to define custom gestures/shortcuts would be really handy for people to optimize their UI for their own needs.

@TehTurk
Copy link
Collaborator

TehTurk commented Oct 31, 2019

Thanks for informing me on something I know Shifty ^.^, once you get used to the orbs they are mad handy, but for example a new user might not realize intuitively. Most people we need to introduce vs them being able to figure things out on their own. This is more so, a suggestion for the UX/UI Redesign. While they currently directly call these menus, it would be advantages for people to see something can interact with vs the orbs, like test or an icon to indicate. Because right now, while we meme, hello I'm new to Neos with the hand menus popping up constantly, people do get confused by it a bit. Each hand would just have a dedicated system menu of choice that could be configurable too since Froox said he wanted a widget based like system.

@TehTurk
Copy link
Collaborator

TehTurk commented Dec 8, 2019

Something like this, the history would be a convenience tool at best.
image
The component card would only work if the slot has the component.
Also maybe it would be better do have drawings or some sort of ui designs when suggesting for the future.

So I realized looking back I had misdrawn this and was still getting used to Neos and understood where I might have confused you Froox. So here's a remake, essentially it's a reference of anything, and popping it into the header above a logix interface will give you the interface you desire. The behavior could be from generating another reference or swapping out the proxy target entirely, but would let you keep existing connections. This could also let you do some more dynamic stuff as time goes on as well, as you could just write a ref to an interface, and from that have various gets()/sets() methods tied to the interface, which would also make the collections aspect easier to visualize.

mspaint_KHWmyLbhFW (Sorry for MS Paint Quality :P)

If could allow you to have things easily drop in and out, and not break logix say if a ref goes poof, and you could easily just redirect a reference in logix or in menu component.

@Frooxius
Copy link
Collaborator Author

Adding another suggestion here for later from Rukio on Discord - add a microphone gate configuration by sliding a threshold on the volume bar.

I plan on reworking it a bit to integrate it into main UI. Would also want to have the voice mode switch there and quick test which records a piece of audio and plays it back.

@Frooxius
Copy link
Collaborator Author

Logging another suggestion for consideration from the Discord: Language flags for profile and sessions, to allow filtering sessions by language and setting up languages on user's profile.

From Discord:

GroxxyToday at 12:54 PM
World language filters, people who don't speak english are starting to surface so it might be a good idea to have a language filter, to avoid communication troubles if someone who doesn't speak japanese joins a japanese world, same goes for english, spanish, everything... (either that or people are gonna need to start hiring translators) also because of ping, someone in australia hosting for a bunch of americans might be a bit messy with ping

KrimzenToday at 12:55 PM
Probably difficult to regulate since the playerbase isn't very large at the moment, perhaps a better idea would be allowing users to selected a language/country that makes a flag pop up next to their name

FrooxiusToday at 12:56 PM
Yeah that's not something I've considered yet, but it's an interesting idea. It could be at least ability to flag the world with main language so people know before they join.

I'll take it into consideration with the current UI overhaul and try to incorporate features for that.

KrimzenToday at 12:57 PM
That way users from certain countries can identify each other quickly, and perhaps allowing 2 icons (one on each side of a name?) would allow bilinguals to show that they can be spoken to in either language
Something I think would be awesome would be a profile kinda thing
Perhaps something people can program (CSS, HTML) online that other players can view

FrooxiusToday at 12:58 PM
Yeah it would definitely be good as a profile thing. You can include languages you speak. And if you host sessions it could use that information as default.

Right now you can place any extra sprites and badges on your avatar yourself, so that could work in the meanwhile.

@Igrium
Copy link

Igrium commented Jan 5, 2020

I like these ideas so far. The biggest thing I would recommend is to make the file browser look like an actual file browser you would see in an operating system (with logos and stuff), and not just a bunch of colored squares with text.

@Frooxius
Copy link
Collaborator Author

Frooxius commented Jan 5, 2020

I do plan on adding thumbnails and fetching system icons for the files if possible, but it's a question of priority, so I'm not sure how soon it'll get done. I do want to rework the interface a fair bit to be nicer to work with.

I'm not fully sure if having it look the same as OS file browser would be the best though, given the lower resolution of the VR headsets it text size should be prioritized so it stays readable. I think we could have some nice sprites for common asset types that serve more as a background for the text, but those would need to be made.

@Abysmal2134
Copy link

Abysmal2134 commented Jan 5, 2020

Something that we should probably have to help new users is a menu that shows you the key binds, both VR and Desktop, and being able to remap them. Maybe even have custom key binds that aren't linked to any action, but are instead user specific for the stuff they create or additional input devices like soundboards and stuff.

Also, something like a push to talk button, because there should be a easier way to stay muted if there's a lot of background noise like family members or headset handling.

For avatars that don't have talking animations, or just in general, there should be some kind of indicator on the nameplate, like a loudspeaker. The same thing applies to the session menu for people who are out of sight, so that you can figure out who's currently talking, and the stream camera user menu so that you know who to mute.

Something that would be nice for world creators is having shared world specific inventory that everyone can share stuff in while building.

For game worlds though there could be some way to customize your own inventory system, like a template to use for in game items that actually have a limited amount stored. Being able to set stuff like stack sizes or weight limits.

Having UI resource elements that you can set up for health and mana/energy, or in game currency/resources, which are character specific for the world.

Being able to save your progress in that game world... This is probably way beyond simple UI though. Sorry if these are too specific ideas but I think you'd have to have an UI universal system to support such gameplay elements. Some kind of templates/components to support this or we'd have to build it from the ground up with every game map.

@Frooxius
Copy link
Collaborator Author

Frooxius commented Jan 5, 2020

Thanks for the suggestions. I'm not sure if I'll get key binds with the UI/UX redesign itself, it's a separate feature I plan on adding later on. My goal is going to have good defaults for now.

We have a separate issue for push to talk: #320 There are a few issues with it that need to be solved.

I definitely want to add active volume indication to the volume sliders in the UI though, so that's definitely coming!

You'll be able to make your own UI's with the new framework (you can with the current one too, but it's more tricky), so building that isn't an issue, people are doing that already in Neos.

I'm not sure about the inventory system customization, that sounds like it's game-specific and it kinda falls outside of the scope of Neos' general inventory. Same with the saving progress, that's not something the UI is going to be responsible for.

It's something you can script with LogiX or there might be components to make it easier, but that falls outside of scope of the UI/UX update.

@Abysmal2134
Copy link

Something else I think should come with the new UI is an info box/tooltips. In this case the sooner the better, since new features being implemented would require some kind of in game description on what their purpose is. My reasoning for having tooltips is giving new players all the information they need without requiring to consult outside sources like the wiki or relying on someone with the necessary knowledge to be around.

This is why I wanted keybinds too, but even a temporary image to consult in game is would be nice.

We can't always rely on the community, plus having an explanation on what in game tools do speeds up the process of learning. Also having an option to write a description on items now, would allow us to have a easy how to use guide before spawning them. Really usefull for informed decisions on purchasing items when publishing becomes available.

Logix and components can have explanations and use cases too. Basically having some way to get all the info you need in game, the sooner implemented the the better. It's better practice to have new features explained at the time of release, with in game sources, otherwise we have a huge pile of stuff you can do but only few people with the experience and knowledge to use them.

@Frooxius
Copy link
Collaborator Author

Frooxius commented Jan 6, 2020

Yes, tooltips are one of the major things I want to add with the UI/UX redesign. They're something that's not possible/easy to add with the current UI framework.

The explanation part is tricky though, the explanations and documentation needs to be written. Especially for components and such that's a lot of documentation work, so I don't think it will happen right away.

I do want to link it up to Wiki/Translation system later on though, so community can help documenting a lot of things and have it shown for other users in-game.

@Frooxius
Copy link
Collaborator Author

Adding note from Discord: Setting to determine which action gets preserved when using one-controller setting - turning or strafing. Alternatively preserve whichever controller is free.

@Frooxius
Copy link
Collaborator Author

Another from Discord: Option for controlling movement/strafing individually based on head or controller, to allow better customization.

@TehTurk
Copy link
Collaborator

TehTurk commented Jan 13, 2020

There was actually a really good concept with locomotion curves from the guys on Boneworks to at least handle all the different types as well. I think something like this would greatly benefit Neos.
Screenshot_20200112-215536~2

@Abysmal2134
Copy link

Something else I thought of that would benefit UI windows is being able to set up and save their default scale. That way people having problems reading the tiny text can set their windows to be larger, or those with higher resolution headsets can scale them down.

Also having an option to make the window screens face the user directly (like the portal camera in the MTC character creation room).

@DeliriousJax
Copy link

new-wrist
condensed-wrist-menu
inventory-restructure
new-menu-main
new-menus-restructure

Not sure how much of this is relevant anymore, but I figured it's worth keeping them around.

@DeliriousJax
Copy link

When using widgets to build custom ui elements/windows, I was thinking it could be pulling out from existing windows or using a blank window, clicking a gear>clicking edit window, then going through a categorized widget browser to add and remove what the user wishes before attaching them to a users personal space hard point.

I was also thinking if the main dash could have row options so it can be condensed at the users desire to be more middle of the screen square. One issue I see a lot is how often people have to look left and right and get frustrated having to turn nearly all the way left to right in english reading fashion before finding something like tools on the far right. If they have the option to stack dash items in a 3x3 (example, numbers flexible) grid it'd probably help them use a directional muscle memory reflex when going for specific items upon opening that menu. Admittedly, even I still go all the way from left to right in the oculus dash itself when looking for the virtual desktop.

@DeliriousJax
Copy link

Note: dash elements can be re-arranged to preference too, right? Thatd make a lot of people happy for customization reasons.

@shiftyscales
Copy link
Contributor

Facets (formerly known as widgets for lack of a better name at the time) will be modular by design so that users can customize the look, and placement of them, yes, @DeliriousJax.

@DeliriousJax
Copy link

I mean the primary Dashboard/Menu. That covered, too? I'd even recommend having the default start with two rows if it's rather long left and right otherwise.

@DeliriousJax
Copy link

Another thought. Has menu button mapping been discussed? Like pressing "m" on the keyboard brings up a dialogue in VR that let's you map your controller combos to what menu you want it to quickly bring up?

@Frooxius
Copy link
Collaborator Author

Frooxius commented Apr 1, 2020

Yes the pulling out of elements is planned! Essentially the UI will be composed from "Facets", functional pieces of UI and containers (like the dash, points on your avatar or in your placespace/viewport) where you can place them.

By default, all essentials will be in the dash, with a simple access, so new users don't have to worry about lots of different places, but as you get used to the new UI you can start recofiguring, rearranging and extending it with new/custom Facets.

I do want the dash to be smaller and more snug too so user doesn't have to turn as much, but also needs to fit in all the essentials properly. Being able to adjust its size sounds good! Not sure about rows yet, I'm not yet fully decided on units, but it'll likely be more finegrained than that. and grid-based. The Facets should be adaptive too.

For controller mapping that's a separate feature/system from the UI. I'd like to add it at some point, but it'll have to be a later thing.

@DeliriousJax
Copy link

neos-menus-pngs
I spent time concept thinging

@DeliriousJax
Copy link

Each block is an added in widget with a containing window and certain widget types can be added for extra/other windows.

@DeliriousJax
Copy link

Optionally, no containing window, and the widgets just stick together at the edges.
Another concept I think I'll work on is how grids could work vs hexagon aligning as well with hexagonal widgets because why not.

@sirkitree sirkitree mentioned this issue Aug 6, 2020
@sirkitree sirkitree added the Collections Issues that require collections label Sep 4, 2020
@Frooxius Frooxius removed the Collections Issues that require collections label Sep 7, 2020
@PolygonBird
Copy link

Hey, just in response to the comment on my Steam review about the GUI!

I may be repeating a few points that some people may have already mentioned, but I endorse though~

So.. I have put over 120 hours into Neos, even tried encouraging people to join up with the fun, but from them I hear the same complaints and it has been mostly about the GUI. All of them I agree with. You can make an amazing game, but if you put a confusing GUI with a learning curve, it really can be discouraging for people. The minute people have to learn something they start to lose interest very quickly.

I do have some game design experience, but so I can be critical. I have taken some notes from my first experience around Neos, I have also taken note of peoples opinions about it.

So!.. Let's start. I will compliment the new introductory world, it is very informative for first getting started. That was a big step since I didn't go through that when I first signed up, needing friends to guide me through.

However, The build editors need a fair bit of work..

Critic:

  • Too much information in your face with categories all in one view.. A lot of it is not relevant until it is, and there are so many opportunities to accidentally push a button or remove an attribute you did not intend to. Some I found with no way to revert the error. People want the basics when they first start.

I would suggest being able to Collapse and separate categories into tabs You want to make everything as clear as possible with the tabs,
eg. Materials could be their own category and icon that clearly shows it is materials. You want to reduce the amount of information that is in your face until it is relevant. This is not saying to get rid of anything, but to hide it so you can quickly jump to what is relevant to what you do.

  • Menu colours and font
    They are affected by light which can be problematic, eg, you set your worlds skybox or light exposure way too high, blooming out everything leaving you unable to see anything leaving you blind to revert the erroneous settings. I believe this UI should be unlit and not influenced with the light and environment at all. I'd also argue about the main menu having people able to walk in front of your view blocking what you are selecting, they do not know you have your menu open, I feel that this menu should always be in front of anything in your scene.

  • One solution for the accidental selection would be to implement the double press as Neos does with the delete button in the inventory.

  • Highlighted selected objects

The current method of a wire box surrounding the model is not very clear on what you are selecting.. It is a different way to do things, but the most informative way would be to highlight and silhouette outline the object you are selecting. Every game, or 3D program does it this way, it is rather proven to be the most effective way to show a selection.

Overall, these are a few big problems I see that need attention, but there is even more that I would address later on about the GUI. Yes I am aware you can get new build tools made by Neos users.. That took me 3 weeks to find out. Already got a tool that covers all my personal problems. But that is not available for newbies.

The real TL;DR that really needs to be done is to hide the complex stuff until they are curious enough to get into the cool stuff~

I have high praise for Neos and would love to see it succeed! I hope you find any of my advice helpful.~

@Derpford
Copy link

Derpford commented May 6, 2021

I have no idea if this has been brought up, but a lot of interactions simply don't work right with desktop mode, and this includes menus--for instance, I tried to use the UI edit mode earlier today, and I quickly realized that I can't grab things inside my Personal Space in desktop mode! Neos has made great strides toward usability without handtrackers and a headset, but I'd like to see the UI redesign come with better desktop mode support.

@shiftyscales
Copy link
Contributor

This is simply because those a mechanism for those interactions in desktop mode just hasn't been developed yet, but is planned, @Derpford.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Discussion To have a discussion about a certain feature Major Feature Large bodies of work, such as major changes to the engine UI Relating to UI and UI Experience Issues UX Relating to User Experience and Feel Issues
Projects
None yet
Development

No branches or pull requests