DegeNerative Dungeon by A.Bond

[raw]
made by A.Bond for Ludum Dare 55 (JAM)

You are a cursed dwarf. You curse summons a piece of a parallel universe near you every few seconds while also killing everything (including you) around.

Try to survive as long as you can while escaping your curse and kill as much evil spirits as possible.

Controls: - WASD - move - Space - swing the axe

Ratings

Overall 1159th 2.816⭐ 21🧑‍⚖️
Fun 1187th 2.447⭐ 21🧑‍⚖️
Innovation 907th 3⭐ 20🧑‍⚖️
Theme 786th 3.421⭐ 21🧑‍⚖️
Humor 852th 2.556⭐ 20🧑‍⚖️
Mood 1107th 2.789⭐ 21🧑‍⚖️
Given 22🗳️ 8🗨️

Feedback

LightningST
15. Apr 2024 · 04:21 UTC
Unclear on what to do? Also it has some lag spikes whenever score is about to appear
🎤 A.Bond
15. Apr 2024 · 10:36 UTC
@lightningst

> Unclear on what to do? Also it has some lag spikes whenever score is about to appear

Hi. I've added some description, so it may be clearer now.

Did you play a web version or do lags happen in native version?
I have noticed some in web export, but I'm not yet sure, what's the problem. Native windows version seems to work fine.
fumybulb
16. Apr 2024 · 09:26 UTC
Procedural dungeon generation is very cool :thumbsup:

I also like the aesthetics of the environment.

It would be tempting to explore the world deeper and longer.
skitefall
17. Apr 2024 · 08:48 UTC
Looks very crisp and clean. It crashed hard a lot of time when I hit something though.
Flaterectomy
17. Apr 2024 · 08:57 UTC
Playing the web client I run into regular lag spikes. Character movement is fast and almost slippery, causing me to easily overshoot where I want to go and hit a monster or a spike trap--fair, learning to deal with movement can be a fine obstacle to overcome. However, it takes 20 seconds to load a new level, and combined with the lag spikes that's pretty grueling. Perhaps if the level would secretly start reloading before you click [try again] it could shave off a few seconds of the perceived delay.

The art looks fantastic, I love the style and spritework. *Some* sfx would've elevated the overall package of the game, even if they'd have been simple blips.
Magnat
17. Apr 2024 · 08:58 UTC
Hi, nice graphics and nice world generation.
I also really liked the void effect when the curse happen.

I find the character too fast too quickly, making him a bit of a soap and made me run into traps so much time when I definitly tried to avoid them.

Also, while the world generation is cool, it take soo much time (since I died often, I felt it a lot), maybe you should try to accelerate it using some parallelization. Or, since you're using godot, if your world generation algorithm is made on GDScript, maybe try to make this algorithm in C++ using GDExtension, this would boost the generation by a lot
🎤 A.Bond
17. Apr 2024 · 09:51 UTC
@flaterectomy

> The art looks fantastic, I love the style and spritework.

I'm sorry, but the sprites/tiles are just public domain assets from [here](https://kenney.nl/assets/tiny-dungeon). I guess, I had to mention this in description or opt out of ratings on graphics to avoid confision here.

@magnat

> maybe you should try to accelerate it using some parallelization. Or, since you’re using godot, if your world generation algorithm is made on GDScript, maybe try to make this algorithm in C++ using GDExtension, this would boost the generation by a lot

I used my [wave function collapse addon](https://github.com/AlexeyBond/godot-constraint-solving) for Godot in this game. It does use multithreading, however, it seems to use only one core in browser. I am going to rewrite it using native extension, but someday in the future, when there will be a stable support for native extensions written in Rust.
DariZz
17. Apr 2024 · 11:29 UTC
Автор как всегда на высоте!
ryusui
22. Apr 2024 · 06:42 UTC
I love the concept. I do not love the fact that the gameplay consists largely of sliding uncontrollably into spikes and/or ghosts and dying instantly. Definitely going to look into that worldgen algorithm of yours, though - possibly to use it in something where there will be more exploration and less dying quickly and horribly.
mlists
26. Apr 2024 · 03:52 UTC
As others have said lag and the control delay were bad on the web version but the downloaded version was much better. The spikes blend in a lot with the other props and it took me a while to realise what they were. The world generation seems to work quite well but the gameplay loop could use work. Giving the enemies an attack and adding a cooldown to the player attack would be my biggest suggestions in this department.
buloz
27. Apr 2024 · 13:43 UTC
The most significant drawback of this submission is how hard it is to understand what is a threat and what isn't. Otherwise the art is cool, the controls a bit messy but it works. I am curious to know what takes so much time to load before starting the game?
Also I had a bug where I spawned in a trap.
🎤 A.Bond
27. Apr 2024 · 13:51 UTC
@buloz

> I am curious to know what takes so much time to load before starting the game?

The level is generated procedurally every time (so technically it's not "loading" but "generating"). It uses wave function collapse algorithm which is not the fastest one.

> the art is cool

as I mentioned before, the art isn't mine

> Also I had a bug where I spawned in a trap.

Yep, that happens sometimes.
buloz
27. Apr 2024 · 14:18 UTC
Alright thank you for insights, great job
Wuppos
28. Apr 2024 · 03:36 UTC
I liked what you were going for here! A kind of survival game, where you should keep moving to avoid the summonign circle, but at the same time you should not move too recklessly to avoid the traps and to attack the enemies. I think this could give really nice gameplay. My one problem with the game was that the loading of the level took a very long time. Because I had to wait for the loading every time I died (which I did a lot :P) it became a bit frustrating having to wait.

That said, wavefunction collapse is a really cool algorithm and perfect for something like this. I really would like to play with it myself someday. Unfortunately I do not use godot, so I guess I should figure out how to implement it myself :)