godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.15k stars 97 forks source link

Adding visible mouse cursor in movie recording settings #5387

Open Linko-3D opened 2 years ago

Linko-3D commented 2 years ago

Describe the project you are working on

Some games play exclusively with the mouse, like top down strategy games, but also in other kind of games and menus.

Describe the problem or limitation you are having in your project

I can't make a video demo because the mouse isn't recorded in my 2D game (I can, but I need to record with another software and could have frames missing).

Describe the feature / enhancement and how it helps to overcome the problem or limitation

A setting to make the cursor visible in the exported video.

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

In Project > Project Settings... > Editor > Movie Writer, we should have a checkbox "Cursor Visible", maybe enabled by default unless it uses a trick that has an impact on performances or won't avoid lost frames during recording.

If this enhancement will not be used often, can it be worked around with a few lines of script?

A script cannot enhance the movie maker mode.

Is there a reason why this should be core and not an add-on in the asset library?

The movie maker mode is part of Godot 4's core features.

Calinou commented 2 years ago

Related to https://github.com/godotengine/godot-proposals/issues/5300.

There is no way to draw the OS mouse cursor on top of the rendered video, as it's not drawn within the window (but is drawn on top by the OS instead). However, a sprite that represents the cursor can be rendered by Godot within the window. That said, this is something you can already do with a Sprite2D and a script that makes it follow the mouse position.

One issue with a software sprite that its shape needs to change depending on the current mouse cursor shape, which is determined by the engine (and also user code). This is feasible to do, but it's quite complex to cover all scenarios.

Note that for a visible cursor option to be really useful, there should also be a project setting to adjust the cursor's scale. If you're rendering a video at a high resolution like 4K, the cursor will need to be larger to remain easily visible when the video is viewed at lower resolutions.