Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow disabling boot splash #3144

Open
qrrk opened this issue Aug 15, 2021 · 9 comments
Open

Allow disabling boot splash #3144

qrrk opened this issue Aug 15, 2021 · 9 comments

Comments

@qrrk
Copy link

qrrk commented Aug 15, 2021

Describe the project you are working on

A non-game desktop application using Control nodes.

Describe the problem or limitation you are having in your project

My app is not particularly complex or heavy, and takes within a second to load (at least on my system), so a splash screen isn't really appropriate in it. It appears only for a split second, not enough to discern the contents, and will only annoy the user with flickering. I also need to resize the window after it is created, and I feel the lack of a splash screen can make this process more seamless.

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

The ability to disable the splash screen and not show the main window at all until all resources are ready would be ideal for an app like mine. I understand that splash screens are needed for games, but for desktop applications a few seconds of silent loading with no feedback are not uncommon.

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

AFAIK, this ability used to exist in Godot 2, so perhaps it can be ported? I am not sure what it will take to implement now, but I don't imagine it will be very difficult or conflict with other functionality.

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

No, since your scripts start running after everything has already happened.

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

It should not be difficult to add, and it will make the engine more versatile. When it comes to desktop apps, Godot is a great alternative to heavy frameworks like Electron, so if its usefulness in this area can be improved at a small cost, it should be done.

@KoBeWi
Copy link
Member

KoBeWi commented Aug 15, 2021

during boot splash, Godot loads your main scene. If you have a custom splash screen scene, you could make your boot splash texture fully transparent, so that upon startup your scene loads seamlessly. There is a proposal to make the texture optional: #1445

@qrrk
Copy link
Author

qrrk commented Aug 15, 2021

@KoBeWi I'd rather not show anything at all during loading, no window, nothing. Can I hide the splash entirely if I make the window borderless and use a completely transparent texture? The window will still technically exist, which may create its own problems, but it's better than nothing.

UPD. Just checked - the alpha component has no effect, at least on Linux.

UPD2. I managed to make transparency show up, and combined with a borderless window it almost works, but not quite, since there are also decorations provided by the window manager (drop shadow in my case).

@Calinou
Copy link
Member

Calinou commented Aug 15, 2021

AFAIK, this ability used to exist in Godot 2, so perhaps it can be ported?

I don't remember seeing an ability to disable the boot splash window entirely in Godot 2.x. That said, the ability to use a plain color without creating a 1×1 image has been requested numerous times: #1445

I understand that splash screens are needed for games, but for desktop applications a few seconds of silent loading with no feedback are not uncommon.

Since Godot has no way to enforce single-instance for projects yet, not displaying a splash screen could result in the user attempting to start up the application several times in a row. This is especially true on slower hardware where starting up any application can take upwards of 10 seconds. Not everyone has a SSD just yet 🙂

@zinnschlag
Copy link

Since Godot has no way to enforce single-instance for projects yet, not displaying a splash screen could result in the user attempting to start up the application several times in a row. This is especially true on slower hardware where starting up any application can take upwards of 10 seconds.

If that were a common real-life problem, then there wouldn't be that many applications that don't have a splash screen.

I understand that splash screens are needed for games

I find that questionable, at least as a general statement. I don't have the time to go through my steam library and take inventory. But unless my memory is completely betraying me there should be plenty of games that don't have a splash screen.

@KoBeWi
Copy link
Member

KoBeWi commented Aug 15, 2021

If that were a common real-life problem, then there wouldn't be that many applications that don't have a splash screen.

Most applications just display solid color before they load. It happens in a flash, so it's not very noticeable.

@zinnschlag
Copy link

zinnschlag commented Aug 15, 2021

Most applications just display solid color before they load. It happens in a flash, so it's not very noticeable.

That is not what I see with my applications here. But of course your mileage may very, depending on what applications you are using. And no, I don't have an SSD and I do experience loading times at about 2-4 seconds for quite a few applications.

@qrrk
Copy link
Author

qrrk commented Aug 15, 2021

not displaying a splash screen could result in the user attempting to start up the application several times in a row.

Again, it's not uncommon for developers to just regard that as something that can happen to impatient users and not worry about it.

@nathanfranke
Copy link
Contributor

nathanfranke commented Jan 29, 2022

Resolved by godotengine/godot#47567

@Calinou
Copy link
Member

Calinou commented Jan 29, 2022

Resolved by godotengine/godot#47567

This proposal is about disabling the boot splash entirely, not just displaying a plain color instead of an image. The window creation should be delayed until the project is done initializing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants