starter kits and node composition

Recently, I was thinking about how complete beginners could discover Godot, and for what I’ve seen, it’s mostly starter templates for some genres, and of course tutorials. But for someone who just want to put a sprite and make it move, or for other pretty standard behaviors in video games, like a bullet moving straight forward or a rpg party member following another character, I couldn’t find anything like that which doesn’t require also a whole template.

When I tried GDevelop, I noticed its approach to set a preprogrammed default behavior to an actor. That was pretty straightforward and easy to understand for complete beginners. But it as also the advantage to not have to reinvent the wheel for a game genre, yet without forcing the developer to adopt a whole framework.
And I thought that Godot, with its ability to add children nodes to add features to a parent node, would be very capable to do something similar. Something like this scenario: add a sprite, add a default platform controller behavior node to the sprite, run the game and you have control of the sprite. Then move the behavior node to a kinematic body with a sprite and a collision shape, and suddenly you control that body with collision.
Just drag and drop a behavior node on an appropriate node and it suddenly has that standard behavior. Very straightforward and beginner friendly.

Sure, it hides the code from the developer and it only implements basic standard behaviors. But that’s the whole point to give something to start with, of course very biased but it “just works”. And it’s not the same idea as programming a character with tons of decorator nodes. The idea here is not to implement complex features, rather just drag n drop very common behaviors in video games, like GDevelop does.

So, I gave a try and made a prototype with 2 behaviors: one that is a topdown controller like a zelda game, and another is a behavior to follow an object in the same way a party member follows the player in a jrpg, using the snake algorithm. And the result was indeed as I thought very easy to use and it’s totally modular. You can simply use whatever behavior you want and not use the rest. With a bit of work, a whole library can be made, and I think that if it’s well documented, it could be very useful for complete beginners who don’t want to code too much, but also for prototyping where the dev don’t want to reimplement some common behaviors. My inspiration was the Phantom Camera plugin, which is also a ready to use node for a camera that works well out of the box.

So, I wondered if similar tools exist already. Also, I wonder what you think about that approach. You think it would be useful to have default basic behaviors that are added as decorators? Or do you rather use decorators only for things like health bar and additional information?

Godot does have template scripts, though I think it’s only these three

  1. CharacterBody: 2D/3D Basic Character controller (platformer)
  2. Node: has _ready and _process with pass
  3. Object: has extends {class}

It would be nice to add more templates like you describe for top-down control and some camera settings.

I do not think they will add such specific nodes, anything that is easy to do in GDScript won’t be added to the core engine. Maybe publish your work as a addon in the AssetLib?

Thanks for the answer. But I think there’s a misunderstanding.
What I suggest here is no code at all. It’s more about adding a ‘behavior’ node to a sprite or a kinematic body to add a feature to it, for instance control it as a player. The behavior node takes care of the scripting, thus the developer doesn’t need to care about it.

The idea is really to hide from the developer the scripting part that is most common in games, so they can more focus on more special scripting. It’s also a good way for beginners to build something without having to use a whole template. But the idea is not to implement complex behaviors through decorators. Someone did that already for 3D controllers, and it has the issue of making the tree very encumbered. My idea is more like adding just one or two decorators for adding a very standard behavior to the node. Exactly like what GDevelop does.

Let’s be clear, my idea is to offer tools to quickly get something. It’s not meant to give a sample project from which the developer will work with. With my idea, the tools, which are basically decorator nodes, can be added to any existing and new projects. In that way, it’s far less intrusive than a starter template.

I don’t know how to explain it clearly by text, so I made a small video that shows the prototype at work: (make sure to activate the captions for explanations)

Before I even think about converting the prototype into an actual asset, I wanted to ask here if:

  1. It doesn’t exist already somewhere in the asset store.
  2. People are really interested in such tools.

I have already so much to do, that I don’t want to reinvent the wheel if it’s already existing or if nobody cares.
Making a proper tool, fully documented and with samples, is a lot of work. I made a prototype because that’s the quick and easy part. And also, because I wondered how it would work.

1 Like

This is why more templates would be good. A behavior node I can’t edit, or have to work around does me no good if I want it to behave different. What if I want to change the jump behavior Node’s height, it’s double jumps, wall jumps, jump height after a wall jump but before double jumping?

It sounds good! I want control, and I know how frustrating it can be not having it, even for beginners. Most people on the help forum come with issues from merging tutorials, maybe that’s a positive for decorators :upside_down_face: as long as they are truely extensible.

I do believe making enough high quality decorators is a daunting task, based on the examples below. And you likely wouldn’t make any money from it in the godot eco-sphere.

As for already implemented things, I think the closest you’ll find for Godot so far would be the Block Coding. It’s still code, but the actions are simplified and they have some edited Charater controllers samples.

I recall Unity having a similar idea. This “Game Creator” plugin boasts a huge toolbox of components, I think that’s what a decorator plugin has to aim for. Rounding out as many edge cases as possible.

Tangentially C++'s standard library often lacks, so the boost library is a massive collection that more than doubles the stl’s uses. Every non-game C++ developer I know uses boost.