Skip to content

UI API design brainstorm #1

@nevyn

Description

@nevyn

Ever since I started working on this project, I get literal dreams about 3D UI design :P So I figured I'd mash some of it down here in an "ideas" thread.

Appliance = UIApplication. A single network connection manages all the entities for that appliance; and a single process on the other side is the sole owner of those entities.

Entity = UIWindow or maybe more like UIViewController. A single entity has a bunch of malleable geometry that together expresses a single context of a thing to be done. It manipulates its geometry based on user input.

So for example a Spotify app... It might have an entity for "now playing", like a jukebox-like entity standing in a corner of the room. Walking up to it and tapping the now playing artist would spawn an entity next to it, representing the "artist view". Maybe attached to the "jukebox" so it behaves more like a physical object, and doesn't just spawn junk UI all over the room. Within the new entity, there's tons of content, probably scrollable somehow. I'm still a stickler for drag'n'drop, so you'd play something by grabbing an album out of that view and sticking it in the jukebox.

Ok now you've got all this junk UI all over your room. How do you "close a window"? Thinking of "direct manipulation" as a core concept, I would say you grab it and do something. Either there is a special "menu grab" key combination that iconifies (reduces the whole entity to a single icon) the entity and lets you pull its icon into a circle menu of actions ("close", "more info", "permissions", "lock", ...); or there's a special gesture to iconify it.

I really like the idea of "pulling towards you" meaning something special, so that could iconify the entity. You pull it towards you, and the entity transforms into an icon and action icons appear around it. So "towards, then down" would mean "close/discard this entity". No need for key combos, or keys with special meanings like a "context menu" button on your controller (going back to "single button mouse" of the mac).

Other idea: what happens when network connection to the appliance drops intermittently? Apply shader to all entities owned by it, make them look disabled. If appliance reconnects and can resume ownership of them, the shader can then be removed.

Other idea: when an entity spawns, it has very basic geometry embedded in the entity description, in addition to its asset reference. This way, a low-poly entity can be drawn while it loads, then morphing into the real asset once it's loaded. Just to make loading more seamless.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions