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