Building complex UI in gamma

Searching the forum already led to several findings, but these are already two years old and I guess much changed in the meantime.

So here is my question: What is the strategy for structuring and drawing a complex user interface in gamma? - with nested layouts, preventing events from passing through layers and separating logic and interaction from the rendering?

I’ve had really good experiences working with Notuiv by @microdee in beta in the past. Is there something similar already that I missed? Or is the simple answer, that I have to patch a structure like that on my own? Any other hints?

Really looking forward to some input here!

Hi @chk, have you heard of Elementa yet? I believe this is the strongest solution we currently have for UI in gamma, it has a lot of nice features and recently had a significant performance boost.

Have a look:

Or just: nuget install vl.elementa


Sure I heard of Elementa - but what if I want to build a custom UI using hit detections and nested overlays in Stride?

Let’s say I have a fullscreen area that reacts on touch and changes some state of the application. But this area also contains several buttons that lead to other state changes - and these buttons should prevent the interaction being delivered to the area behind.

I am talking of an approach that is easily scalable to bigger applications.

Have you looked into porting this to gamma? @microdee did mention that this should be doable. Elementa is really nice but have also been thinking the lack of a such a system for 3D / Stride is limiting for some cases.

I would love to try porting it to gamma, but really don’t know how to do this and where to start.

Notuiv is just the vvvv beta wrapper for the C# library, Notui
You can try importing it in VL.
Inline documentation is very descriptive afair. You can find sources here

and of course you can have a look at the vvvv implementation but you wouldn’t need that much boilerplate for VL

As a disclaimer you might have noticed that the last commits are from 2018 and since then I don’t agree with myself on a lot of design decisions I’ve made in that library. So it is provided unsupported “as-is”. I don’t have time anymore unfortunately to answer implementation specific questions, or questions about general usage. Basically you’re on your own when using this library, and you’re free to fork it.

It’s a bummer that this library is not being maintained anymore because it’s really great…

Yeah atm I have a draft for Notui 2 in C# (not public yet) using entity component system paradigm, and it would allow much more freedom and better performance, but I will restart it for C++ actually, where I spend more of my time nowadays. For both I’m designing declarative syntax for UI building exploiting various language features (designated initializers, indexers, operator overloads, etc.). So as you can see the paradigms are not dead so far, but I have so many other things on my backlog and work to do I’m not sure when I will have time coming back to this (read in the following years)

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.