Simon Carter
bbbscarter.bsky.social
Simon Carter
@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.
May 28, 2025 at 7:14 PM
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.
May 25, 2025 at 10:29 PM
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).
May 25, 2025 at 8:29 PM
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.
May 25, 2025 at 8:26 PM
The 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.
May 25, 2025 at 8:21 PM
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).
May 25, 2025 at 8:16 PM
Thanks! Although, Godot 4.4 mostly solves this now.
May 25, 2025 at 4:00 PM
Will do!

I already had a pass at UberAudio, if that helps.

blog.simoncarter.me/blog/eventau...
Event Audio for Godot
A short post on a new package for Godot that makes it easier to trigger dynamic audio based on game events.
blog.simoncarter.me
May 25, 2025 at 3:53 PM
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.
May 24, 2025 at 9:57 PM
I made no such suggestion - merely expressed a regret that it doesn’t exist.
May 24, 2025 at 8:32 AM
I 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.
May 24, 2025 at 8:12 AM
That’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.
May 24, 2025 at 7:39 AM
Oh, many thanks - much appreciated!
May 4, 2025 at 6:43 AM
Yes, XAML is a whole other conversation. :)
December 9, 2024 at 4:37 PM
December 9, 2024 at 3:21 PM