I recently started learning Python. A lot of people say that it is a good first language to learn. The truth is that in the past I have used visual programming tools such as Clickteam Fusion and Construct 2. You still do programming in them - you execute functions, deal with gotchas that come from programming, write expressions and learn some syntax. But they aid you along the way - offering an easily accessible list of conditions and actions you can use. Behaviours and types of objects you can attach - each brining ready functions to use in your game. All paired with a nice level editor.
But having used them for a while, I quickly found out the disadvantages:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrMdcbkjxGrM0aCXgnslTR4CrqxinOuoEMJYVV4nYNFpNAu9fxCjyXY_AobmSWXMwrjd5vPuc-yT1VK0q2sGJ4REa5eKwP9iwTl0dkJM37fGuP0PtSkc0ArKwfY8IkOzrvoI6eQOWGAamg/s1600/XYBOQqoE9Wezi-fYIbxzy36heZH1IVqsep2ovBeI5_k.png)
Functions in it are called 'fastloops' and you can not pass any arguments or return a value. You can not nest conditions in any way. You do a lot of copy and paste of conditions and actions. It is designed from the ground up to be good at copy and pasting, but not good at any instancing.
The level editor can not give unique values to different instances of an active object. You can do it via code during runtime, but not in the level editor. As a result you do a lot of copy and paste of an object in order to create variations of it. when you change the logic of one copy, it only changes in that one copy. This gets even worse when you consider using it on different levels - called 'frames' in fusion. All of your logic is attached to rooms. If you change a piece of logic in one room, the same piece will not change in all the other rooms. So imagine coding your game's inventory and hud. Later on you find a bug, and you fix it in one frame, then manually copy and pasting the logic too all the 150 other frames.
Fusion has a global event sheet , but the issue with it is that it can not use any 'qualifiers' (the way they call tags). This as a result locks you out of the opportunity to use a piece of logic globally on objects with the same tag. So it doesnt solve the problem with instances of an enemy not having the ability to vary in variables.
Fusion's editor has some bizarre hardcoded logic into it. You can not create your own qualifiers, just use the ones that come with the engine. The animation editor does not let you erase,reorder or rename the first 5-6 animation clips. Some clips are hardcodedly marked to have one properties, others have a different set of properties.
Exporters are fusion's biggest weakness at the moment - this is where people who write plugins for the engine must rewrite their plugin for each exporter. As a result a lot of features are supported under one platform and not available on the other platforms. A thing as simple as loading a json file and parsing it is not available as a built in feature.
To give them some credit - at least you can compile native code to different platforms - if you have bought the (expensive - hidden cost) exporters.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhADYb955hRZyXg6RCUNE7heDRDsmi6ejjkUE1Hu22H0cLoNgzmLkmI0peOYpjBpBK6eAfN-RNHxAn5MN9LaCcLjBrzVsu0zv5QFInW0uKXXHwc6QXh5OzY_7r9EUSlPEw4BeY7H9QECfvu/s1600/logo.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUqLR_VzXiLAtF7L_blcYETvNMnzZeU4azQYtY2lTKzA7xf45ujIeZPijVkC4UREvC5VDmfvJOPcLn6pCBCLKiPGTjJ0LcQXUj84Zy3qXSOZIdCS3dZbNp6Uz3PLDDj6gsmuCEKCfkBPp_/s1600/6318500.png)
The engine has wonderful design, but it comes at some cost. You have to actually sit down and this time learn programming for real! No clicky visual stuff.
So I did and found out that gdscript is very similar to python. it can't have two iterators in FOR loops among other things, and some of the syntax and method names are different, but otherwise it's almost python.
Added that Blender, Inkscape and some of the other tools (Maya) that I love are written or use python for custom addons - it was an obvious choice for me to learn it. And someone from the Godot community had the perfect timing to point me to the Coursera courses!
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIKo5nNUb4odpBl169S2fABdew1tX5SlhELI4IRaTzQIAidp9ESGVWsoQ9cP9UWBrFnQhZsefIaHWpoNWPZ-TcfOiIEYJ66J-2-4u0O4JhD1qUYW4W0e77pkrmXiMXmbdximm9k9Nu5I5-/s200/12768368_10207927579003630_7086128728874176865_o.jpg)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoKwU6yyqSgWJaLqO3ZJIzMXtcHhOIugNSEO8s-lyEMpQzmwoHs_tW8Ox_CBE1964XNo9KbdWuhN5exTaMyDMcxGbu9m6H8kOzjN0Am6-zp50RKLrQFD7tYd66QjbUHiosMheKMHS5NH_1/s200/1933635_10208050276830999_707142496852805451_o.jpg)
No comments:
Post a Comment