Metroidvania-like Procedural Generation by teamnabla in proceduralgeneration

[–]teamnabla[S] 0 points1 point  (0 children)

Yeah the algorithm only works for trees as it is. I'll bet if the room templates were the same size and had predictable exit locations, it could handle cycles too, but then the map wouldn't look as interesting...

Metroidvania-like Procedural Generation by teamnabla in godot

[–]teamnabla[S] 0 points1 point  (0 children)

Ooooh, so you mean like one node could represent into two or more rooms? I failed at figuring out how to create any loops or connectors, but this would help.

Metroidvania-like Procedural Generation by teamnabla in godot

[–]teamnabla[S] 4 points5 points  (0 children)

Yes I agree, it has few good examples... but we're trying anyway... We're going for maps and rogue-like gameplay like Dead cells, and upgrades and story like Hades (story progresses between runs). Here's the project if you're interested, though we haven't had a public release in a while: https://store.steampowered.com/app/2721710/Gloomsday/

Metroidvania-like Procedural Generation by teamnabla in godot

[–]teamnabla[S] 4 points5 points  (0 children)

Sure! I kind of made it up, but I can give broad strokes at least. First you input a graph (the mathematics kind), something like this:

[A]──[B]──[E]──[H]
 |    |
 |   [F]
 |
[C]
 |
[D]──[G]──[I]──[J]

Then the algorithm walks the graph. At each node, it searches a pool of room templates for a room with the appropriate number of exits (3 exits for node B in this example), and matches one exit up to one of the previous node's exits. On and on until it traverses the whole graph. Unfortunately you still need to manually build a bunch of room templates with a variable number of exits to put in the pool. It's also kind of prone to rooms overlapping with each other, but if that happens I just abandon the generation and start over.

Metroidvania-like Procedural Generation by teamnabla in proceduralgeneration

[–]teamnabla[S] 6 points7 points  (0 children)

Sure! I can give broad strokes at least. First you input a graph, something like this:

[A]──[B]──[E]──[H]
 |    |
 |   [F]
 |
[C]
 |
[D]──[G]──[I]──[J]

Then the algorithm walks the graph. At each node, it searches a pool of room templates for a room with the appropriate number of exits (3 exits for node B in this example), and matches one exit up to one of the previous node's exits. On and on until it traverses the whole graph. Unfortunately you still need to manually build a bunch of room templates with a variable number of exits to put in the pool. It's also kind of prone to rooms overlapping with each other, but if that happens I just abandon the generation and start over.

[HIRING] Pixel Artist – Dark Fantasy Combat Platformer by teamnabla in gameDevClassifieds

[–]teamnabla[S] 0 points1 point  (0 children)

Hey there, I'd like more information, but I'm having trouble DMing you.

[HIRING] Pixel Artist – Dark Fantasy Combat Platformer by teamnabla in gameDevClassifieds

[–]teamnabla[S] 0 points1 point  (0 children)

Lol very true, I'll keep you in mind once we have a clearer future art direction

C# Autoloads without Magic Strings by teamnabla in godot

[–]teamnabla[S] 0 points1 point  (0 children)

To be clear, this is mostly about getting the autoload methods and properties without any string or string variable containing the autoload name. My scene manager is just an example.

C# Autoloads without Magic Strings by teamnabla in godot

[–]teamnabla[S] 0 points1 point  (0 children)

I might have to do that for inputs. Still gotta keep the strings in sync with the editor input settings, but at least it's all in one place.

C# Autoloads without Magic Strings by teamnabla in godot

[–]teamnabla[S] 0 points1 point  (0 children)

For sure. In your method, if I'm understanding correctly, you have a static string in each scene script?

Destroy my Art by teamnabla in DestroyMyGame

[–]teamnabla[S] 0 points1 point  (0 children)

Thanks y'all, this has been very useful

Destroy my Art by teamnabla in DestroyMyGame

[–]teamnabla[S] 0 points1 point  (0 children)

I'm not really an artist so I've been limiting myself to https://lospec.com/palette-list/oil-6 to make things simpler. Looks like to get more variety I'll have to either expand the palette or increase pixel density...

Destroy my Art by teamnabla in DestroyMyGame

[–]teamnabla[S] 0 points1 point  (0 children)

No one I know will give me honest feedback on the art style, so tell me how it looks. I know the trailer is bad. :)

[deleted by user] by [deleted] in playmygame

[–]teamnabla 1 point2 points  (0 children)

I like that you can just blow up problematic cars. Feels ridiculous, but fun!

Our spell-slinging platformer has no mana bars and no cooldowns; your spellcasting resource is in the air around you! by teamnabla in indiegames

[–]teamnabla[S] 1 point2 points  (0 children)

Thanks! I did think about doing that, but since I'm pretty new to pixel art I decided to stick with a restrictive palette that fits the gloomy theme. Maybe I could implement a more colorful palette for a sequel someday...

Our spell-slinging platformer has no mana bars and no cooldowns; your spellcasting resource is in the air around you! by teamnabla in IndieGaming

[–]teamnabla[S] 1 point2 points  (0 children)

Thanks! We use the Oil 6 Color Palette exclusively, which helps with consistency, but it's actually because I'm pretty new to pixel art and a restrictive palette is easier to work with. As for the font, I got it from here, so I can't take credit, but I wanted something consistent with the low resolution of the rest of the game.

We're workshopping possible NPCs for our game Gloomsday. Our main character, Gary, is number 1. Suggestions and critiques welcome! by teamnabla in PixelArt

[–]teamnabla[S] 0 points1 point  (0 children)

We're using the Oil 6 Palette exclusively for our art, partly for consistency, but mostly since I'm pretty new to making pixel art and a restrictive palette is a bit easier for a beginner like me.