Interface - The-Source-Eternal/Unwritten3D GitHub Wiki
Wherein we talk about interface of the game creator and with the game. They should be synonymous. A seamless editor/interface with multiple levels of complexity (see [Bret Victor's talk] (https://www.youtube.com/watch?v=PUv66718DII)).
There does need to be a way for a creator to press "play" to start their game or scene from the "beginning".
See game builder issues #45, #46, #47, and #48, though they are disorganized right now
Table of contents
- [Visual System] (https://github.com/The-Source-Eternal/Source/wiki/Interface#visual-system)
- [Control System] (https://github.com/The-Source-Eternal/Source/wiki/Interface#control-system)
- [Movement] (https://github.com/The-Source-Eternal/Source/wiki/Interface#movement)
- [Game Functionalities] (https://github.com/The-Source-Eternal/Source/wiki/Interface#game-functionalities)
- [IO Beam Functionalities] (https://github.com/The-Source-Eternal/Source/wiki/Interface#io-beam-functionalities)
- [Editing Functionalities] (https://github.com/The-Source-Eternal/Source/wiki/Interface#editing-functionalities)
- [Manipulating Objects] (https://github.com/The-Source-Eternal/Source/wiki/Interface#manipulating-objects)
- [Inventory] (https://github.com/The-Source-Eternal/Source/wiki/Interface#inventory)
- [Customization] (https://github.com/The-Source-Eternal/Source/wiki/Interface#customization)
- [Shortcut Brainstorms] (https://github.com/The-Source-Eternal/Source/wiki/Interface#shortcut-brainstorms)
- [Regular Brainstorms] (https://github.com/The-Source-Eternal/Source/wiki/Interface#regular-brainstorms)
- [Audio, music, sound effects] (https://github.com/The-Source-Eternal/Source/wiki/Interface#audio-music-sound-effects)
- [Help System] (https://github.com/The-Source-Eternal/Source/wiki/Interface#help-system)
Visual System
If you have a HUD, what is on it? What menus are you displaying? What is the camera model?
Control System
How does the game player control the game? What are the specific commands? (Summary of the pieces in esarlier sections)
Basic Controls
Movement
Move around in the x and z plane
Options:
- w/a/s/d
- e/s/d/f - because it makes more goddamned sense!!! That's where your fingers are anyway! And then you get more hotkeys!
- It may be fun to figure out hotkeys for DVORAK too Note: The thing about moving around with the keyboard is that it's hard to control speed. You end up moving the same speed all the time. When dragging the mouse, you can basically go as fast or as slow as you want.
https://github.com/The-Source-Eternal/Source/wiki/Interface#manipulating-objects) as well)
Jump and perhaps fly up (see [Manipulating Objects] (Options:
- space bar
https://github.com/The-Source-Eternal/Source/wiki/Interface#manipulating-objects) as well)
Crouch and perhaps fly down (see [Manipulating Objects] (Options:
- shift
Look
Options:
- Mouse movement
Run
Options:
- double-tap walking direction
Game Functionalities
Interface Tree Escapement
Options:
- esc
- Ex1:
Playing
Inspector + Components (if in Components, esc leads straight to playing, they are interchangeable)
Select object
Text field entry
- Ex2:
Playing
Chat
- Ex3a:
Playing
Menu/Pause
Menu Option 1
Menu Option 1a
- Ex3b:
Playing
Menu/Pause + Menu Option 1 + Menu Option 1a (esc from any place in the menu would go back to playing)
- Ex4:
Menu/Pause
Playing
Deselect all objects
Open editing functionality (into inspector)
Options:
- e
- q (seems more opaque)
- o (for open, seems a bit broad to be helpful)
- right click the object
- double-click the object
Close editing functionality (to play)
Options:
- esc
- double click on the object again
Open post-it editor window
Options:
- right click on the object
- double click on the object
Close post-it editor window
Options:
- right click on the object again
- double click on the object again
- single click on the object again
Open pop-up right-click-type component menu
Options:
- right click on the object. Note: this would interfere with the regular right-click menu. I think they wouldn't be able to open the element inspector this way.
- double click on the object
Open component editing specifically
Options:
- c (for code or component)
Cursor placed in chat window (chat window is made visible if it isn't already)
Options:
- enter
- t Note: When editing text this functionality would not work (for example, when editing code or when editing inspector text fields)
- A gui button for when editing text
- Click in exposed chat window
Anything except text entry back to game
Options:
- p (play)
- esc (no interface tree)
~ ~ Watch out, we may get crazy here ~ ~
Editing code on the object itself
Options:
- Click on an object's exposed code, cursor goes to the spot clicked on
- Hover over an object's exposed code, cursor goes to the spot hovered over Note: Perhaps reticule turns into the cursor in the object's exposed code Note: Movement stops. In that case, probably click instead of hover. Could hover and press enter? Further pressing of enter will add paragraphs? In that case, enter couldn't be pressed to join chat
- Click/double click on an object to get a pop-up over it with a list of its scripts and other components?
Search components of object
Options:
- Select object, though not its exposed code (game) and start typing
- Hover over object and start typing
Search assets
Options:
- cmd/ctrl + f then type for lazy search (at any time or just while in inventory?)
- Click search bar when mouse isn't locked
IO Beam Functionalities
Toggle between code emitting and object manipulation
- Tab
- Enter
- m (for mode)
- \
- Arrow keys
Code emitting functionality
Options:
- e
- c
- r (for ray)
- f (for fire and foxy)
- x (for x)
- something better?
Manipulator Functionalities
Options:
- This may have different functionalities as well - perhaps you can use "m", "r", and "d" while in this functionality to manipulate the object (as described in number [switching transform functionality] (https://github.com/The-Source-Eternal/Source/wiki/Interface#switch-between-move-rotate-scaledimensionpushpull). Read more of [manipulating objects] (https://github.com/The-Source-Eternal/Source/wiki/Interface#manipulating-objects) in general to find different object manipulation possibilities
Editing Functionalities
Inspector/Components
Manipulating Objects
QUESTION: Are objects going to move in relation to the player, in relation to their axis, or both in different contexts? Note: Some different overall options presented here, need to figure out how to group them. ~ ~ Note 2: This gets crazier, fair warning ~ ~
Select object
Options:
- Click
- Hover
- Double click
Select multiple objects
Options:
- shift + select objects (probably click or double click in this case)
- shift + draw a line around all the objects desired
- This would make a line appear so you can see what you're selecting (or possibly a box)
- If it's a drawn line, clockwise selects only the objects completely contained inside the drawn line
- If it's a drawn line, counter clockwise selects all the objects touched by the box
- If it's a box, moving from bottom left to top right selects only the objects completely contained inside the box
- If it's a box, moving from bottom right to top left selects all the objects touched by the box
Copy/Paste Object(s)
- alt + click + drag creates a copy that moves/rotates/scales as you drag the mouse.
- cmd/ctrl + c copies
- cmd/ctrl + v pastes (where?)
Gravity Gun
- Automatically available when object is clicked on
- "l" to lock objects on its personal axis so that only it's translation is changed, not its rotation
Switch between Move, Rotate, Scale/Dimension/Push/Pull
- m, r, s/d/p
- Mouse scroll
- Arrow keys
- Tab
- Shift + any of those
- t (for transforms)
Translate object
Options:
- Click to select object, then move (gravity gun option)
- Ex 1: click then space bar for up, click then shift for down
- Click and hold, then also move
- Ex 1: click and hold + space bar for up, click and hold + shift for down
- Click and drag around the player
- Ex 1: click and hold, drag right to move right in relation to the player
- Click and drag in relation to the object
- Ex 1: click and hold, drag right always moves the object in the positive x direction
- Click and drag to move object in relation to the axis closest to direction of drag
- Ex 1: click and hold, drag right moves the object in the direction of the axis that is most aligned with the direction of the right-dragging movement
Rotate object
Options:
- Scrolling:
- Ex1: Scroll up or down for a backflip or forward roll
- Ex2: Scroll left and right to rotate in those directions
- Ex3: Not sure about the cartwheel - is it possible to scroll in a circle?
- Ex4: Perhaps selecting an object for rotation and moving towards or away from the object can do backflips and forward rolls, freeing up and down for cartwheels. Not sure about this. It could become annoying if the player is too close to the object to get the full rotation they want. If they're closer it rotates more quickly?
Scale (Dimension or Push/Pull) object
Options:
- If move is click and drag, perhaps scale is click and release then move? Double click?
- More likely, if move is click, release, and move (gravity gun style), click and drag would be scale.
One of Move, Rotate, or Push/Pull Manipulation
Options:
- Arrow keys could be used for something, though for only two directions, so they're not a perfect solution.
- Ex1: Perhaps in gravity gun functionality, arrow keys can rotate an object in two vertices
- Ex2: Perhaps in gravity gun functionality, arrow keys can move an object farther away from the player
- Ex3: Perhaps since rotation is missing an axis, arrow keys could take care of the cartwheel axis
Switch to axes/plane
Options: Note: Perhaps once the axes functionality is selected, perhaps all the previous gestures affect the object relative to the axis selected (or relative to which gesture we set for each axis). Perhaps without an axis selected, all movement is relative to the player.
- Just click on an axis of the selected object. It's axes should be exposed when it's selected (when the object is clicked or, perhaps, hovered over?). Again, I believe the mouse should be the user's or player's point of view and their view will follow the object as they move it. This is only with movement and scaling/dimensioning! With rotation, the players viewpoint remains centered on the object. In other words, the viewpoint remains directed at the same point on the object as when they started the manipulation.
- Double click then perform all of the same operations
- Double click on an axis
- Double click again to cycle between Move, Rotate, and Scale
- x/y/z
- z/x/c
- m/r/p
Note from thesourceeternal: These are selected for their clarity of concept. For convenient location, things like q, w, e, and r are better suited, but my personal experience is that I have wanted clarity over location in the past. We can allow easy re-mapping of the keys so that if people find they prefer a different arrangement it will be easily accessible to them.
Scroll through axes (locking onto each in turn)
Options:
- Mouse scroll
- Arrow keys
- Tab Note: Any of these could be used to scroll through moving, rotating, and dimensioning too
- x/y/z
- z/x/c
Snap to grid (rotation and dimensioning too)
Options:
- Hold shift? Shift is for crouching
- x
- Arrow keys? Though they can only do two axes, so perhaps you select an axis and then use the arrow keys.
Snap to edges and corners
Options:
- I'm too tired for this right now.
- A keyboard button to switch functionalities?
- Hold a keyboard button and move/rotate/scale object.
IMPORTANT NOTE: It is unlikely that we can do all of these features. Pick the cream of the crop!
Change axes origin
Options:
- Maybe this is what the arrow keys are for? To cycle through spots at which the origin is located?
Inventory
Note: Inventory will contain components of all kinds (perhaps assets as well).
Switch between hot bar items
Options:
- Number keys
Iterate through hotbar
Options:
- Mouse scroll
- Tab
- Arrow keys
Open inventory interface (add/remove items from hot bar)
Options:
- i
Scroll through inventory
Options:
- Anything/Multiple things
- Scroll
- Arrow keys
- Tab
Put inventory item in hot bar
Options:
- Shift + hot bar number when inventory item is selected
- Click and drag to hot bar
- Hover mouse over inventory item + hot bar number
Customization
Custom hotkeys
Options:
- Any button can be remapped. Option located in the pause menu.
Shortcut Brainstorms
What shortcuts are available?
Keyboard (character keys)
Note: keys near the left hand are optimal
- Any character keyboard keys
- shift + any character keyboard keys
- cmd/ctrl + any character keyboard keys
- alt + any character keyboard keys (I don't know if this would be very intuitive, not used much)
- fn + any character keyboard keys (I don't know if this would be very intuitive, not used much)
- Combinations of modifier keys + any character keyboard keys
- space bar is of particular note
Keyboard (other keys)
- tab
- arrow keys
- return
- delete
- esc
- caps lock?
- fn keys?
Mouse
- Scroll up
- Scroll down
- Left click
- Right click
- Both click
- Click and drag
- Click and release
- Double click
- Hover
- Combo of keyboard keys and mouse input?
- cmd/ctrl + click(s) (ctrl + click is often a right click on macs)
- shift + click(s)
- alt + click(s)
- Other keys?
- Are gestures with the mouse recognized? Circles? Diagonal lines?
Trackpad
- Single finger
- Left click
- Click and drag
- Click and release
- Double click
- Hover
- Two fingers (usually scrolling)
- Right click
- Up
- Down
- Circle?
- Pinch (thumb and index finger)
- Un-pinch (thumb and index finger)
- Three fingers
- What other gestures are well recognized? Circle for two and three fingers? Four fingers?
- Combo of keyboard keys and trackpad input?
- cmd/ctrl + click(s) (ctrl + click is often a right click on macs)
- shift + click(s)
- alt + click(s)
- Other keys?
Regular Brainstorms
Ideas that need to be integrated into the rest of the doc.
Seamless
- Clicking on the object gives floating components over it and floating code. Smaller than full screen. You can turn it into full screen if you want. (speech bubble).
- Icons for components and objects
- Different components/types of assets are different colors and turn the object that color briefly
- Accessing object components and the inspector
- Speech bubbles first? Maybe like Facebook timeline hover over link. For short pieces of code, but maybe for the inspector.
- Post-it window ~ Half-screen window ~ Full-screen window (translucent background) ~ Thing in the corner like with chrome inspector console, switch position or switch to full screen. ~ Only one player can edit an object at a time (no write access) ~ Other people can see the object being edited (read access)
- Code Wand
- Component pasting functionality ~ Different components/types of assets are different colors and turn the object that color briefly
- Object manipulation functionality
Audio, music, sound effects
Help System
Do you have one? What is it?