Skip to content

OscilloWave Extension ( Updated ) #1521

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Feb 3, 2025

Description

DESCRIPTION

OscilloWave is a JavaScript function that supports Amplitude, Frequency, Time and Speed parameters, allowing you to tweak the appearance of your banner. It does not require a condition since it only performs a single action. However, it must run every frame; otherwise, it won’t work. Additionally, you must provide values for all parameters, as there are no default values.

How to use the extension

USAGE

The OscilloWave function is primarily used for animated banners and UI interfaces, allowing you to create smooth oscillating effects. Some key use cases include:

Dynamic Banners – Add wave-like motion to text, images, or background elements for eye-catching visuals.
Interactive UI Components – Apply oscillations to buttons, headers, or icons to enhance user engagement.
Hover & Focus Effects – Introduce subtle movements when users interact with elements.
Background Animations – Create flowing, wavy backgrounds for modern and sleek UI designs.
Loading & Transition Effects – Make UI state changes more fluid and visually appealing.
Wavy Text – Easily create animated, flowing text effects, as shown in the example.

INSTALL
On the desktop version of GDevelop, click the button Import extension, next to "Create a new extension", to import an extension from a .json file.
Install new extensions - GDevelop documentation

Checklist

  • I've followed all of the best practices.
  • I confirm that this extension can be integrated to this GitHub repository, distributed and MIT licensed.
  • I am aware that the extension may be updated by anyone, and do not need my explicit consent to do so.

What tier of review do you aim for your extension?

Community (Unreviewed)

Example file

OscilloWave Project.zip

Extension file

OscilloWave.zip

@github-actions github-actions bot added the ✨ New extension A new extension label Feb 3, 2025
@github-actions github-actions bot requested a review from a team as a code owner February 3, 2025 20:42
@github-actions github-actions bot force-pushed the extension/dagode/1520 branch from 3e8ea96 to d90e75e Compare February 3, 2025 21:56
@D8H
Copy link
Contributor

D8H commented Feb 3, 2025

Thank you for submitting an extension.

Do you know about the ellipse movement extension? It does something similar but with more features and without using any JavaScript:

@dagode
Copy link

dagode commented Feb 3, 2025

Thank you for submitting an extension.

Do you know about the ellipse movement extension? It does something similar but with more features and without using any JavaScript:

OscilloWave is more focused on creating smooth, wave-like animations specifically for UI elements. I designed it to be especially useful for things like dynamic text effects in menus, banners, and interactive UI components. The sinusoidal wave movement has an initial offset, and the intensity gradually increases, which works well for adding fluid, engaging animations to text or other UI elements.

While Ellipse Movement extension seems to be great for circular or arc-based movements.

@D8H
Copy link
Contributor

D8H commented Feb 4, 2025

This template does a sine on the plane by setting 1 radius to 0:

This is what I meant by more features: sine on 2 axes + ellipse movement. The features are also listed in the extension description, you should probably read it:

@github-actions github-actions bot changed the title OscilloWave Extension OscilloWave Extension ( Updated ) Feb 4, 2025
@github-actions github-actions bot force-pushed the extension/dagode/1520 branch from d90e75e to 735c0c7 Compare February 4, 2025 14:37
@dagode
Copy link

dagode commented Feb 4, 2025

This template does a sine on the plane by setting 1 radius to 0:

This is what I meant by more features: sine on 2 axes + ellipse movement. The features are also listed in the extension description, you should probably read it:

Thanks for your feedback and the references!

I’ve just updated the extension and added a few more features (Offset, X/Y/Both movement, Time, Frequency, Speed, Modulation) to enhance UI customization. I understand the comparison with the Ellipse Movement extension, but my extension, OscilloWave, is focused on text animation and UI effects rather than platforming movement.

Unlike Ellipse Movement, which provides smooth elliptical motion (or a sinus wave if set up correctly), OscilloWave creates a modulated sine wave for more expressive, dynamic, and unpredictable motion. This makes it especially useful for wavy text effects, animated banners, and UI elements, rather than stable object movement.

@D8H
Copy link
Contributor

D8H commented Feb 5, 2025

Is the function you used widely known? What is its name?

dynamic, and unpredictable motion

Can't a noise function be used for this?

The 3D object shake extension uses noise:

Your extension asks users to run an action every frame. This is something that should be avoided as much as possible because it's not user-friendly. You should take a look at the above extension as it's similar to what you're trying to do but gives a way to run a duration with easing or start and stop manually.

@dagode
Copy link

dagode commented Feb 5, 2025

Is the function you used widely known? What is its name?

dynamic, and unpredictable motion

Can't a noise function be used for this?

The 3D object shake extension uses noise:

Your extension asks users to run an action every frame. This is something that should be avoided as much as possible because it's not user-friendly. You should take a look at the above extension as it's similar to what you're trying to do but gives a way to run a duration with easing or start and stop manually.

Thanks for the feedback! I see the flaws in my current approach, and I agree that it’s not the most user-friendly solution. Given that, I’ve decided to remove this extension and focus on creating something new that’s more accessible and efficient for everyone to use.

@D8H D8H added the ⌨ JavaScript Uses JavaScript code, and thereby needs a reviewer who knows JavaScript. label May 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⌨ JavaScript Uses JavaScript code, and thereby needs a reviewer who knows JavaScript. ✨ New extension A new extension
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants