2022: A Retrospective
godotengine.org
godotengine.org
But after spending time making some games for fun and learning, I realised: 90% of making a game isn’t coding. The code is usually just glue, and you aren’t hiring software engineers at crazy tech salaries to do that. You’re empowering your game devs to do it.
(Of course there’s a lot of more complex coding in many games, and there’s bindings for other languages when you need that).
But dynamic languages are a big horror when it comes to bigger projects. Especially when things get "reworked" heavily the whole time (as not uncommon with especially games).
As you said, it's about empowering the devs, artists and designers, not about perfect code.
Note that I make toy games for myself. I can’t speak to games targeted for release.
And the result is that there is no other software category that ships so extremely buggy code.
The code quality of games is the lowest I've ever seen.
Dynamic scripting languages only add to this overall mess…
The other problem is: Building a proper language and runtime is a full time job already. Adding this as a "side project" to a game engine (which is a very complex piece of code by itself!) is a big error imho.
I hope we see soon some strongly typed static language with very good type inference and a nice, clean, and simple syntax in Godot.
Would be than nice if Godot would concentrate on the game engine (and the editor) instead of trying to invent a language on the side also, as Godot as such is really great! One of the nicest programs I've ever used. (Especially compared with the incredibly buggy and terribly "documented" shit show that Unity is).
That said I've only ever used C# in Godot. Hasn't let me down yet.
Bugs are evitable. That's just a question of money. But yes, for games the cost would be to high usually.
Also I don't think Haskell would help much. (And it would be unusable most likely, imho).
But proper abstractions and strong types can help a lot!
On the abstraction side Godot seems great. But the scripting language (even nice in isolation) is not a good idea, imho.
Refactorings in dynamic code-bases are almost not manageable without introducing bugs. (Especially as you don't have proper tooling support without static types).
C# as such isn't bad. But it's syntactically unpleasant. Way to much overhead for game logic "scripting tasks". Still I would use it instead of GDScript. One needs proper tooling support when writing code.
Let's see what else will come up in Godot. They have some interface layer for other languages (even not fully supported with alternative languages).
I however still prefer to use Love2D as I found the code first approach works well with how I like to code games. The cool thing with Love2D is that there are a lot of libraries that you can use that help you save time.
It's analogus to Django VS Flask where Django is Godot and Flask is Love2d where you have to hand pick libs you want to use.
Unity has a much larger community and will have much more in the way of intro tutorials, so I started there.
But regardless of the engine you choose, you'll probably spend the better part of a year building tiny games (like tic-tac-toe -> pong -> breakout -> Tetris -> etc) before you can execute on anything more complicated (like a 3d RTS).
That said I agree 100% with building tiny games in an iterative fashion to understand the engine you're using, or taking a very narrow "vertical slice" to help flush out where the technical or game mechanic issues will be.
There's a wealth of good engines out there today where you're building on in some cases literally decades worth of development that can accelerate a lot of the work involved in building a game(and there is a lot of work there).
If you are looking for a 3D tutorial, this one seems pretty good: https://www.godotrts.com/courses/rts-game-development-course... (but I haven't used it myself).