Simplicity
Godot Engine, known for its emphasis on simplicity, has established GDScript as its main scripting language. This decision by Godot’s leadership has drawn attention and sparked discussions, including controversial ones.
Juan Linietsky, lead developer of Godot, has provided various “insights” into GDScript choice, although the underlying reasons may not be immediately apparent, even up to this day.
Motivations
Juan reminisces about his teenage years, fondly recalling the simplicity and user-friendly nature of environments and programming languages like Turbo Pascal. In fact, Juan credits Borland Pascal as a significant source of inspiration1:
BTW Borland Pascal (Image above) has been a great inspiration for me. The fact that this is an all-in-one environment that includes built-in documentation and reference made me understand how important it was to do the same with Godot.
Borland, in its quest to maintain dominance in the Windows development market, faced fierce competition from Microsoft’s Visual Basic. In light of this historical fact, it is also relevant to mention Blitz3D, with its Blitz BASIC, as a potential source of inspiration for Juan, given its comprehensive all-in-one environment with a similar focus on simplicity.
Now, let me assure you, the fact that Turbo Pascal and Blitz3D share a blue color scheme, just like the iconic Blue Robot of Godot Engine, is purely coincidental! 🙃
Competition
Despite a subset of the Godot community expressing a desire to embrace production-ready languages like C# and some fervent Godot enthusiasts yearning to dethrone Unity, we must take into account Juan’s perspective on the matter2:
Friendly reminder that Godot does not compete with Unity or Unreal. It’s not a commercial product and it does not take part of that market.
It should be noted that as the lead developer of Godot, Juan’s words carry the weight of an official project statement, even though he frequently draws comparisons to Unity and Unreal. Comparing Unity to Godot creates a false dilemma; users with extensive Unity experience clearly recognize the significant discrepancies between the two:
So, with which game engine does Godot truly aim to compete? By examining the realm of visual scripting languages, we can uncover valuable insights. Juan has grappled with various dilemmas regarding the incorporation of event sheets or visual programming paradigms in Godot3, [emphasis mine]:
… everyday I question myself whether something more akin to how Construct/Stencyl works would have been better, or whether it makes any sense at all to have VS because compared to other tools, Godot is just not as high level..
Even though Godot decided to remove VisualScript from Godot 4.0, there is still a possibility that Godot may favor an alternative approach, which somewhat narrows down the competition field4:
Judging from all the feedback from the recent days regarding to the Visual Script removal in Godot, I think one crucial aspect we failed to understand originally is that “Visual Script” means two entirely different things to two groups of users (let me know what you think)..
Juan suggests that the first group encompasses approaches similar to those employed by Unreal:
The first one is the one that used Unreal blueprints. This is the majority group, so we aimed for this one. The problem is that, for most users of it, they used it because they had no choice (other than C++) and GDScript ended up being a better alternative in Godot…
Let’s not forget that VisualScript was not abandoned solely due to a lack of maintenance; rather, its implementation was deemed unintuitive and subpar compared to other solutions.
Juan goes on to describe the second group, which revolves around the concept of event sheets—a paradigm he believes aligns better with Godot, [emphasis mine]:
The second group is the one that uses tools such as Construct, GDevelop, Game Maker, RPGMaker, etc. which are event sheet based and expose high level pre-made behaviors. This is a much smaller group and hence it ended up invisibilized in our original evaluation..
For potential users who don’t know programming, this approach makes more sense to have in Godot, the problem is that Godot is very game-neutral, so we never felt inclined to add something like this. The situation may be different, however, now that we have GDExtension..
From the perspective of simplicity, the engines mentioned by Juan above could be seen as competitors to Godot in one way or another. However, to underscore the perceived significance of GDScript for Godot, here are several quotes from Juan himself5:
GDScript is designed to be simple, so it can be learned over a weekend if you have experience with other languages. It also (according to the polls we did) served as the starting point in programming to many Godot users, given its simplicity.
GDScript is a great example of a tool that adapts to the job (rather than job adapting to the tool). The syntax is simple and straightforward, and the deep integration to Godot makes for a pleasant “glue free” experience that makes it difficult to go back to previous workflows…
The whole idea of GDScript being extremely easy to use and hack (not doing everything for you, but giving you a large amount of tiny building blocks) and having a synchronous data model between code and scenes, all was conceived for this sole purpose.
Hence, for those hopeful of Godot discarding GDScript in favor of a language like C#, I must disappoint you. GDScript will continue to serve as the primary scripting language for Godot.
While there are other notable aspects, such as the touted node-based architecture, the discussions outlined above dominate much of the narrative surrounding the simplicity of Godot Engine. However, let us now delve into some less apparent connections.
A relevant point of comparison lies in Roblox, a widely popular platform that utilizes Lua as its scripting language. Interestingly, Godot itself had previously utilized Lua:
The first scripting language was Squirrel, not GDScript (previously we used Lua for past games). pic.twitter.com/2LZsg4l7nW
— Juan Linietsky (@reduzio) May 25, 2019
Curiously enough, a game engine called The Mirror has emerged, akin to Roblox, built upon the foundation of Godot Engine6. The intriguing aspect of this connection lies in the fact that several contributors and maintainers of Godot, including Ariel, Godot’s co-founder, are also involved with The Mirror. What makes this connection fascinating is that Juan has previously spoken about Godot in relation to Roblox, in an invigorating manner7, [emphasis mine]:
I often get asked what I think about “easier to use” platforms like Roblox (and endless other metaversey or easy gamedev tools) mean for the future of Godot and more traditional game engines, and if they are meant to replace them..
Actually, I think the trend is entirely the opposite!
Thanks to these platforms, you can see way more people interested in game development, which eventually hits a wall and looks for more powerful and flexible technology to eventually make the jump and continue progressing!
So, to sum up, I think these technologies are the best that could ever have happened to the game industry.
This commitment to simplicity resonates strongly with the student market and has contributed to Godot’s popularity in game jams, as evidenced by Juan’s excitement8:
GMTK Game Jam weekend, Let’s wait for official numbers, but I can’t seriously believe this. Completely out of this world!
If The Mirror achieves the level of success enjoyed by Roblox, a multi-billion-dollar enterprise, it is undeniable that GDScript will continue to be a vital component of Godot’s future.
💡 We are going to cover the potential conflict of interest between Godot as a non-profit organization and commercial companies in the subsequent Companies vs FOSS section. It is recommended to continue reading the chapters in order, though.
Consequently, and considering the so-called fully user-driven approach constantly regurgitated by Juan Linietsky (see previous Waiting for Philosophy), the development trajectory of Godot may naturally align with the requirements of this Roblox-like platform, prioritizing features that cater to its specific needs rather than the broader community’s. While this alignment may result in a shift in Godot’s direction and purpose, potentially unsettling users and volunteers who previously perceived it as a direct equivalent to Unity, it is a situation that demands careful examination.
As the story unfolds, one thing is certain: Godot’s commitment to simplicity will persist, keeping GDScript at the core of its de facto approaches and deeply-ingrained motivations.
References
Juan Linietsky about BorlandPascal - Twitter.
Juan Linietsky on Event Sheets and Visual Scripting - Twitter.
Juan Linietsky about two groups of “Visual Script” - Twitter.
The Mirror - Godot Powered Commercial Game Engine - GameFromScratch, YouTube.