Have you ever dreamt about feature rich, fast webpages and high performance web applications which also can fully work offline? Or have you ever programed a software you would now like to see on other platforms or devices?
Developed simply by writing some text in a text editor, the same way as html?
Creating virtual 3D homepages like virtual supermarkets or your own virtual castle as 'walkable' homepage, where the user can virtually explore your home. Developing apps/games that run out-of-the box on Playstation, Raspberry PI, Smartphones, Tablets and Desktops.
Then this is just the top of this 'iceberg'/project. The possibilities are endless.
This project offers you the possibilities to:
- build Apps that run out-of-the-box on nearly any operating system
- build applications that run mostly the same way on all devices.
- build performance Apps with full hardware accelerated graphics
- build Apps with incredibly easy distribution(just copy your package to your server)
- write your apps in not more than xml
- build AAA 3D or 2D games started by any browser or with a desktop shortcut
- use physics -> build 2D 3D UIs with physics, like bouncing buttons...,
- write your embedded system UI and logic in XML and use it on cheap/free OSes
- use all underlying hardware like sensors, special input or output devices(e.g. VR headsets Vive, Rift, Morpheus or GearVR)...
- build games that let mobile phone users play against desktop or playstation users.
- all binaries will be free of charge(as well as all used file formats).
This is the next generation in developing applications and you can be a part of it!!
What this is not:
It cannot (and should not) replace html. Html(or current web) is great in showing documents and sharing knowledge in a well-structured layout.
It is not designed to run perfectly on systems which do not support at least Open GL(ES).
About the creator
I’m a senior software developer. But programming is not only my profession it’s also my hobby. So you could also call me nerd or crack. :-)
Anyway I studied economical IT in Deggendorf what I finished in 2004. I already wrote my diploma about 3D graphics programming, which was my passion since I got my first programming lessons. Though I already started writing first programs much earlier in Basic for the C64 home computer and during grammar school I wrote Pascal programs.
After my studies I was hired by PIXEL GmbH to build the first (real) 3D navigation system for a famous german car company. Followed by 3D medical software and another navigation system software. In my 10 years of development I was involved in projects for the following companies: SiemensVDO, BMW, Continental, Siemens MED, IBC Solar, Pixel GmbH, E.Solutions GmbH, Audi, VW, Porsche, ...
In my spare time I wrote the german book Direct3D Realtime Rendering für Computerspiele. As I was not married at that time I wrote the book with my maiden name Theuerjahr(I was born Ulrich Theuerjahr). When I married I took over my wife’s lastname(Beckert). We have 3 kids now. You can see them in the video and image gallery.
The book was sold out fast with mixed reviews: http://www.amazon.de/Direct3D-Realtime-Renderin...
It included at that time(2007) just upcoming rendering techniques like deferred shading, HDR Lighting, volumetric fog (with the help of volumetric textures introduced with DirectX9), relief mapping or depth-of-field. I’m highly skilled in shader programming in Assembler and HLSL.
As I started at low level hardware at that time, I know what the current mobile systems are capable of, as the hardware is comparable. Making it easy for me to scale the solutions to all kinds of GPUs.
First, here is a small overview of the different technologies:
How it works
I will give you the SDK package containing binaries/executable for all the operating systems and platforms as well as a tool to distribute it.
You add your(or edit the available) resources including the main xml’s called universe(2d and 3d) as well as images/textures, 3d models, sound files etc.
Here is an example of a universe 2d file. This is just a preliminary concept file:
Then start the distribution tool. It compiles your resources (to compressed binary files for performance reasons) and uploads the package to a server of your choice.
In your website you simply add one line/tag with the path to that package. That’s all.
When now a user opens your homepage he will be offered to download/run your native web application. If he clicks OK, the binaries fitting to the users OS will be downloaded(if not done earlier) as well as the application content and the resources the developer has added directly to the start package. More content can then be streamed from somewhere else. This is completely under the developer’s control!
He can for example pack the first level and the main UI components into the start package and during the user playing level one download the resources for level 2. That guarantees low waiting times for the user to start with the application. Everything that is downloaded can then also be run offline.
If you prefer looking at images to understand it, here it is:
An example: How to write a simple 2d navigation app
- start my compiler/uploader tool.
- Enter the ftp path of your server and your credentials.
- click 'compile'.
- When compilation went fine, click 'upload'.
He/She will get the binaries fitting to his OS(if not done earlier) and your compiled resources.
This navigation app then runs on Windows PCs(GPS needed), Playstation 4(if there would be GPS?), Smartphones and Tablets out-of-the-box!! Without adapting input or screen resolution!
What is already done/available
The Software Architecture is already really far, at least for the graphics part. A first version exists(Windows DirectX 9) where a first cube is shown using already the completely new pipeline. The new model format, the universe approach and the rendertree with vertex and pixel shaders.
As well as a lot of base classes like special containers and 2d and 3d math classes. Including unit tests.
You can run that first application at http://nativeweb.roulio.com/?page_id=16
Here a screenshot;
To keep good code quality I try to follow the clean code rules and try to work with interface abstraction as much as possible. I also use lots of design patterns. If you have looked at the xml image above. You may have seen a prototype section. This is named after the prototype pattern. And in code it exactly follows that.
As mentioned this architecture works already the desired way!
As version control system I use subversion(hosted externally).
I also plan to add a Jenkins server for continuous integration when I'm ready to compile for some platforms. See the milestones below.
What needs to be done
Of course there is still a lot to do:
- Implementation of the Graphics Interfaces with OpenGL and OpenGL ES and later DirectX 11/12(DX9 already done) and Vulkan.
- Implementation of the OS Interfaces for Linux/Unix Systems including MacOS iOS and Android at first. Followed by SailfishOS, FreeBSD(PS4 OS is based on this one), QNX, WindowsPhone...
- Implementation of Input and Sound Interfaces. Will be done via SDL library.
- Implementation of Physics Interfaces. Will be done with bullet.
- Implementation of UI controls.
- Implementation of a Text Engine.
- Implementation of Hardware access. Using libusb and others(StreamInput)
- Implementation of resource streaming and resource uploader with libcurl.
- Implementation of Resource Compiler and compressor(lzop).
Here is an overview of the currently planned Milestones:
Here are the reasons:
- Html is also XML. And people/developers know this already.
- I needed a way to script cross-platform.
- Any simple text editor can be used.
- Tools(to output XML) can be written easily by everyone.
- XML is the de-facto standard description/interchange language.
Differences between the native web technology and a game engine?
- Though the engines can deploy to a lot of platforms it is up to the developer what will be supported. With Native Web(NW) it will definitely run on all supported platforms out of the box! Though sometimes some adaption needs to be done by the developer for the best experience.
- NW has easier distribution. Time from buying to play is really short.
- NW uses easy out of the box licensing.
- NW is not only used for games. It can also be used for any other purpose.