Godot Engine

Godot Engine

Godot needs more scripting language options
I've been trying to get into Godot for over 2 months now.

GDScript is seriously lacking, no, it's not just lacking it's actively limiting.

Maybe I've become too accustomed to C-like languages, but I swear not even Ruby and JavaScript gave me this many headaches ( well, maybe JS but for different reasons :) ).

The wiki page tries to make a case that "At that point, it became evident that a custom scripting language could more optimally make use of Godot’s particular architecture".

So are we supposed to believe Godot is built around making use of Python's unique features ? Looking through the source code makes it clear that's not true. At source level, Godot looks like it was once a pure C engine turned scriptable C++ engine before finally GDScript was bolted on.

Obviously I want to like the engine, it has almost all of the features that all the other popular engines have, and for free to boot. Any features I'm missing would be moderately difficult to add at worst (in fact I had begun work on a couple of them already).

But right now, at least for me, GDScript is a poor investment for anything beyond very basic games.

It just had to have a catch. All the engines do:
* either it's cray cray expensive (Stingray, Unity)
* or unweildy(Unreal)
* the source code is either a nightmare (CryEngine)
* or incredible but the license makes it useless (idTech)
* or it forces a niche or custom language on you (GameStudio3D, Uhro, Panda3D and yes Godot)

Please don't tell me Unity is free because it's not.
Unity is an engine with an unlimited trial period for personal use and 30 days for businesses. Unity realistically costs 150$/month/user and 225$/month/server and last I heard the price might increase starting mid 2016.

F@$^ dammit! At the end of the day it looks like C++ devs are stuck with an ever narrowing range of engines.

Sorry, I just needed to get that off my chest. :O
Legutóbb szerkesztette: eye776; 2016. márc. 26., 9:34
< >
111/11 megjegyzés mutatása
You haven't told us where GDscript is lacking, so this is merely a rant. Be constructive and tell us objectively. But then, if you're simply wanting C++ and nothing else will do, then that's all there is to it. I'm just a few weeks into Godot and really liking it so far, and trust me I'm not a script lover, I have over 22 years in C++, and in my case I'm happy to get away from the complexity of C++ for this kind of thing.

edited
Legutóbb szerkesztette: duke_meister; 2016. márc. 26., 15:02
duke_meister eredeti hozzászólása:
You haven't told us where GDscript is lacking, so this is merely a rant. Be constructive and tell us objectively. But then, if you're simply wanting C++ and nothing else will do, then that's all there is to it. I'm just a few weeks into Godot and really liking it so far, and trust me I'm not a script lover, I have over 22 years in C++, and in my case I'm happy to get away from the complexity of C++ for this kind of thing.

edited

Please excuse the tone but i'm simply very bitter about the whole affair. Godot was so promising at first and now it's like Blender 1.8 all over again.

Unlike you I only have ~11 years of C++, 6 of those profesionally and I have seen my fair share of bad C++ code, mostly caused by arbitrary deadlines and lack of coding discipline.
Noboy forces you to use all of C++'s features in a single project.

On the flip side I haven't seen any particular safety features in GDScript that prevent you from writing bad code though.

More to the point, in GDScript:
* Have to pay extra care indenting code instead of thinking about the code. I always indent my code, but not necessarily while writing it.
* No switch statement support. And NO, chained if statements are neither faster nor slower, unless they're poorly implemented.
* Arguments are not part of a function's signature so... you can't override functions:
In practice "function doFoo(a,b,c,d)" and "function doFoo(a,b)" will result in failure.
* No support for enums, all flags and return codes are "int" so you have to guess them. Many are undocumented for now.
* Cannot (properly) use an external code editor.
Godot's code editor is... passable but that's about it. That doesn't mean I want Godot to turn into Eclipse or VS. Let me use an external editor instead.

General issues:
* ALREADY have to learn a brand new engine, with its own terminology. On top of that you ALSO have to learn a new programming language at the same time.
* C++ support out of the box is a joke. It's basically useless you want to bind a new library or add new features to GDScript.

The devs praise GDScript as "fun", "easy" and "flexible" but it's not.

Frankly I don't get WHY the devs chose python's syntax to begin with.

As a goal for begginers, well... Python is touted as begginer friendly, but really isn't very begginer-friendly at all. Unless you consider not having "alloc & free" as friendly.

IF MY goal was to write a "friendly" engine I'd rather choose Pascal or Basic (you know actual educational laguages), maybe something Java-like to be more "modern" ?

Also Godot, unlike Blender was in its day (and kind of still is), is far from being the only kid on the block (just a few days ago another cross-platform "Unity-like" engine called Atomic just went MIT on GitHub) and the elitist attitude isn't exactly helping.

A bit more sarcasm from the docs:
"With time, having a built-in language has proven to be a huge advantage."
Yeah, I'm pretty sure Job Security really was a huge advantage.
Legutóbb szerkesztette: eye776; 2016. márc. 26., 19:43
mayday mayday.
Houston we have a troll.
Look your comments are true but I consider that if I choose to get into a new engine, I do so with open eyes (as far as possible).

Yes, forced indentation ala Python is kind of annoying to my C++/Java sensibilities, but I accept it and move on.

Reading the docs, it seems switch/case are reserved words and will be introduced at some stage.

Yes overloaded functions would be nice but not a deal breaker to me.

Enums, well.. until recently they were fairly useless in C++ anyway.

Yeah the editor has serious limitations, no doubt. Some of them due to the dynamic typing of GDScript.

There are lots of areas to be improved upon, but it's still a work in progress. But solid enough that I'm willing to give it a really good go.

Pascal or BASIC.. no thanks. I actually do think that GDScript is pretty beginner friendly.

I guess I'm saying that you might simply have to pass over Godot due to it not being to your liking. As you say, it's not the only kid on the block. Having said that I believe you can use the engine in C++ bypassing GDScript (not just in plugins) but I haven't looked into it.
ni eredeti hozzászólása:
mayday mayday.
Houston we have a troll.

I'm sorry that troll culture has become so advanced that an involved reply ends up accused of trolling. Yes, in anger I made a couple of jokes that I probably shouldn't have, and I'm sorry for those.


@duke_meister:
Look, I'm not saying GDScript is necessarily THE WORST dealbreaker ever.
I did only use Godot for about 2 months, and even then only in an on-and-off fashion.
Maybe if I spent a couple of weeks of my free time PROPERLY involved with it I would get better.

Telling me I might have to pass over Godot is simply a polite way to say "if you don't like it leave" which is what I meant when I talked about elitism. Again that's exactly the tune blender devs & fans sang to a lot of people for almost 5 years (2007 - 2012).

I'm not expecting free bugfixes and features, but right now we have nothing but a dump of source code on github. It would take one ~ 2 weeks of full time work just to get a grasp on the whole architecture behind the engine to start working on features from it in C++.

BTW I wouldn't be here "trolling" if I though Godot was a poor engine with no prospects for the future.

Here's a real, fixable, issue this time. Importing 3D scenes is still pretty rough.
Say you have 4 files "model.dae", "idle_anim.dae", "run_anim.dae", "jump_anim.dae".
Right now you can only import a whole dae file as a scene and it's a pain to use animations from different files for the same character.
You also cannot split one large animation track into several smaller ones.
I may be wrong about the above but there is no documentation on it.

Since I'm really not welcome here I'll stop posting about this and be on my way.
Legutóbb szerkesztette: eye776; 2016. márc. 27., 3:57
You should be able to use an external code editor. Is there a specific issue that prevents you from doing so?
Also I don't understand why you consider that "C++ support out of the box is a joke".
Zeru eredeti hozzászólása:
You should be able to use an external code editor. Is there a specific issue that prevents you from doing so?
Also I don't understand why you consider that "C++ support out of the box is a joke".

Obviously you can edit the scripts outside of Godot. But an external editor would simply view the script as a plain text file. No syntax highlighting, no shortcuts.
Granted in some editors, like Notepad++ you can set the ".gd" extension to be parsed as Python and it mostly works (altough obviously there's no autocomple anymore).

C++ support seems secondary at best. It looks to me like the big push is to bind & expose everything to the scripting engine. And while for simple, modular features (a new integrator, some fancy matrix trasforms) I guess it works ok, I don't how well it fares for more complex modules.

Anyway I'm sorry for stirring all of this up.

At the end of the day it seems everyone using Godot has pretty much went with it - I mean there's some 400 github repos if you just search for "langauge:GDScript"; so maybe I'm making much ado about nothing and it's all in my head.

I'll try some more to see if I can get things to click for me but hey, if they don't, no biggie, I'll just move on to the next engine and call it a day. Worst case, I go back to engines like Irrlicht & Ogre.
Legutóbb szerkesztette: eye776; 2016. márc. 27., 8:55
Akien  [Fejlesztő] 2016. márc. 29., 13:25 
Edit: Sorry if my tone sounds a bit pedantic, I've had a long day, so take it with a bit of salt ;) Don't mind the "developer" mention, I'm just another community member who happens to help manage the Steam version, but I'm not the one who designed GDScript - I just happen to use it, also use C++ and various other languages and have fun using all of them. What I'm mostly interested about here is not everyone's preferences for this or that language, but more if there are really limitations in GDScript that would have to be taken care of.

------

You just seem to love C/C++ and hate scripting languages, so addressing "Godot needs more scripting language options" wouldn't really improve anything in your case.

"Godot *could benefit* from more scripting language options" would be more pertinent, but IMO mostly from a marketing point of view. Tons of users with little programming experience learned some C# or JavaScript and would like to use it in Godot, because that's what they're familiar with. Doesn't mean that it would make Godot development more efficient, but indeed it might appeal to the masses.

Now, most of the requirements you listed above are pretty simple to implement (switch cases, enums), and if they haven't been yet it's just that noone has found it important enough to work on it. With 11 years of C++ experience, feel free to have a go at it, we gladly welcome pull requests.

Note also that GDScript is not Python, it just takes its inspirations from it. Try some googling, you'll find thousands of topics on "why Python is great vs. why Python sucks", we don't need to start one more here through the proxy of GDScript. If you don't like indentation-based blocks, well... so be it. Tweak GDScript locally to add support for brackets and remove the indentation-based blocks, or add bindings to <insert your own language here>. Or just use C++ and have all the features that you like usally :)
Legutóbb szerkesztette: Akien; 2016. márc. 29., 13:41
@Akien: I've already posted in the other topic as well.
I'm sorry, and maybe it would have been for the best had I kept my complaints to myself.
In the meantime I've decided to learn a bit more about the engine - I've even submitted something for the itch.io gamejam.

I'm not hammering on Godot per se: I mean it helped me finish a full prototype in about 8 hours and that's with me sucking at GDScript.

I'll tinker and maybe extend/modify Godot in silence, for my own use, at least for now.
If I manage to come up with something useful for the community as well, great, if not, no biggie.

Again sorry for causing a ruckus here, and sorry for making you or anyone else mad. That was not my intention.

PS: I did not mention my "years of C++ experience" to brag, it was in response to @duke_meister. Only 6 of those 11 were actually spent working profesionally. The other 4 were hobby projects in HS / college.
Legutóbb szerkesztette: eye776; 2016. márc. 30., 19:29
Akien  [Fejlesztő] 2016. márc. 31., 11:47 
Well I don't think you made anybody mad, we probably just got a bit too emotive ;)

Anyway as I said, part of your issues about GDScript could actually be fixed, e.g.:
- request for switch statement support: https://github.com/godotengine/godot/issues/1107
- suggestions for enum implementation: https://github.com/godotengine/godot/issues/2966

The main point is just that GDScript's syntax should stay consistent, so up to now we're trying to mimic the way Python works, though there are already some important differences (or support for things which are familiar to both Python and C++ developers, e.g. both "and" and "&&" are supported and work the same).

Looking forward to trying your submission on the game jam! :)
+1 for this thread staying civil, atypical of steam discussions lol
< >
111/11 megjegyzés mutatása
Laponként: 1530 50

Közzétéve: 2016. márc. 26., 9:32
Hozzászólások: 11