Skip to content

OBS uses wrong capture mode on Windows #9116

@ToadLobe

Description

@ToadLobe

Checks

  • I have read and understand the bug report guidelines
  • I checked for existing similar reports to avoid submitting a duplicate
  • I verified the issue occurs in the latest beta release to avoid submitting an issue that has already been resolved

Problem description

When a Construct 3 WebView2 export is captured in OBS Studio using Window Capture, OBS defaults to BitBlt instead of Windows Graphics Capture (WGC). OBS auto-selects WGC for Chromium-based windows by doing a partial string match on the top-level window class name, looking for "Chrome" or "Mozilla". Construct 3's Windows wrapper registers a custom top-level class name WindowsWebview2Wrapper which contains neither of these strings, so OBS defaults to BitBlt mode resulting in a white screen. I believe OBS's class matching list is intentionally conservative so a PR adding WindowsWebview2Wrapper would likely be rejected as too narrow (it's not a Microsoft-standardised class name and other WebView2 apps may not use it). I have submitted a PR regardless: obsproject/obs-studio#13477 and I would appreciate this issue being left open (even just tagged as external until something happens)

I understand that OBS and Scirra will likely point at each other here, since this issue exists in the middle ground between two projects that neither has strong incentive to own. Players will likely blame the developer of the game, and coverage by streamers is essential for indie game growth, so reducing friction here is very important to the community.

One Solution

Rename the registered top-level window class from WindowsWebview2Wrapper to a name containing "Chrome", for example ChromeWebView2Wrapper. This is still semantically accurate (WebView2 is Chromium-based) and would fix the issue.

A Better Solution

A solution that requires some coordination but is cleaner is to give the window a class that the OBS maintainers can more easily justify adding to the match list. Something like Construct3Webview2Wrapper is much more specific and would probably be acceptable. This is assuming that the name WindowsWebview2Wrapper is arbitrary and that renaming it isn't a breaking change.

Upload a project

Empty.c3p.zip

Steps to reproduce

  1. Open the game.
  2. Open OBS and select the game window as a recording source.

Observed result

The window appears solid white in OBS.

Expected result

The window appears normally in OBS.

Affected platforms

Windows

Affected browsers

Edge

Last unaffected release

N/A

First affected release

N/A

Additional remarks

No response

Platform information

Product: Construct 3 r486.2 (beta)
Browser: Chrome 148.0.7778.179
Browser engine: Chromium
Context: browser
Operating system: macOS 26.4.1
Device type: desktop
Device pixel ratio: 2
Logical CPU cores: 10
Approx. device memory: 16 GB
User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36
Language setting: en-US
Audio sample rate: 48000 Hz
Audio output channels: 2
Audio output interpretation: speakers
Renderer: WebGPU
Compatibility mode: no
Supports GPU profiling: yes
Major performance caveat: no
Maximum texture size: 16384
Adapter details: apple/metal-3
Adapter features: bgra8unorm-storage, clip-distances, core-features-and-limits, depth-clip-control, depth32float-stencil8, dual-source-blending, float32-blendable, float32-filterable, indirect-first-instance, primitive-index, rg11b10ufloat-renderable, shader-f16, subgroups, texture-component-swizzle, texture-compression-astc, texture-compression-astc-sliced-3d, texture-compression-bc, texture-compression-bc-sliced-3d, texture-compression-etc2, texture-formats-tier1, texture-formats-tier2, timestamp-query

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions