Heartvest by jaonewguy
Heartvest - ludum-dare-52 jam

How to play
Buttons:
A or l.arrow to move left
D or r.arrow move right
F or mouse left to attack
L Shift to run
Goal: Knock out as many hearts as you can.
Lose: When your score is 100 less than number of hearts spawned
Background
I shamelessly entered LD52 without any prior game dev experience, and so here we are -- my first game, Heartvest.
Only had a few small goals: 1. Get used to Godot over a weekend 2. Use one common game design pattern 3. Submit something finished "enough"
Almost gave up on goal 3, but the hours flew by. Had a lot fun and learned a lot :)
*Open to all criticism -- please tell me why the RigidBody2D Heart sometimes go through a Tilemap wall/floor.
Credits - free resources used (hopefully didn't forget any)
- Music - https://s0lar15.itch.io/manufactory
- SoundFX - Hit#11 from https://opengameart.org/content/37-hitspunches
- Art
- https://kidscancode.org/godotrecipes/3.x/physics/conveyorbelt/
- https://rvros.itch.io/animated-pixel-hero
- https://kenney.nl/assets/pixel-platformer
- Font
- Godot font pack https://godotengine.org/asset-library/asset/316
| Github | https://github.com/jaonewguy/ludum-dare-52 |
| itch.io | https://jaonewguy.itch.io/heartvest |
| Original URL | https://ldjam.com/events/ludum-dare/52/heartvest |
Ratings
| Overall | 534th | 3.304⭐ | 30🧑⚖️ |
| Fun | 349th | 3.464⭐ | 30🧑⚖️ |
| Innovation | 466th | 3.196⭐ | 30🧑⚖️ |
| Theme | 751th | 2.846⭐ | 28🧑⚖️ |
| Humor | 222th | 3.365⭐ | 28🧑⚖️ |
| Mood | 689th | 2.92⭐ | 27🧑⚖️ |
| Given | 26🗳️ | 34🗨️ |
Had some issues with the controls at first but then it started working so not sure if it was just me or what, couldn't replicate it.
Text for the lose condition was a bit smooshed, was hard to say if it was 10 or 100.
@linus-lindberg thanks for the feedback! What would have made it less clunky? Movement speed was at a constant rate without running, perhaps a small lead-up acceleration?
@Fromage thanks for the feedback! The lose condition smoosh is unfortunate, probably sleep-deprived and didn't notice it, but I swear it wasn't smooshed while testing...
Quantum tunnelling
As for the RigidBody2D issue... Godot's Debug menu has a "Visible Collision Shapes" option that has saved me a few times. It might be that the collision shape isn't quite aligned the way that you think. If it's not that, my money would be on the heart's velocity being too high -- if an object is moving too fast, it might move far enough in a single frame to jump "through" the object that it was supposed to collide with. I think the technical term for this is "tunneling".
As @pennycook mentioned, the collision problem is likely due to how fast the hearts are moving. Here's a more detailed explanation based on my memory, if you're interested:
In Unity (and maybe Godot has this option too), this can be mitigated by using a more costly collision detection (Continuous) vs the one that Godot is likely using (Discrete). I'm not sure if these are Unity specific terms but the gist of it is: Discrete collision detection is only run after a physics frame has done is calculations. This means if an object moves past the collision area of another before the frame finishes its calc, it will not collide with the other object. Continuous and other types of collision detection algorithms can mitigate this issue, but they can be less performant. I don't exactly remember how they work, though. Just know that, with a lot of objects, you may see some performance degradation because of them.
EDIT: Found the youtube video that I was remembering this from https://youtu.be/6h5FoPi3SY0
But I will be honest and say that the "tunneling" was actually kinda nice when I was buried in hearts :D
Keep up the good work!
Lovely quirky little game, slowly getting overwhelmed by the more and more ridiculous heart spawn rate.
Love the main character animations and how the attack sound changes which speaker it plays from depending on where you stand.
I think it might be fun to have a second spawn on the right side appear later on in the game to drive home frantic feeling of hurrying left and right to get rid of the hearts.
Good job!
Everything looks nice, the music accentuates the rising difficulty and the physics and collisions seem to work as they should.
Is there ever a reason why should not hold Shift to sprint 100% of the time though?