Reflecting on my departure from GDevelop after +10 years (v.3)

Prologue

First and foremost, I want to clarify that this is by no means an attack on the original team behind this software, which once held so much potential and brought joy to myself and many others. I am deeply grateful for the original work of @4ian and all the major contributors who dedicated their efforts to developing this software over the years.

I’ve been a loyal follower of GDevelop, dedicating much of my spare time to contributing examples and solutions. The GDevelop forum became a place I cherished, often visiting it more than my social media accounts over the past decade (my current account is a decade old, and even before creating it, I frequented the forum seeking solutions).

Through the years, I’ve learned extensively from fellow game developers and users, occasionally interacting briefly with the original creator of this game engine and its former team of contributors.

Despite my ability to program in traditional languages and use other entirely free code-based game engines (even in the game export process), I embraced GDevelop’s limitations at each stage of its development as challenges. I always aimed to elevate a commercial game bearing the name and reputation of this game creation software to the next level.

My programming style (because programming remains programming even without code) tends to be robust, and I often prefer devising my own solutions over using extensions and automated functions. In some cases, I’ve found my methods to be more efficient than those implemented by the software itself. This approach pushes the game engine to its limits and demonstrates its potential for creating remarkable things. However, over time, I’ve realized my solutions and examples can be overly complex for novice users. Consequently, over the past two years, I’ve streamlined the solutions I provide and recommended the use of existing extensions and simple solutions within the software.

I was among the first to subscribe to GDevelop when subscriptions were first introduced—not out of necessity, but because I genuinely wanted to support its development.

At one point, I was part of a group of six developers committed to adopting GDevelop professionally and creating our own commercial games through this software. We maintained contact through a WhatsApp group. Four of us (including myself) eventually abandoned our projects in GDevelop, but we always held a special fondness for this software.

Some years ago, I developed at least 60% of a video game I was immensely proud of and determined to invest time and money into for a commercial release. I even created a small demo and reached out to three modest distribution companies. One of them responded, expressing interest in providing a small grant ($785.00, to be exact—while not substantial, it was my first attempt at this endeavor) if I could develop certain mechanics further based on what I had already created. They would then assist in placing the game on mobile app stores and with its advertising.

This offer was a profoundly happy moment in my life, and I committed myself intensely to the project. However, GDevelop underwent a version change that rendered it completely incompatible with projects developed in the previous version. Reluctant to continue developing my commercial project in an unsupported engine version, and considering the time cost of manually migrating it to the new version made it impossible to meet the deadlines stipulated in the contract, I had to abandon the project and decline the offer.

I was angry for a brief period and distanced myself from the forums. Eventually, I came to understand that this change was entirely necessary for the advancement of the game engine I loved, prompting me to re-engage in the forums and contribute to the developer community once more. I recognized that the new version of the software offered significant improvements and enabled the development of even more impressive games. Over time, I came to appreciate this change despite the losses I incurred.

This is not the reason I have decided today to definitively part ways with GDevelop. I want to reiterate my deep gratitude for what this software was and represented during its time.


Revised Reasons Behind My Decision to Part Ways With This Game Engine


...

Some time ago, when I saw the implementation of Spine with GDevelop, I was very excited and bought the Spine license to revive my dream of developing a commercial video game that could elevate GDevelop’s name and reputation, expand its user base, and trasnforming my projects in something commercial.

I purchased the Spine license and worked intensely on character animations, completing at least 30% of the project. The game was intended to be an isometric beat-em-up with elements of both 2D and 3D (3D voxel-style buildings and structures to complement the 2D characters), and procedurally generated levels (perfectly feasible in GDevelop, given my experience with more complex setups, just needing a reliable game engine and time to integrate everything).

My intention this time was to develop a playable demo and launch a Kickstarter campaign (educating myself by consulting with indie game developers who have successfully run small crowdfunding campaigns to set realistic expectations for my project’s scope).

…and then came the penultimate update of GDevelop before this post was published (v.5.4.203)…

Suffice it to say, my programming style relies heavily on the ability to create variables on the fly without the need to declare them beforehand. This is literally a rule in my programming style.

As mentioned in the prologue, the first time a massive change in this engine directly affected one of my projects, I was angry at first, but soon I understood the necessity of such a change.

This time, I don’t even have the energy to be angry; I just feel frustrated, sad, and disappointed.

The first time this happened, the change was a complete overhaul of the complete engine and UI made during a major version change: a tangible improvement that necessitated a fundamental change in how GDevelop operated.

This second time, it wasn’t even handled with the respect it deserved: from the —regular to advance— users perspective it was a tweak in variable handling that just felt restrictive and unpolished, and broke the workflow dynamics and other aspects of a part of the ongoing major projects (despite the full retrocompatibility declarations)… all of this, made during a minor version update.

To be concise, this is a list of disagreements I’ve with the current GDevelop development focus at the date of the last time this post was updated:

  • The variable window should serve as a tool to review variables created on the fly, not as a mandatory declaration window (professional IDE developers have noted how outdated this approach is).

  • Variable management in nested arrays and structures is not clear and there seems to be some issues regarding variable types when using them. This is properly explained in this post from @dep.

  • Variable management inside groups is not near as dynamic as it uses to be, forcing users to manually declare variables for each member of a group. This was pinpointed in this post from @Ondaluce.

  • If nested variables are created dynamically through events, why should the root variable be declared differently? This inconsistency doesn’t aid new users in learning variable management.

  • I think the main focus of the GDevelop development team should be to improve some core aspects of memory management instead of tweaking aspects of the engine that were already working. As en example of this, recently @MagicBiscuit made impressive strides in improving performance for levels with many objects by implementing a complete smart object culling process for GDevelop in just a few days, yet the GDevelop development team paid it no attention whatsoever. You can read about it in this post.

I don’t know the internal details or history of GDevelop’s development teams. I sincerely hope time proves me wrong about what I consider some bad decissions and GDevelop rises to achieve the position I once hoped for it; but right now, I don’t feel this is a reliable engine to use for my main projects.

Furthermore, even if I were to resign myself to using the new variable system and attempt to create a game in GDevelop again, at the moment I would dread the fundamental possibility of such a critical aspect (or any other) changing again in any minor version update, forcing me to restart my projects repeatedly.

I will always stay informed about the development of GDevelop, even if I become a less active user of the forums for a big while; and I will not hesitate to contribute with examples and solutions in the ‘How to…’ section, or using the engine to make project mockups again, if I notice the variable system evolves into something I consider is proper for a good workflow.

I wish you all the best :slightly_smiling_face:

10 Likes

Hi,

Thanks for taking the time to write this down.
I’m sorry the variable change makes you feel like GDevelop is not stable for your usage. This was a way overdue change - which is done, like any change, with backward compatibility for games like we do for 5+ years.

I believe this is a net positive change and can be adopted progressively. There is a slow down in usage which will be addressed by a UX improvement. In exchange for this, we get all the good things described here:

In a few months, this will be all fine, all games adapted, and the UX streamlined. Giving us the best of both world, something understandable for beginners, fast and robust for huge projects made by professionals including in game studios.

Thanks for your trust and hoping to see you using GDevelop again in the future :slight_smile:

1 Like

This is a bit too excessive.

We can argue about the update here New unified variables and variables declaration in GDevelop 5.4
if we like it or not and why.

But noone is forcing you to stop your project bcs an update.
If you have all u need in the GD ver u are, which feature is forcing you to stop and update?

Just say… leave bcs that, it’s not the right choice for you imo.

I know ppl the are developing games in Unity 2010 without issue…

1 Like

I believe you missed the point
OP argument was not like “variable update bad so me say bye bye”

But more like he do not feel safe sacrificing years for developing game in engine in which he do not feel safe
Cause changes that are made to engine for him will break his comfort and workflow

And since variable update was not 1st time (as he mentioned) where such change happens
He feel unsafe and that is why he choose to leave

1 Like

Bye @erdo I hope that you can find a dream in game developing in the right game engine for you and I hope you make a good living off if the games you make

Shadowbrine

1 Like

I respect your opinion, but I think you missed the point of my words.

You’re right: nobody is forcing me to leave, but it’s not about that.

And to say people have been developing in Unity “without any problem,” it seems to me like ignoring the couple of times they have implemented such changes during the last decade that have ostracized a huge chunk of their user base. Specifically, the most recent time that happened, which literally provoked a massive exodus of serious indie projects to other engines… and they panicked.

I don’t wish that for GDevelop at all.

1 Like

this is what i don’t understand…
if he developed his game in whatever gdev ver until now, what’s the problem, why he can’t keep goin?
it’s not that you can change a game system in a day…

anyway sry i just posted befor earing your post…
whish you best luck for anything

To all users agreeing or not with my opinion:

I’ve clearly expressed my points, and I’ll not engage in further discussion about my differences with the current development focus because that was not the intitial intention of my post.

Thanks to the creator of this engine for taking the time to respond my post, and thanks for letting me express my opinion.

I understand it’s not easy to fulfill the expectations of an entire diverse user base. In fact, it’s impossible.

I recognize the potential in the idea behind what the development team is doing with the new variable system, even if I don’t agree with the way it’s being implemented… and that’s all I’ve to say right now.

May the force be with you all.

1 Like

I’ll just finish (and then stop answering because there is already the thread I mentioned and because erdo has already told what he meant) by adding that I feel the new variables update has been… massively overblown in the head of most users.

This is partially because we should have communicated earlier and a solution to quickly declare a variable added sooner (still working on that).

So people panicked. I’ve read things like “worst update” (come on! This is not the worst), “we’re having freedom removed” (come on)…

In a few months, everyone will be happy that we did this work. It was way overdue technical speaking. For any professional user, the variable system was a real shame… And we did fix it without breaking any game. We’re now ready for 5 years with this and a flexibility for extension that is unmatched + local variables.

In the worst case, this can just encourage users to use a structure to be able to manipulate arbitrary children variable (much like an object/map/dictionary/structure in all programming languages).


Sometimes it’s a bit hard because we’re doing things that are massively way more complex. We introduced 3D, real time multiplayer, leaderboard, player accounts, asset store, custom behaviors in extensions, custom objects, in app tutorials, iOS builds, analytics, feedbacks from players… Most of this open-source or super cheap compared to anything else in the industry. And we’re not done yet! We have tons of things to do to make GDevelop way faster and one level above any game engine. It’s so much more than that because of unique choices, technical or not. :slight_smile:

I understand you have other reasons to leave and again thanks for writing your feelings and the reasons behind this choice.
We’ll try to communicate better and show that GDevelop will be going miles beyond a traditional game engine.

5 Likes

Imagine this
If you work in shop i come to your shop everyday
It means i like your shop or your shop is close to whatever route i take everyday
If you go like one day
Sorry but you need to wear transparent bag if you want to walk in with stuff you bought in other shop
So there is no confusion at register and we do not suspect you that you did hide something in your bag
Ok no problem
After some time you change policy that i need to have exact amount of money and not like when i need to pay 124,55 give you 150 and expect change
I need to have exact 124,55
Well ok harsh but whatever
Some more time passed
Now you expect each customer to watch 15 sec ad before they can enter your store

And you noticed i just one day stopped visiting your shop
Would you assume that 15 sec ad was the cause of it?
Or maybe you did change rules so many times that i did not felt safe enough to do bussines with you anymore?

Above story is for you to understand i do not question your policy
I refuse to believe you introduced these changes to harm me as customer
BUT that i do not care to sit and wait until you make some change i will not be able to swallow
Or introduce even more changes that will affect the way i like to do shopping in a negative way

You are not stable option to me
And that opinion was not generated by ONE single change but by looking how many changes and what type of changes you introduced already

So i now can extrapolate that you will introduce even more changes in the future that will break the way i like do my shopping

That is what OP meant more or less
It is not about variables update
But the way he was always adapting to a change
Which in one way or another always broke his workflow more or less
And simply he do not want adapt more yet he strongly believes if he stay he will need to swallow stuff he do not want to swallow
That is why he is leaving

@erdo Only you can know what’s best for you, and I wish you all the best in your game dev journey!

1 Like

Regardless of what I think of the new variable system, I also have >15 projects and was affected by changes. But a guarantee that nothing can change for over 10 years would be sad, it prevents many improvements. It’s like everywhere, other engines, browsers, OS, 3D tools, CMS,… That’s why there are LTS versions. And it absolutely happens that changes are so big that the project has to be completed with the previous version or require some adjustments if you want the new features. Even other noCode engines with an active development will not be able to promise for years to only do things he wants.
No supermarket guarantees the same product range in the same place forever and now requires things like digital payment methods and returning empty bottles.

For a long time it was uncertain how long GD would continue to receive regular and major updates, which is normal for an open source project. Until a while ago, 4ian had another full-time job, there was no registered company, no paid developers… Today it is much more solid and secure than ever before.

According to this logic, GD5 should never have existed and we should be using GD4 with all its limitations. And it wasn’t a small change, it made all projects and some features 100% incompatible.

You confuse 2 different things
Changes that happens to every piece of software we use
And how these changes are made

Let’s use your example with supermarket
If you go to one single supermarket for 10 years
And it is obvious they can’t supply same products range cause they can’t force ppl that make these products to manufacture them forever
And they can’t force them to always sell them for same price
It is logical over years price will change even the range will change
That is something no one can avoid and anticipate to how and which
But if for example each month market will re-arrange where each product is located so each month you need to learn market layout from 0
Then you get tired of it
If you go to that market each day to buy your favorite yogurt and one day its gone
You can’t avoid it a lot of factors could cause for it to not be in sale anymore
So you accept the fact something changed and keep visiting that market

But now let’s imagine 2 different scenarios
Scenario 1
Market announce that starting from next month it won’t be possible to pay with credit card anymore and you need to bring real money if you want to purchase something
And so they ask their customers how they would wish for it to be done
They ask customers for ideas how to handle this situation not harming any1 in the process
And imagine someone suggest installing ATM in front of market which can exchange your digital money into physical money

Versus

Scenario 2
Imagine they do not notify any1 they just one day make the change

That one change will not cause you to stop visiting this market

If over course of 10 years you will start to see pattern
That this market is more willing to go with scenario 2 where they just make change

Or maybe of it goes with scenario 1 where they warn you there is big change coming and what is your idea to make transition smooth and if possible beneficial to all customers

In both cases you have choice do you wanna stick to that market or no
But for some ppl markets that tend to go with Scenario 2 are no longer an option
Not because market changed
Everything changes
But because how change was introduced and how it affect you

So i hope now you understand
It is not about something changed i do not like it so i leave
Its about over many years there were so many changes that was not consulted with users
Harming some in the process where communication between dev team and community could make it better
Makes some users just not feel safe anymore not stable

I perfectly understand OP because exact same thing happened to me with game called warframe (and many other players)
Warframe devs did many changes to the game that for many after update either forced to waste days sometime weeks to adjust to new system
Or straight up take away something from us breaking our play style and we needed to change it to totally different play style

I just like many still loves warframe same as OP still loves gdevelop
We both are thankful for time we spent 2gether
Yet as 7+ years warframe player i do not play warframe from almost 4 years
Same as OP decide after 10 years he is leaving

We want changes we wan’t software we love to evolve
But not in this way
Where for us there are updates that break our workflow
There is no problem in adjusting
Natural thing no one can argue about it
We yet want to feel safe
That changes introduced will help us rather than make something worse for us

If we see such breaking changes were introduced many times in the past
Then it is only matter of time for us before we start to look for alternative quitting software we use

So again you confused two different things
And don’t get it as something wrong

Cause if i did not have that experience with warframe i just described
I would most likely have same exact arguments as you do
And just because i had that experience i can see OP meant something different from what you describe

Yeah newer versions often break games made on older versions, but you can just rollback the version until the project is done. It sucks but that’s what I’ve been doing.

1 Like