Pixi3D – 3D rendering library for the web
github.com
github.com
I know it's your product so you're bullish either way, but a candid answer would be appreciated.
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.
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/
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.
Side-note: I couldn't load the game in Safari (which has amazingly poor WebGL support).
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.
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.
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.
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.
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.
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.
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 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.
[1] https://members.newdesigncongress.org/the-coming-game-engine...
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.
I don't actually need an answer to that question, I just want to know if it's possible.