---
# System prepended metadata

title: ucratic Interface Design Notes

---

# ucratic Interface Design Notes

## Objective

This document is written in order to prioritize the essential needs of a user interface for the ucratic user experience and editor.  While this document is written in pseido requirement format, this is not the requirements document for an interface.  It is a set of notes to guide discussion and prioritize for initial designs

The ucratic player interface needs to be able to juggle multiple user experiences within a web browser.  Interface functions are as follow, needs to be prioritized for initial development (append priority to items):
*list is brainstorming, whittle down as needed or function fulfilled by another platform/not desired*
- [ ] Marketing Website landing page **Milestone 1 Priority**
- [ ] Web viewer **priority milestone 1**
- [ ] Player movement **priority milestone 1**
- [ ] Player text chat **priority milestone 1**
- [ ] Player voice chat **priority milestone 1**
- [ ] Player video chat **nice to have milestone 1**
- [ ] Player friends list (is there anything with ENS we could incorporate for cross-platform friends) **future**
- [ ] Help menu **priority milestone 1 documentation** **milestone 2 tutorial**
- [ ] tutorial **priority milestone 1 documentation** **milestone 2 tutorial**
- [ ] Metaversal directory  **milestone 2**
- [ ] Player permissions Management **priority milestone 1** (currently Janus email and google, add ucratic and metamask)
- [ ] Player interactions with world
    - [ ] interact with scripted objects
    - [ ] Throw handheld objects outside of editor mode
    - [ ] Fly (option to turn off in world) 
- [ ] Current player list **milestone 1**
- [ ] Access ucratic asset marketplace **priority milestone 1 but limited**
    - [ ] free Things
    - [ ] 3d assets for Things
    - [ ] Free landscapes
    - [ ] Landscapes for sale
    - [ ] NFT assets for sale
    - [ ] free templates
    - [ ] templates for sale
    - [ ] free skies
    - [ ] skies for sale
    - [ ] Free daemons
    - [ ] Daemons for sale
    - [ ] Free scripted assets
    - [ ] scripted assets for sale
    - [ ] Free Meta Shortcut Format assets
    - [ ] MSF for sale
    - [ ] free materials
    - [ ] materials for sale
Note: Items for sale can be an internal marketplace or API connection to external marketplace if partnership programs exist; just need to get an efficient asset pipeline
- [ ] Avatar inventory System **milestone 2**
    - [ ] Access avatar wearables from wallet and change appearance
    - [ ] Access avatars in wallet and select different avatars (VRM priority, glTF backup)
- [ ] World Inventory System **priority milestone 1
    - [ ] Delineate NFT and non-NFT assets for player
    - [ ] Import NFT from wallet
    - [ ] Import asset from local file
    - [ ] Import asset from ucratic asset library
    - [ ] Inventory management system (by class, highlighted object etc.)
- [ ] Web3 functionality **Priority milestone 1**
    - [ ] Connect wallet
    - [ ] Mint
- [ ] World Editor **highest priority milestone 1**
    - [ ] Blank world template
    - [ ] Export world as glTF with components as separate objects in mesh
    - [ ] Select objects
    - [ ] Export individual objects in world as glTF
    - [ ] drag-and-drop from inventory (template, 3d asset, daemon)
    - [ ] drag-and drop from file on local storage
    - [ ] Movement, rotation, scaling interface for objects
    - [ ] add websurface attached to surface
    - [ ] add image attached to surface
    - [ ] add video attached to surface
    - [ ] add reactive audio sound system
    - [ ] add lighting
        - [ ] script lighting blinking
        - [ ] lighting color
    - [ ] Add weather 
    - [ ] add meta shortcut format (easier name for the love of god) **later, msf open source needed**
    - [ ] Recordplayer/stereo with ability to store and create playlists **later** 
    **later, needs R&D to componentize game mechanics**
    - [ ] Add portal to other spaces and worlds **priority milestone 1**
        - [ ] Loading screen for map loading **nice to have milestone 1**
    - [ ] No code scripting of objects **nice to have milestone 1**
        - [ ] object movement patterns
        - [ ] Object sound patterns
        - [ ] Object text reply (program daemons to speak like RPG NPC)
        - [ ] Add text, sound, voice recording
- [ ] Travel through portal to other worlds, platforms 
- [ ] Ability to buy NFTs (storefronts) **later**
- [ ] JS editor for advanced users and content creators 
    - [ ] JML editor **priority milestone 1**
    - [ ] JS **nice to have milestone 1**

note: Can we have an animation while avatar is in edit mode like they are doing psychic magic?
![](https://i.imgur.com/gCyPuib.jpg)

The ucratic interface is intended to accommodate players of all technical skill levels, meaning that much of the functionality is no-code or low-code.  

## Web Viewer

* ucratic will be displayed in web browsers
* Players will be able to put ucratic into full screen mode
* Players will be able to hide all on screen menus and icons with a button (except for button to display menus and icons)
* Players will be able to display hidden menus and icons with a button

## Player movement

* Player movement will need to satisfy two modalities at this point in time.
1. WASD, arrow keyboard movement
2. Joystick movement for common VR

* Other modalities include:
    * teleport
    * hand tracking

note: consider vignette mode if VR is introduced to avoid simulation sickness

* Players will be able to click into the screen or press escape to regain control of mouse pointing.

* Players will be able to jump with inertial physics 

* Players will be able to crouch and move while crouching
    Optional: jump while crouching

## Text Chat
* Players will have the ability to globally text chat
    Decision Point: truly global or within a certain range?
* Text chat menu will default to a closed state 
* Text chat will alert player of new message 
* Text chat will be opened through an icon
* Text chat will take up no more than 5% of screen in wind
* Players will have the option for global chat 
    * note: global chat may be a local public chat with a TBD range
* Players will have the ability to chat with only logged in users
* Players will have the ability to chat with all friends
* Players will have the ability to DM another players 
* Players will be able to block other players
* Players will be able to send and receive friend requests
* Players will be able to accept or deny friend requests

## World Editor
### Blank world
* Players will be able to initiate world building From home page before initiating ucratic webXR experiences
* Players will be able to save world before launching
    * Requires wallet connect
* Players will be required to connect wallet to launch world after editing
* Editor mode will automatically enable flying and disable collision meshes
### In-game Edit Mode
* Players with correct permissions for world will be able to enter edit mode with button
* Players with correct permissions for world will be able to enter edit mode with hotkey
* Editor will have a separate menu from gameplay UI
### Selecting Objects
* Players will be able too select object with mouse click
* Players will be able to select multiple objects by click and drag
* Players will be able to select multiple objects by shift+click
* Players will be able to deselect single object through ctrl+click
### Exporting Models
* Export button will be in the editor menu
* Player will be able to export world as glTF with components as separate objects in mesh through
* Player will be able to export individual objects in world as glTF
    * Above two options can be one button
* Player will be able to mint world as NFT and export model/add it to wallet
    * note: players are responsible for licenses of their assets and their usage
* Mint button will be on the editor menu
* Player will be alerted to check world object licenses before minting and using world for anything other than personal use
### Player Inventory
* Player will be able to access inventory containing all types of assets (skybox, templaltes, object models, scripted objects, daemons, MSFs) through editor menu
* Player will be able too filter by asset class tags
* Player will be able too search by asset name
* Player will be able to search by asset class tags
* Player will be able to fiter by NFT and non-NFT
### Placing Objects in World
* Player will be able to drag-and-drop from inventory into world
* Player will be able to drag-and drop from file on local storage
    * Dragging and dropping will automatically add object too pllayer inventory
* Player will be able to add a websurface attached to a plane object
    * Player will be asked for URL at object creation
    * Player will be able to resize websurface at object creation
* Player will be able to add websurface to the flat face of an object by right clicking object and selecting "add web browser" and then selecting a face
     * Player will be asked for URL at object creation
     * Player will be able to resize websurface so that it does not take up entire surface
* Player will be able to add an image attached to a plane object
     * Player will be asked for file location(URL or upload) at object creation
     * Player will be able to resize image so that it does not take up entire surface
* Player will be able to add image to the flat face of an object by right clicking object and selecting "add web browser" and then selecting a face
     * Player will be asked for URL or file browser at object creation
     * Player will be able to resize image so that it does not take up entire surface
* Player will be able to add a video attached to a plane object
     * Player will be asked for location (URL or uplload) at object creation
     * Player will be able to resize image so that it does not take up entire surface
* Player will be able to add video to the flat face of an object by right clicking object and selecting "add web browser" and then selecting a face
     * Player will be asked for file location (URL or upload) at object creation
     * Player will be able to resize video so that it does not take up entire surface
 * Player will be able to add reactive audio system
     * reactive audio will have its own creation menu
     * Reactive audio will have a standard and advanced setting
         * Standard setting will be user-friendly components for the best buy crowd (left and right, subwoofer)
         * Advanced setting will include band passes, gain, ,etc.
     * Reactive audio will include lights
         * Player will select light color through color wheel or code (RGB or hex) at object creation
         * Player will be able to add light color sequence at object creation
     * Player will choose audio file(s) to play by file upload or connecting too music service (audius, spotify, etc) (too much?)
     * reactive audio components will be labeled and have easily accessible description of component use
     * Reactive audio components will be optionally clicked to select and place in world with another click
     * Reactive audio components will be optionally dragged into world
     * Reactive audio components will be connected in standard mode automatically through the audio creation mode
     * Reactive audio commponents will be connected in advanced mode through click-drag from component visual connectors
 *  Player will be able too add lighting 
     *  Lighting color will be selected through a color wheel or code (RGB, hex) 
     *  Intensity will be selected through slider
     *  directionality will be selected using a circular selector similar to color wheel
     *  Player will be able to set color sequence and timing
### Manipulating objects in World
* Player will be able to move the objects along x,y,z axis
    * use traditional 3D axis to drag or click portion of the axis and then use arrows for fine detail, click again to deselct axis
    * After places object and selects it again, menu for numerical manipulation will allow movement by coordinate
* Player will be able too rotate objects around x,y,z axis
    * Use traditional 3D rotation sphere tool or click rotation ais and arrows for fine detail, click again to deselct axis
    * After places object and selects it again, menu for numerical manipulation will allow rotation by degrees around each axis
* Player will be able to scale objects
    * Use method similar to Blender (e.g. scale by mouse movement)
    * If mouse is still, scale along all axes using up and down arrows
    * After places object and selects it again, menu for numerical manipulation will allow scale around each axis
    ### To do
    - [ ] Add weather 
    - [ ] hackthegibson initiation object (maybe like a multisig where everyone interacts it and then game starts)
    - [ ] Ability to connect interacting with an object to initiating a change or script (push button and slider) with no code (like wiring the sound system)
### Add portal to other spaces and worlds
* Required for world creation: need to define where people teleport into world
* Ideas for representation
    * Slight glow showing clicking will teleport
    * on click: 
    ![](https://i.imgur.com/eWZvHd6.jpg)

    
    - [ ] No code scripting of objects
        - [ ] object movement patterns
        - [ ] Object sound patterns
        - [ ] Object text reply (program daemons to speak like RPG NPC)
        - [ ] Add text, sound, voice recording