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

Replace Unity UI code with custom high-performance asynchronous UI system #167

Closed
Frooxius opened this issue Jan 19, 2019 · 3 comments
Closed
Assignees
Labels
Long Term Gonna be awhile Performance relating to internal performance or improvements/optimizations
Milestone

Comments

@Frooxius
Copy link
Collaborator

The current system causes long pauses as UI layout is generated synchronously on the main thread and it too much into Unity engine, which makes implementing certain features difficult.

This framework needs to be replaced with a custom one, that does all the updating and generation asynchronously, which will only cause delay before seeing updated UI, rather than freezing the whole world.

Not sure when I'll do this one as it requires a fair amount of work and custom shaders.

@Frooxius Frooxius added Long Term Gonna be awhile Performance relating to internal performance or improvements/optimizations labels Jan 19, 2019
@Frooxius Frooxius self-assigned this Jan 19, 2019
@Frooxius Frooxius added this to the Beta 0.9 milestone Apr 30, 2019
@Frooxius
Copy link
Collaborator Author

During profiling, I've found another performance issue - grabbing a window with the UI system causes the entire UI system to reevaluate and run the layout again, causing significant amount of lag. This is another thing that will be resolved with a custom system.

@Frooxius
Copy link
Collaborator Author

Frooxius commented Jul 7, 2019

To add a little more information and reasons for this, there are several other problems with current solution other than the performance:

  • Glitchy behavior - current framework doesn't integrate well with Neos' data model and is based on some hacks, which results in odd behaviors (e.g. when pointing at two different UI items with each controller, or the current hovered item not being correct)
  • Extensibility - it is very hard or impossible to implement certain behaviors, because they're a black box from Neos' perspective. For example layout is done completely outside of Neos, so it doesn't know where are individual UI elements actually located. Any features and interactions that require this cannot be implemented and neither can be any new UI elements and behaviors.

@Frooxius
Copy link
Collaborator Author

This is now done and UIX is live! :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Long Term Gonna be awhile Performance relating to internal performance or improvements/optimizations
Projects
None yet
Development

No branches or pull requests

1 participant