Difference between revisions of "Browsers"
Bablakeluke (talk | contribs) (→Websites vs UI's) |
|||
(9 intermediate revisions by 4 users not shown) | |||
Line 2: | Line 2: | ||
== Websites vs UI's == | == Websites vs UI's == | ||
− | Every now and then, people ask why PowerUI isn't just a wrapper for some existing web engine. It's because websites and user interfaces have extremely different requirements. Consider this: | + | Every now and then, people ask why PowerUI isn't just a wrapper for some existing web engine. Why are we going to the effort of building an entirely new one 'inside' Unity. It's because websites and user interfaces have extremely different requirements. Consider this: |
=== A browser must.. === | === A browser must.. === | ||
Line 15: | Line 15: | ||
* Be very dynamic - UI's are not static at all and can acceptably spend more time loading ''(opposite of the loading focus of a browser!)'' | * Be very dynamic - UI's are not static at all and can acceptably spend more time loading ''(opposite of the loading focus of a browser!)'' | ||
* Be easy to extend in order to represent as many UI concepts as possible | * Be easy to extend in order to represent as many UI concepts as possible | ||
+ | * Not have awkward platform barriers | ||
+ | |||
+ | |||
+ | Ideally we also shouldn't need to introduce 400mb+ of bloat in a project just for UIs; PowerUI is essentially designed to be ultra compact and modular in order to simply remove features that aren't needed. | ||
== What PowerUI can do == | == What PowerUI can do == | ||
Line 20: | Line 24: | ||
PowerUI focuses on the goals of a UI framework. As a result it can: | PowerUI focuses on the goals of a UI framework. As a result it can: | ||
− | * Just work on any platform | + | * Just work (and be exactly the same) on any platform |
* Advanced text formatting (like knockout text) | * Advanced text formatting (like knockout text) | ||
* Shading/ Lighting | * Shading/ Lighting | ||
* 3D text | * 3D text | ||
− | * | + | * Widget system |
* Context menu's | * Context menu's | ||
+ | * Style scrollbars and carets | ||
* Dialogue system | * Dialogue system | ||
* Easy to localise | * Easy to localise | ||
* Extremely customisable - design a new html element etc | * Extremely customisable - design a new html element etc | ||
* Particle systems and camera's on your UI | * Particle systems and camera's on your UI | ||
+ | * Use any part of the engine anywhere (It's all C# after all!). GIF's/ SVG's on meshes, or on other UI frameworks, for example. | ||
* Lots more! | * Lots more! | ||
+ | |||
+ | Many of these things are difficult or simply impossible for an embedded browser. | ||
+ | |||
+ | == So can I use it like a browser? == | ||
+ | |||
+ | ''Sort of'', but that's not what it's designed for. PowerUI has extremely broad coverage of web technologies, but these things currently limit it from being a general purpose browser: | ||
+ | |||
+ | * Stacking contexts aren't supported (for runtime performance reasons). This will make some elements on the web stack in strange orders. | ||
+ | * Flexbox/ grid aren't supported yet. | ||
+ | * JavaScript - Due to limitations on iOS and many consoles, PowerUI has a custom variant of JS called Nitro. We're now experimenting with fully compliant Javascript at the moment which you can get from the [[Source Control (GIT)|PowerUI source repository]]. | ||
+ | |||
+ | Currently, these things are all being worked on - PowerUI compiles in under 10 seconds, so we can iterate on new features much, much faster than any conventional browser can (and we don't have the weight of a massive userbase limiting awesome new features either!). |
Latest revision as of 23:21, 6 December 2018
PowerUI is not a web browser - it's a UI framework. PowerUI isn't simply a wrapper for Chrome - it's been built from scratch and it's now rapidly becoming the newest web engine in nearly 15 years. Standing at nearly 300,000 lines of code, PowerUI is a massive toolbox for all your UI needs. As it's also based on widely used standard technology, getting started with it is as simple as it gets!
Contents
Websites vs UI's
Every now and then, people ask why PowerUI isn't just a wrapper for some existing web engine. Why are we going to the effort of building an entirely new one 'inside' Unity. It's because websites and user interfaces have extremely different requirements. Consider this:
A browser must..
- Load a website as fast as possible
- Display very static websites; load time is more important than runtime performance
- Be extremely secure
A UI must..
- Tightly integrate with your code and the engine (opposite of secure!)
- Be very dynamic - UI's are not static at all and can acceptably spend more time loading (opposite of the loading focus of a browser!)
- Be easy to extend in order to represent as many UI concepts as possible
- Not have awkward platform barriers
Ideally we also shouldn't need to introduce 400mb+ of bloat in a project just for UIs; PowerUI is essentially designed to be ultra compact and modular in order to simply remove features that aren't needed.
What PowerUI can do
PowerUI focuses on the goals of a UI framework. As a result it can:
- Just work (and be exactly the same) on any platform
- Advanced text formatting (like knockout text)
- Shading/ Lighting
- 3D text
- Widget system
- Context menu's
- Style scrollbars and carets
- Dialogue system
- Easy to localise
- Extremely customisable - design a new html element etc
- Particle systems and camera's on your UI
- Use any part of the engine anywhere (It's all C# after all!). GIF's/ SVG's on meshes, or on other UI frameworks, for example.
- Lots more!
Many of these things are difficult or simply impossible for an embedded browser.
So can I use it like a browser?
Sort of, but that's not what it's designed for. PowerUI has extremely broad coverage of web technologies, but these things currently limit it from being a general purpose browser:
- Stacking contexts aren't supported (for runtime performance reasons). This will make some elements on the web stack in strange orders.
- Flexbox/ grid aren't supported yet.
- JavaScript - Due to limitations on iOS and many consoles, PowerUI has a custom variant of JS called Nitro. We're now experimenting with fully compliant Javascript at the moment which you can get from the PowerUI source repository.
Currently, these things are all being worked on - PowerUI compiles in under 10 seconds, so we can iterate on new features much, much faster than any conventional browser can (and we don't have the weight of a massive userbase limiting awesome new features either!).