Oh,interesting, hadn’t seen the traits approach. That’s a fairly elegant solution.
I’m in C#-land, and I’m mostly rolling a Unity-like solution. But you still end up fighting your root node a bit.
@bbbscarter.bsky.social
Middle-aged game developer and coder. Currently with DeepMind. Formerly Bullfrog, Big Blue Box, Lionhead, No Man's Sky. Co-creator of Dungeon Keeper and Fable. Billionaire playboy. Pathological liar.
Oh,interesting, hadn’t seen the traits approach. That’s a fairly elegant solution.
I’m in C#-land, and I’m mostly rolling a Unity-like solution. But you still end up fighting your root node a bit.
Yup, that makes sense.
For me, ‘components’ are not much more opinionated than ‘nodes’.
It’s slightly tricky to roll your own component system in Godot because of inheritance - a root node usually needs to be a canonical type (Node3d/Rigidbody/etc), which makes adding an Entity API tricky.
And because this sort of thing is so common, people end up rolling their own solutions to implement this design pattern.
Which is fine! It’s just a bit more friction and a bit more ad-hoc (for me, at least).
Whereas in an engine with first class support for components, there’s a specific API for doing just those things - getting a component that’s on an entity by type; iterating over the components in an entity; broadcasting an event to all the components in an entity, etc.
25.05.2025 20:26 — 👍 1 🔁 0 💬 1 📌 0The main thing with a component system is to break an entity entirely into reusable modules - AI, collision, inventory, etc).
You can do that in Godot with nodes - but there’s no canonical way to get a component; communicate from one component to another; broadcast an event to components, etc.
Good question!
Before I answer, to clarify - I also like Godot, and I don’t want an ECS per se (an ECS adds various other elements as well as ‘components’, which I’m not considering here).
Thanks! Although, Godot 4.4 mostly solves this now.
25.05.2025 16:00 — 👍 1 🔁 0 💬 0 📌 0Will do!
I already had a pass at UberAudio, if that helps.
blog.simoncarter.me/blog/eventau...
I’m curious how people organise their ‘entity’ setups in Godot. Examples I’ve seen:
- Component-like. Generic root node, component nodes directly under, accessed via node path.
- Inheritance + module nodes. Root node is specific type, with members to assign sub module nodes.
- etc
#godot #gamedev
Indeed - it’s still messy in the editor, and if you try to use inheritance to smooth out the rough edges you can end up in a fight with Node2D/Node3D/Rigidbody.
But fundamentally you need an organising principle, or you end up with random node hierarchies with ad-hoc signal wiring.
I made no such suggestion - merely expressed a regret that it doesn’t exist.
24.05.2025 08:32 — 👍 0 🔁 0 💬 0 📌 0I should add, this isn’t ‘Unity Nostalgia Syndrome’. I’ve been using component systems for a long time - I wrote one for Fable 25 years ago - because it’s a flexible and low-opinion architecture.
24.05.2025 08:12 — 👍 2 🔁 0 💬 1 📌 0That’s not what I suggested - as I say, I appreciate its agnosticism. At the same time, this agnosticism has drawbacks.
A game engine shouldn’t be a hammer or a pickaxe, it should be a Swiss Army knife. Godot does this well, but lacks a bottle opener, so I keep opening my beer with a knife.
I very much like Godot and how architecturally agnostic and flexible it is - but I still find myself missing a first-class component-system.
Sure, you can emulate it using nodes, but a proper component system is more than just nodes-with-children, and filling those gaps is tricky.
#godot #gamedev
Oh, many thanks - much appreciated!
04.05.2025 06:43 — 👍 1 🔁 0 💬 0 📌 0Watching Tenet over the weekend has me contemplating if every Christopher Nolan film is secretly a high budget episode of Red Dwarf with all the humour removed and padded out by 2 hours.
www.youtube.com/watch?v=EahH...
Yes, XAML is a whole other conversation. :)
09.12.2024 16:36 — 👍 0 🔁 0 💬 0 📌 0Padme and Anakin meme. Padme laments having to learn another programming paradigm just to add buttons to app.
09.12.2024 15:21 — 👍 1 🔁 0 💬 1 📌 0Looking into creating a small desktop GUI tool using something modern.
Most tutorials assume you’re creating a business web app. “Obviously you want to use MVC/MVVM/Reactive/DI/Providers/Notifiers/State management.”
No, I just want to hook up a few buttons to some data structures, thanks.
Excited to reveal Genie 2, our most capable foundation world model that, given a single prompt image, can generate an endless variety of action-controllable, playable 3D worlds. Fantastic cross-team effort by the Open-Endedness Team and many other teams at Google DeepMind! 🧞
04.12.2024 16:13 — 👍 94 🔁 18 💬 3 📌 3Oh wow - just stumbled across sokol as an SDL/gpu alternative. It’s very impressive!
github.com/floooh/sokol
#gamdev
A short post on getting Emacs/Evil to work consistently with snake_case and camelCase, which was harder than I expected.
blog.simoncarter.me/blog/emacs-e...
#emacs #evil
Hurrah! Godot is getting in runtime game editing support in 4.4.
godotengine.org/article/dev-...
Looking forward to not having to support my hacked together workaround - though it still works if you need a solution in the meantime:
github.com/bbbscarter/G...
#godotengine #godot