Most recently, a
press release was published on the NASA website, where it was said about the unique opportunity to “walk” around Mars. I could not resist and clicked on the
link - an amazing interactive scene opened where you can “ride” with the rover, watch the video from the “camera” and even find out the technical parameters of the unit. But the most shocking was the news that all this was done using the Blend4Web engine ... And where is Unity?
Two years ago (or even more) there were publications about creating a similar scene for NASA on Unity. However, things did not go further than beta, and the space agency refused to use Unity. The reasons that prompted the programmers of such a large organization to abandon their work and start work from scratch are interesting. I was not lazy and found the
beta version of the “Mars Rover” mentioned on the Internet. Honestly, it looks like an unfinished game. The scene is slowly loading (the terrain is loading even longer), the functionality is just a ride, the picture is terrifying.
But we all know that great games are being made at Unity, and the portfolio is packed with hundreds of quality projects. So what's the deal?
')
Unity version
The fact is that Unity is seriously late with the final exporter's release to WebGL. The first signal came when the creators of Google Chrome announced the upcoming rejection of NPAPI. The percentage of users in the world working with this browser is too large for software developers to leave them "overboard". There are tips on the Internet to use the
chrome: // flags / # enable-npapi magic command
. However, in September 2015, this loophole will be covered.
Creating games or presentations for websites is a business. No one likes to lose their customers. And if earlier downloading of the Unity web player did not cause any trouble and it successfully competed with flash technology, now the situation has changed completely. The usual web player is rapidly losing its position, and the exporter in WebGL is still in its “childish” age.
Developers of all stripes made noise, demanding some active actions from the Unity team. And the long-awaited event happened - the release of Unity 5 with WebGL, but only as a preview. Half a year has passed, and things are still there. There was even a “brilliant” suggestion to check the user's browser and suggest it to launch the web player in some other one. Unfortunately, this is for obvious reasons, not always acceptable.
And yet, what happens with Unity with WebGL? Why doesn't the stable version come out? What are the prospects? These questions are interesting to many developers. I am not a techie and I find it difficult to understand the problems of Unity in this area, but something found on the Internet brings me to sad thoughts.
There is a
thread on the official Unity forum called WebGL Roadmap. An official from the development team explains the future of WebGL in Unity. I was looking at this text far and wide, and I was increasingly convinced that the “bright future” was still on the horizon.
WebGL by default should work on browsers for all platforms, including mobile ones. This is not. And if by some miracle you compile your game into WebGL, cross out the mobile devices from the list. The reasons are trivial - catastrophically high memory consumption and poor performance. Yes, the game will start on the top device at a tolerable speed, but the weaker ones will turn into turtles.
And do not expect the project to work quietly on desktop systems. Browsers are programs that simply devour the free memory of a computer and the raw build from Unity often leads to a drop or closure of tabs. Especially with this sin Chrome.
There are certain problems with sound. Personally, when I tried to export a simple game for WebGL, I got some croaking when I moved my hero. The sound is corny stuck and fix it really failed. The reason is insufficient performance. But with other engines it sounds ...
Forget about playing video in the game. The MovieTexture class is simply not supported for WebGL. As an alternative, developers suggest using HTML5 features directly.
Network problems. The classes System.IO.Sockets and UnityEngine.Network do not work for WebGl and will not be further, as this causes security problems.
I have not listed all the problems, but it does not answer the question, when will it work? Alas, the comments of the Unity developers are vague, vague and without any specific deadlines. Although I found something:
We’re not committing to this. ”
"We do not fix specific implementation dates for any of these functions and we can generally decide to abandon some."
They are waiting…
They are waiting for WebGL 2.0 to appear, which will be based on OpenGL ES 3.0. The future version of Unity 5.2 is already planned with the ability to export under the new API. Just not the fact that browsers will immediately begin to fully work with him. For now, WebGL2.0 is available as an experimental option.
Waiting for
WebAssembly , which is very promising, but still in its infancy. Talk about the timing of its implementation and there is no mention.
Sorry, if the case corrects only the release of new third-party technologies, then perhaps the problem is in the implementation of Unity WebGL?
Unity is a convenient, popular and cross-platform engine. A great tool for creating games and I really like it. But still it is a tool that has
ceased to work with the web. The most unpleasant is that the future is too vague.
Someone can tell me: "You are a pessimist!" No, I'm just a realist. Realists and guys from NASA. In essence, this gives an answer to the question from the title: “Why did NASA abandon Unity in favor of Blend4Web?”.
Refused for the simple reason - Unity WebGL is not ready, and when will it be?
"We are not committing to specific release dates ..."
And what about Blend4Web? I can only congratulate the developers with a clearly convincing victory in the WebGL field and be glad for our programmers, because the NASA presentation made on b4w will be shown when opening the WebGL section on
SIGGRAPH 2015 . And this is a recognition.