godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.04k stars 21.18k forks source link

Screen capture shows game as frozen when recorded in fullscreen #71460

Open knivspark opened 1 year ago

knivspark commented 1 year ago

Godot version

3.5.1 Mono

System information

Windows 10, NVIDIA GeForce RTX 3060, GeForce Shadowplay, Xbox Game Bar

Issue description

For context, I have been using shadowplay as part of my workflow for a long time since I started working in Godot, and it has worked just fine until fairly recently.

EDIT: Apologies, I totally forgot to mention that I got a new GPU recently, and after that is when the issue started occurring for me. I used to have a GeForce 970, and now I have a GeForce RTX 3060.

Now Godot games show as frozen in screen capture recordings made with GeForce Shadowplay. Audio can be heard in the background, but the image is not moving.

Workaround: I can record Dome Keeper without the screen being frozen IF playing the game in windowed instead of full-screen.

Screen capturing via the Xbox Game Bar (accessible by pressing XBOX button on xbox gamepad, or WIN + G - Default keyboard mapping) is shown as "not being supported for the game's current settings".

This issue occurs with e.g. DOME KEEPER (Released Godot game on Steam) and the game I am developing in Godot with my buddies @TheOrioli and crew at Kikimora Games.

Xbox Capture - Dome Keeper

Xbox Capture - Kikimora Games

In addition...

  1. Recordings made with shadowplay used to be put in folders specifically for each game, e.g. a DOME KEEPER folder etc. Now recordings from both Dome Keeper and the game I am developing with my buddies is put into a folder called "Base Profile".
  2. I no longer see the shadowplay overlay in the corner of the screen on top of godot games (e.g. FPS, recording status, etc) played in fullscreen. If switching to windowed I see the overlay.

Recording Folders

Also see somewhat related issue https://github.com/godotengine/godot/issues/71282 which I noticed around the same time.

I have tried adjusting my settings both in-game and for my displays to see if the issue stops occuring, but so far the only workaround I have found is playing game in windowed mode instead of fullscreen.

Steps to reproduce

Prerequisites: Have Xbox Game Bar + GeForce Shadowplay set up.

  1. Boot up your godot game, OR e.g. Dome Keeper (Steam)
  2. Play the game in fullscreen
  3. Try to record via Xbox Game Bar
  4. Record via Shadowplay
  5. Look at your shadowplay recordings

Result: Observe that you can not record with Xbox Game Bar due to it not being supported with the game's current settings. Also observe that the image is frozen for recordings made with shadowplay.

Workaround: Play and record the game in windowed mode.

Repro Video: (You can hear the game audio playing while screen is frozen - See it stop occurring when enabling windowed)

https://user-images.githubusercontent.com/22318949/212542804-3d5c933c-2108-4462-9c7c-331c58de5030.mp4

Minimal reproduction project

N/A

Zireael07 commented 1 year ago

Can you record other games while fullscreen? IIRC this is a general Windows/Shadowplay issue, not a Godot issue

Calinou commented 1 year ago

Related to https://github.com/godotengine/godot/issues/953. This is probably not something we can fix, aside of using borderless fullscreen instead of exclusive fullscreen unless specifically requested (this is already the case in 4.0).

knivspark commented 1 year ago

Can you record other games while fullscreen? IIRC this is a general Windows/Shadowplay issue, not a Godot issue

I can record other games just fine. And until recently I used to be able to record Godot games just fine as well.

EDIT: Apologies, I totally forgot to mention that I got a new GPU recently, and after that is when the issue started occurring for me. I used to have a GeForce 970, and now I have a GeForce RTX 3060.

Now neither shadowplay or xbox game bar can record Godot games in fullscreen.

bruvzg commented 1 year ago

aside of https://github.com/godotengine/godot/issues/60665 (this is already the case in 4.0).

Inability to record screen in an "exclusive full-screen" (with desktop composition disabled) is normal.

For the reference, Godot 4.0 have dedicated composition friendly full-screen mode that should not interfere with other apps and screen recording. Godot 3.x do not, whether the app will or will not enter "exclusive full-screen" depends on GPU driver (so updating GPU might be the reason).

Note: setting window to borderless and stretching it to the size of screen is equivalent to 3.x full-screen mode and will NOT solve the issue.