Godotcaml for Godot 4.2
fizzixnerd.com
fizzixnerd.com
From looking through the TODOs here, I think the one thing that would stop me from playing with this soon is signal support. I can't quite tell how non-existent the signaling support is here: can I just Obj.magic (unsafe cast) stuff and get it to work, albeit without type safety? Signals in Godot are great and I'm already used to them not being type safe (they're just strings in Godot 3! Gross!) so that'd be tolerable.
Anyway, very cool stuff.
[1] I've been meaning to go back at try out C#, which might be more my taste. I held off partially because I don't know C# yet and partially because examples for C# in Godot seemed a little lacking when I last looked - but also because Godot 4 web exports were pretty busted for a while, which irritated me enough to make me use something else. I think there's been some progress here though!
Still no web export support for C# yet, it's reliant on upstream support in .NET Core which isn't quite there yet.
Thanks for the heads up! Guess it's not time for me to revisit Godot yet :(
Godot 3.x supports web exports for C#, due to the mono runtime being long available as a WASM target. But .NET Core still doesn't quite work there, there are experimental builds while using Blazor specifically, but for hosted runtime stuff (such as Godot) the support isn't there yet, despite MS promising it since .NET 6 it hasn't arrived yet.
I guess it is a price to pay for making the language relevant for game devs.
(I never got around to that point though, I usually start making games as libraries and then get nerd sniped into reading about game theory for the AI before I make them playable for humans.)
Using C# actually nets you more features, not less.
The idea of Godot is "extra hoops."
Does Java have one? What about Javascript?
I know a lot of people say GDScript is close to both Javascript and Python but it's not close enough for me personally. So if you want to use Python just use one of the Python game enignes (such as Panda3D, Pygame, Arcade, Ursina) instead. Javascript and Java also has a lot of good engines too so don't feel like you have to use Godot.
[0] https://github.com/Godot-Languages-Support/godot-lang-suppor...
There's a lot of unofficial bindings with godot's GDExtension interface. Looks like there are supposedly "production ready" bindings for JavaScript/typescript, lua, nim, and rust. I've been looking into using rust with godot though, and it looks like it only works with desktop apps, not web or mobile yet.
And then there's even more that are supposedly "almost production ready": closure, D, and haskell
In development but not production ready: f#, go, kotlin, python, Swift, wasm, zig
In 8 years I’ve never seen a successful Unity project despite them actually being taught Unity. The only “finished” game I’ve seen was for Robolox, but in general the students who chose to do pygame fared decently. I haven’t seen a Godot project, so I’m not sure how much help this is outside telling you that Unity is probably not as “easy” as you might think.
Big caveat if you want to do mobile dev Unity is still better, though hopefully as the work The Forge/Google did for the renderer this will be less true.
Unity's development outlook seems kind of bleak to me and it's lost all community goodwill, while Godot has more attention than ever; in 2-3 years it might be a tougher choice, but for now Unity's probably your shortest path to learning what you want to.
I also find Unity's business practices to be sketchy and I wouldn't personally trust any part of my projects to a company that has a history of rug-pulling (and then reluctantly walking back)
OOP experience in Ruby is very pleasant and I wish the language was used more.
Lua is simpler, is much, much easier to embed into your project and is much faster, especially with LuaJIT. It is the perfect fit for this task
Too much OO can hurt performance quite badly and while some form of OO is common in the game industry there is also more emphasis on keeping things simple. Ruby is a very nice language and not a bad choice for non-performance critical code but Lua is the default choice for game scripting for a reason.
And for the cases there Lua is too simple, well there is Python. Sure Ruby does a few things better but it doesn't really have a clear advantage over Python while also being less popular.
1. mRuby is trivial to embed.
2. S7 Scheme is also trivial to embed.
3. LuaJIT will not work on consoles (proprietary CPU architectures), and JIT isn’t supported on iOS or Android. You have to use vanilla Lua.
4. Lua has historically been the default because it was first to provide a nice embed story.
5. Lua as a language leaves a lot to be desired (Ron Gilbert really disliked using it within his games)
6. This gist post goes into details wrt the deficiencies of Lua [1]
7. Here are two GH repos with Roguelike Tutorial. One in Lua [2], the other in mRuby [3]. It’s worth comparing and contrasting.
8. If I want extremely performant code, then I drop down to C. For scripting level/game code. mRuby is plenty fast [4].
[1] https://gist.github.com/amirrajan/2c42315ffef311600ecb2d8dcf...
[2] https://github.com/Lycea/Rogue/tree/master/components
[3] https://github.com/kfischer-okarin/roguelike-tutorial-2021/t...
1. Its performance meant that it would never survive against Java/C# for AA/AAA games, not to speak of C++
2. Lack of libraries. Last time I tried no physics engine worked with Ruby 2.3, and ouch that made my game or many games impossible
3. No significant advantage over Python, especially given that for indie games Python had the popularity advantage, the numpy/numba/Pillow/easier to write high performance code advantage. Bitmap manipulation in Python using even numpy is much easier than whatever I can do in Ruby.
4. OOP is not actually that important especially for the market Ruby can break into. DragonRuby is in the right step, but look at pico8, love2d, or even Unity3D -- there is not a lot of inheritance going on. Simplicity is good.
Of course the above factors play into each other.
I'm sure a lot of people will say it's too slow, etc. but the truth is that great games come from a very wide range of tools and if Ruby fits your needs then you should use it.
As an aside I've been thinking lately that OOP isn't very well defined unlike FP. I think that's why there is a disagreement on what is OOP. Many think it's about inheritance because of Java while Alan Kay says it's about message passing as in Smalltalk. Whereas functional programming is just programming using pure functions. That simple, no confusion.
at[at]amirrajan[dot]net
That’s why I specifically said “with a stop-the-world GC”