Can't help but feel that the big game engines are going to have the most impact for 3D on the web. Our team at Wonder has brought Unreal Engine support back to HTML5 for newer versions of the engine, and we're offering an entire platform and suite of tools to enable developers to publish, manage, host, and monetize their games and 3D experiences on the web. Full blog post with demos below:
I'm very skeptical that big game engines will have any impact on the web. The issue is they're built for downloading XX gigs of data to a hard drive. Not for launching instantly like say google maps 3d mode.
Further, they re-implement everything themselves instead of using the features already built into the browser. Image decoding, video decoding, sound mixing, networking, text rendering, etc meaning you end up downloading 10-50meg of WASM. And every time they make a tiny change expect another large download.
Vs something like three, pixi, babylon, playcanvas, which are designed web first.
I think, it's likely a successful real-time 3d web based game will be designed for the web and I don't think the big game engines are engineered to make that easily possible.
I use UE5 and I started playing with Godot[0] years ago, and I think this article on game engine selection has some merit on the importance over which game engine leads in a multi-billion dollar industry that is so pervasive in our culture and economics[1].
I was using Raylib for my fun little toy projects and a gateway library into game dev, but it is not as much of an integrated system as Godot, UE5, or Unity.
Gamers are made use to very high-end graphics and the look and feel that would lend UE5 and Unity an advantage, although Godot's capabilities have improved exponentially since I first played with it. It is also a very nice community.
On my last project, a very large walkthrough with animations of a very big model was very playable on everyone's laptop where I worked, but this was more of a visualization application. It was done in UE4 and utilized a company's proprietary kit to make it happen, not vanilla UE4.
We’re optimizing Unreal to work in the web, both for performance and load times.
Our asset streaming system bypasses the need for users to load an entire game upfront. Only what is needed is fetched, everything else is streamed in at runtime in the background. We’ve also implemented basis texture compression, which reduces file sizes and reduces load times further.
Unity is pretty good for smallish package sizes. There’s a few people in the Web Game Dev discord making money from Unity exports to the web on portals. That said I do think web native engines are the way to go ultimately as the package size will end up smaller in a like for like comparison. Unity games can be smaller than a lot of websites depending on how they’re put together.
The thing to keep in mind is overall audience expectations, the size of that market segment and how you want to monetise because that can result in some trade offs that are on the whole different to the average web app.
With all that said smaller initial packages, less processing on load and later streaming of assets should all be first line concerns for any web native engine.
> The issue is they're built for downloading XX gigs of data to a hard drive.
In the end, bandwidth is everything. If you can stream the asset data in the background that's most likely needed next, and discard the asset data that's most likely no longer needed without disrupting gameplay, storage space (or upfront download waiting time) is no longer an issue. The web server essentially becomes your hard drive.
It won't work for games that have been built for traditional gaming platforms of course, it basically requires to design the game from the ground up around the bandwidth limitations.
That said, I'm also sceptical about the whole idea of bringing AAA games to the web, even if it would be technically feasible. The main problem is that the business model isn't there (outside closed platforms like Facebook, TikTok or WeChat, which focus on entirely different types of games).
You'd first need a successful "Steam for the web" platform before tackling serious game projects. A typical chicken/egg situation.
PS: I fully agree about traditional game engines not being fit for the task, if there is a "web gaming" disruption, it will come out of the web hemisphere, not the traditional PC/console game engine side.
PPS: I'm reasonably sure it's possible to pack a complete 3D game client into a ~3..4 MByte WASM download (compressed) if you write the whole thing from scratch and don't use one of the 'industry standard' engines. That was the (compressed) size of the native Drakensang Online game client for Windows I worked on in the past, and this didn't use any services from the operating system that aren't also available in the browser in some form or another (e.g. all rendering, including UI and text... was all done from scratch on top of D3D9, networking was done on top of UDP sockets via RakNet, sound was done via FMOD).
PPPS: While traditional game engine runtimes are not fit for the task, maybe their asset pipelines, editor tools and workflows are. The 'engine' is just that little unimportant thing dangling off at the end of the asset pipeline after all ;) The Unity editor can be used to some extent in such a 'bring your own engine' role, but I guess that's at least a 'legal gray area', if not downright illegal.
For the PPPS case there is Needle Engine which is making some strides to using Unity as an editor for its own export.
The other side of bringing AAA style titles to the web are browser runtime memory limits. They can be pretty restrictive compared to the amount used by modern titles.
I've kept an eye on WebGL/WebGPU/etc for my own app but haven't really made any moves in that direction yet. What's the market for 3d rendering in the browser at the moment (beyond your demos)? In theory it sounds nice to load up a webpage and jump straight into a game but the reality is probably quite different, what with long asset loading times and (I'm guessing) fractured userbase in terms of hardware.
I know it's your product so you're bullish either way, but a candid answer would be appreciated.
It's not trivial, but it's absolutely possible to build an instant-loading web game with WebGL. https://venge.io is my go-to example. You can click that link and starting from zero you can see 3D rendered content in about three seconds and be shooting people in multiplayer in less than 10 seconds (on a decently fast connection).
Of course the graphics there are not competing with Unreal, but in principle it should be possible to do progressive loading of assets and reach a much higher quality over time without sacrificing that fast initial load.
I suppose my follow-up question is: is there a sufficiently large market for that type of game? Not just blue-sky thinking, I'm more wondering if there is proven demand, as of today.
Side-note: I couldn't load the game in Safari (which has amazingly poor WebGL support).
I think there is a decent sized market in terms of number of players but monetization is not as good as other platforms. There's no IAP and less inventory of app install ads, which I believe are the two big moneymakers for native mobile games.
One successful path seems to be early access on the web to build a following, with a release on Steam/app stores for monetization afterward using Electron or Node, with the web version remaining as a free demo (e.g. Vampire Survivors or CrossCode). The other path is ad monetization, and there are a lot of portals like crazygames.com or poki.com that host that type of game. I think the market there is largely schoolkids with Chromebooks. I'm not aware of any successful web games that are sold as an up front purchase like Steam games.
I don't think traditional AAA makes sense in the browser right now, but I see all sorts of UGC experiences having large synergy with web standards. The business playbook is largely there too.
One reason the market isn't sufficiently large yet is really because of the creation tools at our disposal imo. Web 2.0 explosion was arguably driven by great network effects of the proliferation of mobile cameras.
Right now, none of my friends make 3D content. I personally believe that's going to change with depth sensors, 3D scanning, nerf, generative content, etc.. so the trendline is there for me to buy this theory. I'd look more towards social games, hangout type experiences, or async consumption... as opposed to realtime, networked, embodied, immersive.
Side-note: Apple has demonstrated the willingness to change their tune on WebGL, I suspect they'll catch up pretty quick.
You can get really close to instant and it’s about how you build and package your content. If you need to download megabytes of assets and/or do complex processing on load you’ll be in for a bad time. The fractured hardware base you deal with by making an educated choice about the minimum spec you will target and accepting that people below that will have a worse experience or be unable to take part.
I'm not the person you are responding to but I've been working on a web 3D rendering focused product for a bit now.
One issue that we've run into is that by default on laptops, Windows will not use an available discrete GPU in the browser. The only way to work around this is if you go to your power settings (not in the browser) and tell Windows to use the discrete GPU over an integrated one.
Yes, we thought that was strange too but it kind of makes sense if the process is unaware that the GPU exists because of the OS settings.
As an aside, we also discovered that `powerPreference` is only a hint according to the spec, so there's no guarantee that an implementation will adhere to it: https://registry.khronos.org/webgl/specs/latest/1.0/
It's unfortunate that unreal abandoned webgl export 2 years ago! I'm glad your doing this for unreal! as I don't want to switch back to unity just for webgl export
Will there be support for mobile web? This tends to be largely ignored as a deployment target, but is very important to my client when it comes to games in the crypto space.
Love it! PixiJS is awesome. Highly performant, the best webgl/canvas screen graph out there for me. Apart from occasional tooling issues with imports and TS definitions, usually when I upgrade, firing up an art/code project is almost as easy as in the good old days with AS3. I'm looking forward to adding 3D straight into my next project without using any ThreeJS or other libraries!
I expect this to have an easier story combining 3D and 2D elements than threejs, in which you are basically left alone placing html or svg elements over your canvas and synchronizing them to your 3D state (which is ok as well, you can get 2D coordinates from three for your objects with some calculating). Also three does not really support having your 3d scene with a transparent background before some other 2D or web stuff (you basically have to bring everything into three somehow, e.g. as a texture). Pixie seems to support that when they say you can have 3D and 2D Containers on top of each other.
Given PixiJS is a 2D renderer by default I wouldn’t expect performance as high as Three.js. Pixi3D seems to be a way to add the occasional 3D object to your 2D drawn application.
PixiJS renders 2D exactly the same as 3D is rendered using Three/Babylon, it's all WebGL (with vertex data, textures and shaders) in the end. Pixi3D should perform very similar to the other 3D renders on the web.
How does it compose 2D and 3D content? Is it using a WebGL canvas for the rendering surface? Or a 2D canvas and rasterising the 3D content in an offscreen canvas and transferring to bitmap to place in the 2D canvas?
The readme describes some options you have for combining 2D and 3D.[1]
It seems you can either have 3D and 2D on top each other (without transformations applying to both) or include a 3D sprite in 2D. I guess that means 2D and 3D are generally not composed together but separately.
https://theimmersiveweb.com/blog