I’ve released a game a few months ago for which I’m about to put out an update.
However, some of the tween effects that were working previously and now don’t, even though my updates don’t touch or come close to the events with the tween actions.
One is the opacity tween. It’s supposed to fade an object to transparent. This works on all but 1 object, some of the time. I check in the debug inspector, and the opacity of the object is 254, while the opacity tween has a value of 0. So the tween hasn’t updated the opacity.
The second is a positional tween which doesn’t work if there’s a pause of the current scene and another scene is started before returning to the original scene.
In both cases I have not been able to identify the exact conditions to replicate this issue.
But I do know I have an effect that worked. It no longer does. I haven’t changed the related events/code. But GDevelop engine has changed.
So my conclusion is that it’s due to a bug in GDevelop.
And from other posts in this forum, developers are finding their games have bugs after GDevelop updates. And even the GDvelop “What’s new?” tab has versions to warning to avoid it because of issues.
So I ask, could the GDevelop developers please put a thorough regression test in place, and run each GDevelop release candidate through this to ensure all previous feature are still working as they should? I understand this will take a bit of time to cover all the use cases, but it will lead to a more stable product and with that lift our confidence in GDevelop.
It seems that tweens now use seconds and not ms. You’ll notice that small change if you make a new tween action. All my tweens are flagged as depreciated and need replacing. I don’t think there’s a quicker way of doing it.
Except my old tweens don’t come up flagged as deprecated.
But I changed one of the positional tweens to the new version (with seconds), and it worked in the situation that the old one didn’t. Unexpected, but very pleasing. I still have no idea why it previously worked some times and not others. But thanks for the reminder and making me check it out. It’s saved a fair bit of hair pulling.
If there are any GDevelop devs reading this, please keep things backwards compatible and functioning. Currently it’s hard to search for text over a large number of external events, and I’ve seen some projects with 100+ external events. Having to trawl through those to fix a breaking change would be utterly demoralising.
GDevelop is not released without any quality checks. There is a lot of automatic test that runs on every change done to the engine and we do manual check on templates and test projects too. If there is a bit more hot-fixes lately (and most of them were actually fixed before the official release), it’s because there is a lot of work being done to improve existing features.
The tween behavior was redone from scratch to avoid using a library that was making difficult to write automatic tests. Because of this, there wasn’t any automatic tests. So, without existing tests it was very difficult to ensure a full compatibility.
Since the new behavior implementation, all actions, conditions and expressions are tested automatically to prevent future regression. You can find the tests here:
The old implementation had strange behaviors that were fixed (and may be seen as regressions):
The “Has finished” action now becomes true as soon as the targeted value is reached instead of one frame later.
2 camera tweens with the same name can no longer play at the same time. The 2nd one now replaces the 1st one.