Game
Battle Buggy Glitch

1 year ago

Devlog 2023.12 - Downgrading To Godot 3.5 (and other important updates)(Video)


https://youtu.be/b2EV29dcE24

So... it's been a while... again.

TL;DR;

I moved the project back to Godot 3.5 for good. Godot 4.0 and 4.1 have things that were not working for me that were breaking the game. But taking it back to 3.5 allowed me to go through every line of code and ensure that things would run much more smoothly compared to the time before I switched to Godot 4. Overhauled my approach to enemy design and also have started working on Menu systems and user-customizable options.

LONG VERSION

Regarding performance, Godot 4 is a huge step up from Godot 3.5. Not just for 2D but also for 3D games (I was messing around with it a lot).

However, I ran into a number of issues when it came to rendering and specifically rendering order. I had lost control over the control nodes (pun intended). For some reason, they weren't behaving as predictably as they should have been. Then there was the issue of viewports and display servers that I wasn't able to really wrap my head around that caused me to re-write some of my game's camera logic from scratch but I ended up just hitting a brick wall.

I tried out the 3D side of things and I didn't get the results I expected either. I make low poly psx style games and the shader for creating that well-known wobbly effect was just not working. Textures weren't loading correctly and I couldn't get any answers online.

Anyway, these were not "big issues" but they were things that were going to slow down progress especially if newer issues popped up for me. It seemed like I was not the only one in the community who ran into bugs that caused minor and major inconveniences.

[But shout out the Godot contributors. Godot is such a beast right now. The fact that it's free and open source is a blessing]

So I decided to roll back the changes, and by roll back I mean essentially re-code everything.

Why?

Well, I noticed such a significant performance difference when the game was in 4 vs. 3.5 (the first time). And despite 4 being naturally faster because of the improvement to gdscript, there were so many things I just didn't do efficiently that I wanted to re-write slowly and with more thought to performance.

Not just in code but also in post-processing and particles. These things are extra anyway and shouldn't sabotage the main gameplay experience.

Plus, I got the auto tile feature to work in Godot 3.5 after going through the docs themselves. It turns out the docs explain pretty clearly how to set them up. So far, all is well.

I also re-thought my strategy when it came to enemies and realized that I was not being smart about how I was designing them. Initially, I was wrestling with how to create the ideal object-oriented enemy template but turns out, that components are a neat way to make code reusable. So instead of inheriting entire classes, some enemies simply would have shared customizable components. I hope that makes sense.

So, like instead of taking care of how to damage an enemy and drop pickups in the main enemy class e.g. Enemy_.gd or something. You would instead add an AreaNode called EntityDamage and in its EntityDamage_.gd setup how damage is "administered". This one component could be placed on other enemies, npcs and of course the player.

Hope that made sense.

I introduced 2 status effects (for now): glitch and corruption. Glitch is about taking damage over time for a period of time, while corruption is about leaving you vulnerable (taking more damage, reduced movement speed) for a period of time.

I have now also begun working on menu systems. I'm just blocking it out but I felt like I needed a change. Been working on the in-game stuff and it was starting to drag me down. Plus, I have never really given players too many options in my previous projects so I want to give this a try. Like, give them the option to toggle v-sync or something 😁

Godot has a fantastic input manager, audio manager and project settings manager that are all accessible via code. If there is one thing I think Godot beats all other engines I have used is i'ts UI system and access to engine API (as long as you know how to navigate the jungle called the docs to get the info you want).

I swear, this makes it so ideal to even make regular non-game applications without stress.

Anyway, that's why there has been such a long silence. I'm kind of close to where I was in the last devlog all over again but with even more progress. And I think that progress will start to be a lot more noticeable from this point moving forward.

I would 7.5/10 per cent of the foundational components are done. That means, after this, it's just populating the game world.

After spending these many years on this one game alone, I am strongly rethinking my strategy to only develop data-driven games (roguelikes, RPGs etc)

Anyyy whooooo. Catch you next time.



0 comments

Loading...

Next up

Devlog 2023.6 - Enemies Part 1 and Weapon Mechanics

Devlog 2023.11 - Upgrading To Godot 4

Devlog 2023.8 - Stage Room "Enhancements" + Pickups Intro

we're back into track!

Forbidden Dark Devlog 2024.1

A little scene from Cyan, my horror RPG.

Devlog 2023.10 - Code Refactoring For Regular Stages / Boss Stages

What could this possibly be?

12% accuracy is my gamer move (It get's a little bloody, a warning just in case)

All of the lights