carenalgas / popochiu

Godot plugin to make point-and-click adventure games, inspired by tools like Adventure Game Studio and PowerQuest.
https://carenalgas.github.io/popochiu/
MIT License
183 stars 18 forks source link

Make the transition layer optional in the first room #289

Open stickgrinder opened 4 days ago

stickgrinder commented 4 days ago

What's the expected benefit of the feature you are requesting?

The _on_room_entered() function is called on the room change, and happens before the transition layer starts to fade away. This is useful to mask all the setup actions, like moving a character to a certains spot, making some animation play to a certain point, or whatever can "take screen time" and create visual glitches.

The problem is, the transition layer is not applied to the first room, so there is no way to perform some preparatory actions "behind the curtain" if they happen in the first room.

The absence of the TL is by design, to save dev time during tests, and considering that the first room is usually a splash.

In practice this effect is very mitigated and clearly nobody notices as of today, but me coding the sample game.
Still this is a problem that a wider adoption may arise, and the reason is, you can't trust the _on_room_entered() function to behave consistently. The first case out in the wild will result in a bug report.

Describe the solution you'd like

Simple and effective solution is to add (and document) an option in the Project Settings, called "Fade in at game start".
Devs will decide the behavior of their game, not being forced into anything.

Describe alternatives you've considered

mapedorr commented 1 day ago

I like the idea of having something in the Project Settings (maybe under a Scene Transitions section? or the GUI?). But from what I saw while checking the code, having rooms "covered in black" by default might be also needed.

PS: I guess you are refering to the on_room_entered() function. We don't have a _before_room_entered() function, neither a _before_room_updated() one.

stickgrinder commented 1 day ago

@mapedorr yes, sorry! I took a note to check the function name because it sounded weird and I didn't do it :sweat:

Fixing!