Plans for Garbage Editor and Other Things

Posted on
garbageeditor mapeditor design

First, the editor

I added some features as I needed them. Not sure what exactly has changed, but it does what I need it to do. The one major problem is that I’m not really sure how to architect things in Godot without making them sort of spaghetti. I should have made a signal manager (singleton with all the signals there), and use signals for all communication between nodes? I don’t really know how much I like that, but it seems like it’s the best choice there. Perhaps, I should write a blog post about how much I suck with each engine and pretend like it’s the engine/tool’s fault.

Anyway, then came the issue of performance. I just naively used unhandled input on a lot of nodes in the editor. My rectangle resize handles were always enabled and visible. That’s 4 per rectangle, as I start to build a level, adding rects - it just gets worse. In order to combat this, I just disabled the input and hid the resize handles on everything but the selected rect. The problem is that with the way I structured the code and with how Godot handles things, it doesn’t work too well. I didn’t think about this being an issue, which means that I didn’t consider having to fix it. So, with the way that Godot handles input (you can set it as handled and thus it’ll stop there) and how Godot iterates through children from newest to oldest, you get my issue with only being able to deselect all nodes that are newer than the one you just selected.

That actually seems pretty badly written, but it’s not too interesting so I won’t bother clarifying.

Moving Forward

Since I am typically lazy when it comes to refactoring or having to rewrite a lot of code that I’ve written before, I started to think of better solutions in case I need more power in the future. I thought about how Unity’s editor is actually not that bad when it comes to creating things. I can just create game objects that have code that will instantiate my objects in game. But, I’m not going to use unity just for the editor. That sounds like a massive amount of bloat. Xenko’s editor is actually really bad, so I won’t even consider using it. Then I wondered, why not just use actual Godot as the editor? Just make a tool to export scenes to a simpler format, then perhaps another tool to create easy access prefab brushes like the ones in Garbage Editor. I could even just use scenes as brushes. Seems like this would be way stronger, I’d have access to their polygon shape tools which would be great. I think I’ll get started on this when I start actually designing levels that require features that Garbage Editor wasn’t made for.

Other things

I suck at design

Lately I’ve been working on a different game. It’d be too embarrassing to talk about what it actually is at this point since I don’t have anything to show. Except, this project has really made me realize how bad I am at actually designing game things. Such as level design, enemies, boss fights, that kind of thing. I’d refer to them as assets, but assets are usually art / music things, not the meshing of gameplay mechanics.

I suck. It’s very difficult to come up with something fun even harder to make it fun and not trite. It has made me reflect about what I actually find to be fun. I don’t have a clear answer to that, hopefully I will later.

I think one of the main issues is that I’m not failing fast. I’m not just throwing together mechanics with the systems that I have and iterating on it to make it better. I’m trying to design something that will work once it’s realized in the game and I’m not sure that I will ever get anywhere taking this route. I should just go with something that sounds like it could be good, then go from there. Even if I end up scrapping it, I’m certain that I will learn something from it. In the end, I hope that every little thing left is deliberate.


Tl;dr - Garbage Editor was badly written. I should use Godot as a level editor instead of a program made with Godot. (What was I thinking?)

Tl;dr2 - I’m bad at design - I think I should attempt and fail instead of infinitely planning a slow fail.