# 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