godot: Vulkan: Steam Overlay not rendered

Godot version

Godot_v4.0-rc2

System information

Vulkan

Issue description

The Steam Overlay does not show (Shift + Tab) in Godot 4 when Forward+ renderer is enabled. It does work when the compatability renderer is used, hence this is an issue with the Vulkan renderer.

This issue was brought up in the GodotSteam issues #305 and #237 However this is not the fault of GodotSteam, and suggests that it is an issue with Godot 4’s Vulkan renderer.

It seems something is overriding the overlay from being rendered. It seems there was an issue with Vulkan and Steam back in 2018 145 but this has since been fixed according to that issue.

My concern with this issue being unresolved before Godot 4’s release will mean any games released on Steam in Godot 4 using the forward renderer will not fully work with Steam. Personally, I would like to use the forward renderer in the current game I am working on. The goal is to launch on Steam and have Steam work with the game.

Steps to reproduce

Run reproduction project:

Example code:

extends Node3D

func _ready():
	var steam = Steam.new()
	var INIT = steam.steamInit(true)
	steam.restartAppIfNecessary(480)
	if steam.isSteamRunning():
		print(steam)
		print(INIT)
		steam.activateGameOverlay("Friends")
		print(steam.isOverlayEnabled())
	pass

Press Shift + Tab

Overlay doesn’t show

Change rendering mode to Compatability.

Restart and test and overlay will show. Hence it does work with OpenGL. (But not a workaround for me personally as I would like to use new rendering features from Forward+)

Minimal reproduction project

The reproduction project contains the latest GodotSteam GDExtension binaries compiled for Godot_v4.0-rc2.

Make sure Steam is installed and running.

In the project hit run and press Shift + Tab. No Overlay will show.

GodotSteamOverlayBug.zip

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 34 (9 by maintainers)

Most upvoted comments

As long as it runs from the Steam client, it should work. The client will attempt to inject overlay on programs run through it. There are some situations where this won’t work but it should in this case.

Hello, I have a custom build with mono for Godot 4.0 stable + GodotSteam 4.2 and same behavior can be seen on my side(steam overlay not starting). But if you minimize the debug window and maximize it again, the overlay starts to work as expected,… I can see the same behavior using Facepunch.Steamworks. I use an AMD Ryzen 9 5900HX laptop with AMD Radeon 6800M GPU (Advantage edition) on Windows 10, you can see the behavior in the video bellow. https://www.youtube.com/watch?v=En5_vgJB9PM

The issue is persistent in the official version of godot with Facepunch.Steamworks…

Palying more with the Facepunch.Steamworks I’ve got this error after a minimize->maximize : E 0:00:11:0077 _update_swap_chain: Condition “err” is true. Returning: ERR_CANT_CREATE <C++ Source> drivers/vulkan/vulkan_context.cpp:1970 @ _update_swap_chain() immediately after image pops up, and after the error the whole game is frozen, or at least the input…

So I’ve debugged the engine and for some reason the VK_ERROR_UNKNOWN = -13 is returned as a result on vulkan_context.cpp:1970 line when the function vkCreateSwapchainKHR(fpCreateSwapchainKHR inside the engine) is run after the game is maximized…

Both Facepunch and GodotSteam throws the error above if you minimize and maximize the game window several times. Also after this error happens the game view is frozen(no interaction can be done on UI)

This is what is sent to fpCreateSwapchainKHR before the error image image

Steps to reproduce: In my case after first minimize -> maximize i have to wait 2-3 seconds to see the steam popup, after that if I minimize->maximize again the error occurs, it’s a strange behavior but I can replicate it each time and on both Facepunch.Steamworks and GodotSteam. After first occurrence of the error each minimize->maximize throws the same error

I guess something is missing from Vulkan implementation, unfortunately I do not have experience with graphics APIs so not sure how to interpret what I see…

Edit: I’ve tried also to minimize->maximize several times a project that has no Steam initialized and the error doesn’t occurs, so something happens when the steam overlay is injected…

Sorry for the long post and hope this helps.

Thanks, Mihai C.

There’s no reason these variables would impact the Steam overlay, it’s unrelated to VkBasalt, RTSS and MangoHud, which are all thirdparty overlays. And they’re only disabled in the editor.