We will update this thread day by day, (and as often as we can)
While writing this down I found out that it is very hard to transfer all we have imagined in letters here. And also, only 1 person is writing this, so you are missing out on stuff I don’t think right now and the guy right next to me is implementing. I guess that I will iterate on this text, so please, those that read, please have understanding.
In this thread we will talk about how SpaceSys will work in the future, the way things behave, and what improvements we will make to our UI.
Some of things might change, and we may implement a completely new feature.
Currently we have basic controls, no generated or scripted behaviors, navigation is crude, but we were concentrating on shell so far, to get control over Windows OS. Now as we are nearly finished with it, now it is time for us to open up doors to suggestions and discussions.
We have lots of ideas, on how to make it work but we want more voices.
To get back to the title,
I will divide them to categories,
The way SpaceSys interact with system is that we have complete control over Windows shell.
Meaning that right now we have a way of implementing everything that you see in Windows environment we can implement in our UI. Meaning context menus, popup screens, progress bars, task bar, properties and other information that you can get from your system.
Only thing that we cannot do is have other software screen output inside our 3D environments, like IE, or Mozilla, some of them (mostly open source software) can be ported and streamed on to the texture inside 3D and most importantly Chrome browser. With Chrome implemented you can have all of the internet content in 3D with VR, you get the picture
What you do in SpaceSys is actually done on your file system. So once you get your hands on it, don’t delete something you might miss later, as you are doing it for real. That goes for all file operations!
We have "spaces" as folders and a global space that serves as desktop - the environment itself. We are still keeping the files in the environment as a shortcut to the original file, as we are still need to make global space folder on pc a special folder similar to Windows Desktop folder.
One other thing that we miss now is the drag and drop files from and to our UI. We will implement it later on when we cover all the file operation possibilities first.
One of the more important treats of SpaceSys is that we are controlling OS, and OS does the hard work, at the same speed and efficiency as before. You are just controlling it through a live interface that we created.
The spaces are the analogy for folders in SpaceSys. You can have hundreds of open spaces in the world. We designed them to act exactly as you expect from a folder, you can do all operations inside and between them as you are used to in Windows explorer.
Icons inside spaces are made of simple 3D objects that have a texture extracted from original icon images from Windows. We had lots of problems getting the best image quality and few of them look bad, that depends only on the icon image size and type (few of the lazy devs make only 32*32 pixels images). Also we had a lot of special cases icon types, shortcuts, etc… Few of them need a touch to be shown correctly and we will handle those later.
Spaces can be moved around together with icons and you can enable or disable collision for them also spaces can also serve as an anchor to which you will be able to focus on and rotate around.
We need to implement much more mechanics to spaces, like icons sorting, list view, detail view, etc… Also we need to have maximize / minimize buttons, close space button. For the last thing we need space scale, where you will be able to scale it down 1000 times the size together with icons and text, normally that will demand voice controls to find them later.
Spaces will be able to anchor to one another, you will be able to make a wall of spaces, you will be able to transform any folder into space and to create spaces out of all subfolders, have them move in front of you without you moving, just rotating them and we will talk more about that later.
Currently we disabled creating of spaces from anything you want, we gave you couple that cover mostly everything. Later when we clean out space generation you will be able to create on out of anything that you want. There is a bad side effect to that, when you click on a folder in global space, you open up windows explorer.
These are just the basics of a “Space” there is a lot more to say and we will as the time comes.
Some of the things we need to discuss are, current open files (from some space), multiple spaces selections (thing we miss in windows), spaces taskbars, etc...
I must add that the current shape and size is still defined by us but later on you will be able to choose everything. Type, size, colors, fonts, and physics.
Icons are shown in 2 ways now, one is spaces where the icon is a simple 3D object with a texture that we take out of windows icons and then there are the 3D icons. We created more than 1000 3D icons of most common software and used file types. Most users will have all of the icons in 3D in the world.
Currently we are still working on user generation of 3D icons in the world. You can drag any icon from the space but it will stay 2D for now. We are thinking on creating a map, or using windows one to immediately transform 2D icons from space to 3D icons that we made, while you drag them to the world. We still don’t know if we will be able to do it automatically or the user will have to define each type by themselves. We will eventually do it automatically but mapping thousands of file types will take some time.
Icons saving in the world is done now, you can sort out your world / desktop, and when you start again they will be there. (Sounds trivial I know) Each world will have its own set of icons, as user defines it. You will be able to propagate world settings later on. But for now each is for itself.
Icons can be moved around the world. They have physics, and are affected with collision and other forces (that will come later).
Group movement is there, you can select a whole lot of them and move them around.
There is a whole lot of mechanics planned for icons and I think I could write for hours on, just about the possibilities that we opened up. Want do that, as it is 1 am. But I will add more to icons later on. For those that read this much, this is what I will write about later,
Global icon generation to shapes, icon sorting by size, (physically shown) date, type,
Icon dragging like with a thread, send icons to some area, or space without looking at it, selection exports, and stuff like that.
Movement of items trough the world such as icons and spaces, later on various canvasses, objects like media player, context menus, taskbars and such.
Right now we implemented basic controls for movement, when you click and hold with left mouse button you move the item but only on x-z, when you hold control or mouse button 4 you move it with y-z, (you can change the bindings) with the right mouse button click and hold you rotate the item, but only on x-z. Now that is what we use so far, it behaves ok, for mouse and keyboard input.
We want to implement carry mode, where you select items and carry them with you, at the same distance from where you picked it up. That might be easier, also select and group items into a shape then move around. We need to play around with that and we will do it soon.
As soon as you turn on Kinect or Leap motion, things get serious. Then you have an option to grab items and carry them around. That will behave a lot different than what you have right now, and since Kinect 1 is so imprecise we put the development of hand controls on hold until we get Kinect 2 in our hands.
Leap Motion support is still on hold. We need one more dev in our team just for Leap Motion as we see now that the technology is getting widely accepted and easy to use. With leap you will be able to choose things and move them in 3D as you are moving invisible stuff in front of you. Hand and gesture controls are waiting for a big milestone that have to be there first and that is voice controls.
What is also important about hand and gesture controls is that you use one hand for player movement. We will implement 3 types, one is free flight that you have now. One is absolute world control, where you drag the world around you, and the third will be a fixed mode, where you will be jumping around anchors in the world and focus on them. Other hand will be used for selections and operations. There will be 2 kinds, one is free selection where you will control mouse cursor and second will be fixed selection between existing items on the anchor point. If you come to a space and focus to it, you will just browse the items there with the hand, without mouse. Together with voice controls it will be intuitive, like you are working with real life items in the real world, and if you are in VR you will have that feeling.
These are just the basics that I am talking about here. There will be joypad / joystick support, and even EEG headsets for thought control but we will talk about it later. Right now, we need more developers and more support to work on all of it.
Currently when you want to call context menu on an item, we call and show Windows menus. In the same time our engine is on hold waiting for user response or command from the context menu. Creating our own context menus is the next big thing that we will implement.
We will do it in 3D as expected in a 3DUI, we need to call Windows context menu on the selected items in the background, count how many items it has, what is the context of those items, and read out the text from the menu. With that info we dynamically create menu object in 3D that has all the items from Windows context menu, render the text to texture on the objects. ( We are still working on the look)
With that we will become independent from windows menus, and set our UI free from suspension while waiting on user command. You will be able to have every context menu in SpaceSys, no matter on which items was it summoned it will be there.
Creating such object that will be dynamically populated with shell items enables us to create couple of more items such as progress bars, properties also, popup windows and such things, all of that will be implemented shortly after creating our own 3D context menu.
You can check out the first take on context menu here:
https://www.facebook.com/photo.php?fbid ... =1&theater
Since context menu becomes a world object and we have absolute control of its appearance we can play with how it looks. Later on we will enable modding of the same, so every user will be able to change the context menu as he wants. To choose from, colors, transparency, size, life duration, movement, creation, animation in one word - everything.
We can create any kind of graphics for the context menu, and we will play a bit with that, but we will make it to resemble what Windows users are used to for now. Later on we might make different kind of menus.
We will also integrate SpaceSys specific context menus that you will call upon items with ALT-right click or something similar, we still need to decide.
That is enough about menus for now, I hope it makes sense to you.
Our worlds, or better said environments, will each have its own behaviors or even sets of behaviors that will be diametrically different to the next one. Enable different kind’s environment effects to immerse user into the environment.
To better explain what I mean, you have seen the paradise island environment. It has real-time day/night transitions, we plan to connect those transitions to your clock on pc, so you will have the correct time of day. Also if it is a cloudy day your environment will be cloudy or raining. You want be able to have snow there, but there will be a glacier environment later on. We want force the user to use those possibilities that will be a choice.
Transitions between environments will also become seamless in the future. Right now you have to shut down SpaceSys to load another world, later you will be able to load other world in a blink of an eye. Worlds serve as desktops, and each is different, as normal desktops at your pcs, so, lets say you have multiple users, all can have their own world setting or use different worlds. Settings will be easy to export and even modified. When you sort out icons and spaces in the world of your choice, you will be able to export those to another world. Or build a completely different layout.
Worlds will have their own games, and when you wish to play one, you will be able to stop hide all the icons and spaces, or whatever you have open to just play a game.
You will be able to build your own later on. From scratch using an editor, and we will talk about that more when the time comes.