About 3 min readNovus Stream Solutions
Why matches stopped starting on WebGL
A shipped build could sit on the match loading screen forever. The cause was a render setting that asked WebGL 2 for a texture type it does not have.
- Release notes
- WebGL
- Rendering

The release this is about
40da7f5bb4b33784, shipped August 22, 2026. Matches start again on WebGL.
There is a particular kind of bug that is worse than a crash, because a crash at least tells you something has gone wrong. This one let you press Play, watch the whole build come down the wire, reach the match loading screen, and then wait. Nothing failed. Nothing said anything. The match simply never appeared.
It is fixed. The fix shipped in release 40da7f5bb4b33784, and it is the first line of that release's patch notes. This post is the long version of that line.
The symptom
Starting a match left the loading screen up indefinitely. It was not a slow load and it was not a download problem: the build had already arrived, the engine had already started, and the menus in front of it worked. The failure was specific to the moment the match itself was meant to appear.
The other half of the symptom is what made it so hard to pin down. Refreshing the page sometimes worked. A bug that goes away when you retry is a bug that never gets reported cleanly, because the person who hit it has already got past it by the time they would have written it up.
The cause
The render pipeline was configured to request multisampling. Multisampling is ordinary anti-aliasing: the renderer samples each pixel several times so that edges do not come out as staircases. On most platforms asking for it is free of consequence.
On this one it was not, because of a second thing the pipeline does. Several effects need to read the depth of the scene, and the pipeline provides that by copying the depth buffer into a texture the shaders can sample. When multisampling is on, that buffer is multisampled, so the copy has to sample a multisampled texture. WebGL 2 does not have that texture type. The shader the copy pass needs could therefore never compile, the pass could not run, and every camera that depends on it, which is every match camera, had nothing to draw with.
There was a second, quieter symptom of the same setting. The renderer was probing the WebGL context for multisample formats it does not support, which logged an invalid-format error on every single startup. That error had been visible in the console the whole time, and it was noise rather than a signal until it turned out to be pointing straight at the cause.
The fix
Multisampling is off in the WebGL render pipeline. That removes the impossible shader rather than working around it: with no multisampled buffer there is no multisampled copy, the depth pass compiles like any other, and the match camera gets what it needs.
The honest cost of that is edge quality. That release renders without multisample anti-aliasing, so diagonal edges are harder than they would otherwise be. It is a real trade and it is the right way round: a slightly harder edge is a game, and a perfect edge you can never reach is not.
What shipped alongside it
The same release published the work that had been finished since the previous build and was waiting on something playable to ship inside:
- Forty-six reviewed animation clips, promoted through override controllers.
- The arenas dressed, and the menu art set finished.
- The character voice bank, with its cue gaps closed.
- The menu and career integration gaps closed.
- Fifteen roster characters, with AURA standing in MAESTRO's slot.
- Torn character meshes repaired at import, and blank captures made to fail loudly instead of shipping.
How to tell which build you are on
Every release is published under an id that is a hash of its own contents, so it is not a version number anyone chose. The one being served is marked Now playing on the release notes page, and it also appears in the diagnostic report the game page offers when a launch fails.
Problems that are still open in the build you can play today are listed on the status page, with a workaround for each where one exists. That page is written by hand and carries the date a person last reviewed it, so read the date before you read the board.
Where to check this
Nothing above is written from memory. These are the pages and records each claim comes from.