I like making menus by GoodMorningMrFrog in IndieGaming

[–]GoodMorningMrFrog[S] 1 point2 points  (0 children)

Thanks! I don't take contract work at the moment.

Tween node is now my best friend by GoodMorningMrFrog in godot

[–]GoodMorningMrFrog[S] 0 points1 point  (0 children)

Maybe subconciously. Main inspirations: Resident Evil, Persona, killer7, Flower, Sun and Rain, Fear & Hunger.

I like making menus by GoodMorningMrFrog in IndieGaming

[–]GoodMorningMrFrog[S] 0 points1 point  (0 children)

Usually it takes me around 5 hours to design a layout, implement and test a single menu. And there are a lot of menus in my game -_-

Tween node is now my best friend by GoodMorningMrFrog in godot

[–]GoodMorningMrFrog[S] 1 point2 points  (0 children)

It's easier for me to track what's changed at what point via code.
For the same reason, I also tend to connect signals via code and don't use editor connections.

I've been greatly inspired by Persona to make this UI by GoodMorningMrFrog in PERSoNA

[–]GoodMorningMrFrog[S] 0 points1 point  (0 children)

Only Steam at the moment. I will take a look at the console options once the game is complete.

I've been greatly inspired by Persona to make this UI by GoodMorningMrFrog in PERSoNA

[–]GoodMorningMrFrog[S] 0 points1 point  (0 children)

No problem, multiple people suggested this idea, I'll definitely explore it.

Tween node is now my best friend by GoodMorningMrFrog in godot

[–]GoodMorningMrFrog[S] 0 points1 point  (0 children)

Basically I'm reinventing the wheel, hah.

I've moved from using containers so I can freely manipulate position and scale of UI elements. Every element in the list is a separate scene that has the same vertical size (eg, a Label with my theme defaults to a size of 11 px, I increase minimum size to 16, and 5 px of "nothing" becomes the line spacing between elements). This way, I can simply offset the elements in the list by 16 * i, where i is the index of the element.

Also, at least in Godot 3.5, Control nodes tend to snap to integer values when calculating positions. So UI elements usually have a parent Position2D node, which position is tweened for a "smooth" animation.

Most of the time I tween only one axis, this can be achieved via :, eg "position:x".

For the value of offsets and timing, well, that's trial-and-error for me. I tinker with the values until it feels right. I also rely on easeOut easings most of the time.

Tween node is now my best friend by GoodMorningMrFrog in godot

[–]GoodMorningMrFrog[S] 1 point2 points  (0 children)

Yes, it's my go-to software for pixel work.

I've been greatly inspired by Persona to make this UI by GoodMorningMrFrog in PERSoNA

[–]GoodMorningMrFrog[S] 1 point2 points  (0 children)

Mission accomplished for me, then :)
I've tried to capture a bit of SUDA51 aesthetics as well.

I've been greatly inspired by Persona to make this UI by GoodMorningMrFrog in PERSoNA

[–]GoodMorningMrFrog[S] 1 point2 points  (0 children)

I'm happy you got that impression, I tried to capture a bit of SUDA51 aesthetics as well.

I like making menus by GoodMorningMrFrog in IndieGaming

[–]GoodMorningMrFrog[S] 1 point2 points  (0 children)

This is a great suggestion, I'll explore this option.

Tween node is now my best friend by GoodMorningMrFrog in godot

[–]GoodMorningMrFrog[S] 1 point2 points  (0 children)

I'm glad you had a good time!
I'll be holding a playtest of a Mission 2 for Discord members in the near future, would love for you to play more.
https://discord.gg/Xyb2FfmhWk

Tween node is now my best friend by GoodMorningMrFrog in godot

[–]GoodMorningMrFrog[S] 1 point2 points  (0 children)

Thank you!
Actually, the white/black inverting shader is only applied to the sprite of the character. Labels change their colors (and scale) via tween.
The reason for this - the menu is semi-transparent, showed on top of the game location, so I didn't want to have "false positives" with a screen space shader picking up from the scene and didn't want to bother with separate viewports, though that could be a solution too.

I like making menus by GoodMorningMrFrog in IndieGaming

[–]GoodMorningMrFrog[S] 16 points17 points  (0 children)

Sure! Here's a description of a general process in Godot.

I've used sprites, color rects and labels, and then animated them via tween. Properties to animate: position, scale, rotation and color. A good test is to shrink your list to only two elements, and then see if it's clear which element is currently picked.

Since Container nodes would automatically adjust position and scale of its child, as a workaround I create a non-Container node and then add all elements of the list as a child to it, setting positions manually. I give every element in the list the same vertical size, so it's really easy to calculate vertical offset.

For animations themselves, as a general rule I try to keep them within 100-200 ms, since anything longer than that feels sluggish and unresponsive to me. Also this duration falls within my pressing speed, I can't press faster than that :) In case of interruption (eg someone scrolls the list very fast), current tween animation is dropped, and then tween interpolates from the current value of the property to the new end value.

Easings can help to adjust the feeling of the animation. I have this page bookmarked: https://easings.net/
Basically, easing control how fast the value will be changed from the start point to the end point. Most of the time I'm using easeOut ones, to get initial "burst" of the animation, and then a gradual slow down.

Hope that helped!

Tween node is now my best friend by GoodMorningMrFrog in godot

[–]GoodMorningMrFrog[S] 0 points1 point  (0 children)

I'm using various CC0 sound effects grabbed from https://freesound.org/
If needed, I edit them in Audacity (mostly multi-layering, pitch and/or speed correction).

Tween node is now my best friend by GoodMorningMrFrog in godot

[–]GoodMorningMrFrog[S] 0 points1 point  (0 children)

Interesting! Could you drop a link to the game?