Devlog 4: Cutscenes & Godot’s Node System

Hello and welcome to my devlog. I am currently working on my project The Last Song. The Last Song is a 2D Metroidvania with rhythm puzzle elements and a focus on story.

So what happened this week? Quite a lot for my standards I would say.

First a small recap of last week’s topics. I was writing that I started this new habit where I would work 1 hour a day. That worked pretty well most of the time I managed to work at least 1 hour a day which is great but I had a day or two where my brain was nooo that’s not enough! Also, the new thing with my phone works very well. I feel way less stressed about notifications because I don’t hear them ๐Ÿ˜†, so that’s that.

On we go to new topics. What happened this week?

Cutscenes

I worked mostly on cutscenes this week. I refined the cutscene system I have. The way my system works is that I have a cutscene node and actions in it.

Cutscene Structure

The actions can be played serial or parallel. So stuff can either happen at the same time or after each other. For more complex stuff I started using the AnimationCutsceneAction. It is an AnimationPlayer that plays an animation and proceeds afterward.

Complex Cutscene Animation

This works pretty well the only problem I have right now is that the preview of the animation in the editor is not working for every object. E.g. The player animations are not updated in the editor. I need to start the game to see what it looks like. This is a bit tedious since it makes synchronizing sounds with the animation a bit of a fiddling task. I will improve on that system in the future as soon as I have to create a lot of cutscenes. But for now, I am pretty happy with it. It gets the job done.

Cutscene in Action

That’s it for the cutscene system, what else happened?

Godot’s Node System

This is getting a bit technical now but bear with me ok? I think I slowly get how Godots Node system works or better said how I should design my nodes to utilize that system. I am already working with Godot for some time but lately, I figured out a new way to design my nodes.

So a brief introduction to Godots node system. A node is basically a game object.

Godot’s built in Nodes

But unlike in e.g. Unity where you can add components to a game object. Nodes in Godot are closed on themselves. To create a complex object you add other nodes as children to your node.

My Player Node

You may ask ok yeah I think I get it but what’s your point? Well, now it gets even more technical sorry for that ๐Ÿ™ƒ. When making nodes you want them to be as reusable as possible. Here is what I learned.

I used to create very complex nodes e.g. my player. The code is a nightmare to look at and the node is not really extendible. If I want to add a new ability to the player. I have to get into the player code and change the code there. I might have to touch completely unrelated stuff.

What did I change?

What I started to do lately is that I create nodes that check in their children for other nodes. Those children usually just do one simple thing. E.g. The Shockwave or Screen Shake are separate nodes that get called from other nodes. This makes those effects very reusable. I can use the shockwave now in a cutscene or when the player activates a level element. It’s the same node just the node that is using it is a different one.

Reusable Nodes in Cutscene Action

Those principles I talked about are basic software development theory and I’ve already been using it on other projects. But till now I wasn’t sure how to make use of it with Godot. I think it started to click the moment when I put on the game designer/ level designer hat. A designer doesn’t want to write code every 5 minutes for a small thing. They just want to reuse things that are already there. And I think this changed the way I create my nodes.

Sorry for making this devlog more of a software theory talk. But none of my friends want to listen to me talking about that stuff so you have to do it instead ๐Ÿค—.

Thanks for reading this devlog it means a lot to me. Have a nice weekend and see ya next week!


Posted

in

by

Comments

2 responses to “Devlog 4: Cutscenes & Godot’s Node System”

  1. CookieBadger Avatar
    CookieBadger

    Don’t apologize for technicalities, we appreciate it ๐Ÿ™‚

Leave a Reply

Your email address will not be published. Required fields are marked *