Solu is a company building a completely new type of cloud-linked computer! They are using Cocos2d-x for their front end GUI needs. Kristoffer Lawson, CEO and Juha Laitinen, Lead Frontend Developer talk with us.
1. Tell us where you came up with the idea for Solu. What were your inspirations?
The idea for Solu actually goes back at least 15 years or more, when I first started working with the Internet. It struck me as ridiculous that we have these huge resources of the Internet but we were still struck with computers that merely connected to it, but did not utilize those resources, meaning having to worry about things like hard drive space, backups and installing applications. Our work model was still based around the ‘personal computer’ model with collaboration being a complex afterthought. That is still the situation today. Our computers and computing experience is, to put it bluntly, much more complex than it needs be. At Solu, we are building a computer experience where the user no longer has to worry about their IT through a cloud-linked, collaborative OS. However it is one that also works offline, and provides a real local and native experience.
2. What version of cocos2d-x did you use?
We’re currently on 3.4 but are in process of upgrading to 3.9 mostly due to bugs being fixed.
3. How did you decide to use cocos2d-x instead of Unity, UnReal Engine or SDL?
It was quite obvious to choose a game engine as a base for developing the Solu UI, since our unique approach and design pretty much made using existing UI frameworks just a hindrance. Game engines are on the other hand tailored for making custom UIs as typically each game has its own UI. While most of the UI is still 2D, we have been looking at providing additional information to the user with 3D elements and effects. The plans for 3D, and some things we’re already using such as particles would just not be easy to implement by using “traditional” UI frameworks.
We expected deep integration with the OS layer and potential heavy modifications there requiring the graphics engine to be completely open source. This pretty much ruled out the proprietary closed-source engines such as Unity or Unreal. We also wanted an engine with relatively lightweight footprint and quick startup time, with matches fine with cocos2d.
4. What features did the engine offer you that made development easy? What do you wish the engine did better?
The base architecture for rendering was a good foundation and starting point for us. We’re utilizing custom shader and geometry nodes built on top of the scene graph system and cameras to render the view. We are using the physics engine to prevent cells from overlapping. Also I love the Actions and the various interpolation curves to provide the organic movement pretty much out-of-the-box. We are also using many good features of the engine such as the (older) Particle System, Render-to-Texture and the (newer) AudioEngine.
Cross-platform capability I enjoy daily daily because with this I am able to develop and test most of the UI features on my Mac, without slow-ish build and deploy to the device itself.
The engine has required us to make fixes here and there so it’s not the most mature engine I’ve seen. The 3D features and using cameras have caused a lot of unexpected behavior and exposed some bugs due to that side of the engine being so fresh. In retrospect I wish that the UI framework and text rendering would have been better supported when mixed with 3D and cameras.
5. What tools did you use besides the engine?
Texture compression tools from ARM, Various profiler tools from NVIDIA.
6. Did you create the art yourself? What tools?
Visuals are mostly crafted in-house by our Head-of-Design Joona Kallio. He is using the Adobe design toolset and the results get imported as curve data using our custom .svg importer or crunched as compressed textures. Some of the art is implemented directly using a set of shaders.
7. Did you create the music/sounds yourself? What tools?
The audio was done as a tiny side-project by Peter Hajba, also know by his demoscene nickname Skaven.
8. Will you continue to expand Solu in the future?
Most definitely. We are very serious about bringing to the market a computer platform that really challenges the status quo, and makes great leaps forwards in how we can use computers. The Solu experience has intentionally been built to scale to many different types and sizes of devices, almost as if by magic. Once you build a platform which is inherently Internet-linked, it changes many, many aspects of that platform, compared to the personal computer one. Storage, the application model, the business model, and even computing itself. We want a Solu in everyone’s pocket and on everyone’s desk, but with the power of a supercomputer behind it.
9. How did you manage developing such a complex concept? Any tips for the readers on how to stay motivated?
I’m sure Juha has his own views on that. But from my side I can say it is definitely not easy. I know the team has had to work under extreme stress and pressure, and have managed to pull off several miracles along the way. We are now 14 people, but with a lot of the work done when were less than 10. The sheer speed at which such a small team has executed has required some sacrifices, but it is downright astonishing.
I believe, one of the sources of motivation is that this quite simply is ‘the right way to do things’. It is how computers should work. The ambition level and vision is massive, and there is very rarely the opportunity to change the world on such a fundamental level. There will be many perils along the way still, but the fact we have even a chance of doing it is something that is difficult to ignore.