Sunday, July 13, 2014
YES! I swore that I wouldn't post a dev log until I had the stack-based nodal UI working. It almost killed me, but I got it From now on I'll refer to it as layer-based instead of stack-based, because I think that's a bit more descriptive.
Layer-Based Nodal UI!!
Instead of a single nodal UI display, what we now have is essentially a set of composited layers of nodes. As I mentioned a few days ago, the primary motivation behind this change is to provide more context for the UI. Previously, selecting a node would 'zoom' to the location of that node in the UI. In doing so, we would often lose sight of all of the other nodes at the previous zoom level (because they would be far away in comparison to the zoomed-in node). This all happened in the same UI 'layer,' which is one of the cute tricks that I used to render the UI very quickly (because it required essentially no compositing).
With this change, I can now overlay an arbitrary number of node layers, and can apply transformations to them to create the appearance of depth. Now, instead of zooming to the location of a node, the default UI behavior for activating a node is simply to pop open a new layer displaying the contents of that node (and push the old layer into the background). The result is more contextual information, a better sense of where you are within the UI, and several cool possibilities for features that I'll discuss in a moment
One of the big advantages of the node UI was how quickly it was able to render loads of data. Again, that was a side-effect of the single-layer compositing. With the new layer-based UI, we can still render very quickly - nodes within a layer are batched and drawn in the same call, but we do have to render each layer separately to obtain reasonable results. Still, we retain most of the benefit of the node UI's batching, as having only a few draw calls per layer is still really efficient compared to a few draw calls per UI node.
Layer Cycling
With a set of layers available, it now makes perfect sense to allow the user to tab between them, essentially walking back and forth on one path in the node hierarchy. I can imagine a number of situations in which tabbing back and forth between parents and a particular branch of children would be useful
Layer Splitting
A while back I introduced the concept of split-screening the nodal UI, allowing players to do the equivalent of opening multiple windows side-by-side in a traditional UI. In due time I'm planning to revisit this concept in the context of the layer-based UI, as I can imagine a number of really nice synergies here.
Imagine, for example, if we could hold a key for "open node but don't switch to new layer." Then, imagine that if multiple nodes are opened from one layer, they all go into the next layer, and are automatically laid out according to some user-chosen layout mode (vertical splits, horizontal splits, tiled grid, etc.) Now, consider that I'm at the market and I see three different guns that I want to compare. I hold the key, click each of them, then tab to the new layer - voila, I've got a split layout showing me each of the three gun nodes, and can easily make my comparison! If I then want to add one more to the mix, I tab back to the market layer and click another item, thereby adding a forth element to the next layer. Don't know about you, but this functionality sounds really, really awesome to me
---
Awesome day today, hoping for another one tomorrow (By the way, I would definitely classify today's work under both playability and polish, as it adds a lot to both!)
Post
Mon Jul 14, 2014 1:01 pm
#1
Week of July 13, 2014
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford