Improving existing Animation System to improve usability for adaptive/dynamic Music #6483
Replies: 15 comments
-
So I've just realized this whole thing might become a whole much bigger beast with rhythm based games, like for instance with Remember Me. Having a core utility I would call a "conductor" that allows you to have a rythm in your Scene, to cue sound effects based on that rythm, to handle input based on rythm while having koyote-frames (so it can handle inputs even when they are slightly off beat) sounds like an incredible utility, that will make developing a lot of games a lot easier. But also ... the scope of this would be substantial. |
Beta Was this translation helpful? Give feedback.
-
Not all games, not even most, may necessarily benefit from this. Therefore it may be better off as an addon. |
Beta Was this translation helpful? Give feedback.
-
I disagree, I think this is quite a useful feature, and should be in core. |
Beta Was this translation helpful? Give feedback.
-
The thing is: implementing it on an engine level by improving the animation systems to work better with rythm is imo a much better way to go about it, and choosing this approach would be really clunky to do as an AddOn. And like ... most games made in Godot will not use localisation, but there's a reason it's natively supported and I think this falls into that category. |
Beta Was this translation helpful? Give feedback.
-
While it is arguably off topic I would like to see where you get this from? Also the editor uses localization. How does this godotengine/godot#64488 fit this proposal? |
Beta Was this translation helpful? Give feedback.
-
Quite well imo! i already have a thumbup on that pr. |
Beta Was this translation helpful? Give feedback.
-
Be aware that an addon can be built as a module an be fully integrated, though requiring you to rebuild the engine, so performance doesn't really come into it What does come into it however is the workload in maintaining any feature, the size taken up by it, etc. |
Beta Was this translation helpful? Give feedback.
-
Quite well looking at it broadly, I only checked for adaptive music. Will probably close this issue once I've had a closer look at it. |
Beta Was this translation helpful? Give feedback.
-
I've looked at it an I'm not going to close the issue right now, as I'm not sure if the Merge is going to go trough and if it is the best approach. I feel like retro-fitting an animation-system to an audio player is really redundant when we have an animation system already, that we could just make more compatible with music. |
Beta Was this translation helpful? Give feedback.
-
Then the issue of feature bloat and maintainability remains, will quote myself from another proposal: |
Beta Was this translation helpful? Give feedback.
-
I don't think so honestly. I've looked further into I really need to update my initial comment, but I think it's kind of wasteful to not fix the remaining issues with these systems, that prevent them from being useful to play music instead of building a new Animation System into the |
Beta Was this translation helpful? Give feedback.
-
I have changed the Proposal to be a lot more clear now and will soon provide some UI Mockups. |
Beta Was this translation helpful? Give feedback.
-
@Riteo
So in a professional setting, you would sync your audio before putting it trough the mixer, witch is also what I'd suggest for this.
Okay, you can adjust levels for each AudioStreamPlayer right now, so that would be fine, but orchestrating the effects you'd put on a bus could be difficult, as the Audio-Busses are global state iirc and I don't know how well Godot
I mean on what measure you are animating is purely a UX-Question. You can put framerate to whatever FPS you like, you can speed up or slow down animations, the Engine doesn't really care about it. You'd have to do some amount of rework to the UI, but I think it's far less substantial than the currently open branch. |
Beta Was this translation helpful? Give feedback.
-
I'm pretty sure that animation handling revolves around keyframes and that adding something like BPM handling would be a separate new feature, not just an UX question. BTW note that I'm not at all against an audio animation system and I do indeed see similarities, but I really don't like the idea of mixing animations and audio in the same place, instead preferring the idea of having a common framework for such things, if that even makes sense. |
Beta Was this translation helpful? Give feedback.
-
The audio playback code on the animation side has been greatly improved recently. I think setting a BPM for snapping on AnimationPlayer could be done easily, but audio would not start exactly synchronized and this may be a problem, this needs to be worked out on the audio server side. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Describe the project you are working on
A game that has an adaptive Soundtrack.
Describe the problem or limitation you are having in your project
Syncing Audio Players, using Animation-Trees to manage Music Clips, doing transitions/intros/endings ... it's really awkward right now. I have not even found a native way to keep a piece of music playing when an animation that started it ends, because even when using a
PropertyTrack
to set anAudioPlayer
to be plying, Godot will be smart and treat it as anAudioPlaybackTrack
.I may be severely overlooking something, but I also have not found great answers in online resources.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
I propose several small updates to the
AnimationPlayer
andAnimationTree
to accommodate adaptive Music without breaking a sweat.The smallest change, that would make adaptive Music possible:
Some further worthwhile, but larger and arguably optional changes:
AnimationPlayer
andAnimationTree
)AnimationTreeStateMashines
soThe changes to the tree might also require the Tree to have a metronome, but I am not quite sure on this. Setting a BPM/beats when recording an Audio track and selecting the timestamp of the first beat may also be a good idea if beat-based animations were to become a thing.
I suspect there may be some remaining tweaks I currently don't see, but I currently can't think of much else I'd need.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Will work on this.
If this enhancement will not be used often, can it be worked around with a few lines of script?
Bodgy Music Players are pretty easy to script, but it gets really difficult really fast.
Is there a reason why this should be core and not an add-on in the asset library?
Frankly this is already trying to be addressed here and I think this is the much simpler Solution.
Beta Was this translation helpful? Give feedback.
All reactions