Simon Carter's Avatar

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.

84 Followers  |  46 Following  |  22 Posts  |  Joined: 06.09.2024  |  1.8107

Latest posts by bbbscarter.bsky.social on Bluesky

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.

28.05.2025 19:14 — 👍 0    🔁 0    💬 0    📌 0

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.

25.05.2025 22:29 — 👍 1    🔁 0    💬 0    📌 0

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).

25.05.2025 20:29 — 👍 0    🔁 0    💬 1    📌 0

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    📌 0

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.

25.05.2025 20:21 — 👍 0    🔁 0    💬 1    📌 0

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).

25.05.2025 20:16 — 👍 0    🔁 0    💬 1    📌 0

Thanks! Although, Godot 4.4 mostly solves this now.

25.05.2025 16:00 — 👍 1    🔁 0    💬 0    📌 0
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.

Will do!

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

blog.simoncarter.me/blog/eventau...

25.05.2025 15:53 — 👍 1    🔁 0    💬 2    📌 0

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

25.05.2025 06:49 — 👍 5    🔁 2    💬 0    📌 0

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.

24.05.2025 21:57 — 👍 1    🔁 0    💬 2    📌 0

I made no such suggestion - merely expressed a regret that it doesn’t exist.

24.05.2025 08:32 — 👍 0    🔁 0    💬 0    📌 0

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.

24.05.2025 08:12 — 👍 2    🔁 0    💬 1    📌 0

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.

24.05.2025 07:39 — 👍 0    🔁 0    💬 1    📌 0

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

24.05.2025 06:11 — 👍 8    🔁 1    💬 3    📌 0

Oh, many thanks - much appreciated!

04.05.2025 06:43 — 👍 1    🔁 0    💬 0    📌 0
The Fight | Red Dwarf | BBC Studios
YouTube video by BBC Studios The Fight | Red Dwarf | BBC Studios

Watching 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...

13.01.2025 21:34 — 👍 2    🔁 0    💬 0    📌 0

Yes, XAML is a whole other conversation. :)

09.12.2024 16:36 — 👍 0    🔁 0    💬 0    📌 0
Padme and Anakin meme. Padme laments having to learn another programming paradigm just to add buttons to app.

Padme 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    📌 0

Looking 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.

09.12.2024 14:51 — 👍 2    🔁 0    💬 1    📌 0

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    📌 3
Preview
GitHub - floooh/sokol: minimal cross-platform standalone C headers minimal cross-platform standalone C headers. Contribute to floooh/sokol development by creating an account on GitHub.

Oh wow - just stumbled across sokol as an SDL/gpu alternative. It’s very impressive!

github.com/floooh/sokol

#gamdev

21.11.2024 22:45 — 👍 0    🔁 0    💬 0    📌 0
Emacs, snakes and camels How to get Emacs Evil to work consistently with snake_case, camelCase and PascalCase.

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

09.11.2024 16:27 — 👍 1    🔁 0    💬 0    📌 0
Dev snapshot: Godot 4.4 dev 4 After a short delay due to GodotCon, we are back with another exciting update.

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

09.11.2024 11:01 — 👍 3    🔁 1    💬 0    📌 0

@bbbscarter is following 19 prominent accounts