Jumping Bean Harvester by therealjtgill
This game was built entirely with a hand-made physics engine and OpenGL renderer.
As a jumping bean harvester, your job is to harvest all of the wayward beans and deposit them into the central bucket at the top of the map. Stationary beans are worth 5 points, but jumping beans are worth 50 points. Beware the dynamic pieces of the map! You get five total lives. Fall off the map or flip over too many times and it's game over. Collect all of the beans to win!
Instructions for running on Windows and Mac are on the itch.io pages linked below!
| Link | https://therealjtgill.itch.io/jumping-bean-harvest |
| Original URL | https://ldjam.com/events/ludum-dare/52/jumping-bean-harvester |
Ratings
| Overall | 756th | 2.79⭐ | 33🧑⚖️ |
| Fun | 711th | 2.717⭐ | 32🧑⚖️ |
| Innovation | 523th | 3.109⭐ | 34🧑⚖️ |
| Theme | 658th | 3.194⭐ | 33🧑⚖️ |
| Graphics | 713th | 2.452⭐ | 33🧑⚖️ |
| Humor | 538th | 2.537⭐ | 29🧑⚖️ |
| Given | 15🗳️ | 52🗨️ |
I think I got 50 points despite having a stationary bean. The grabbing mechanic could be improved on, e.g. maybe a physical arm and having to balance the bean on the trunk of the car :)
I've noticed you have a whole lot of DLL's in the package, mostly for the physics, I guess? It feels strange because what you'd typically do is just make a `libphysics.dll` with all that stuff inside. A lot of DLL's means a lot of files to read & load at startup, which increases the time for the game to start. It also means a lot of functions can't be inlined or called directly by a relative address, since they reside in a different DLL and the address isn't known before actually loading them, so they have to be called through an address lookup table, which is slower. It's usually not that big of a deal, but if this happens for a lot of functions in a hot loop (like the physics engine update), this might be a problem.
So, speaking of the game itself, I love the concept but I'd say the implementation needs some polishing. My camera was routinely stuck inside walls, and since they're all of the same yellow color it's really hard to navigate and understand where you are. The car movement looks a bit jittery, - I guess because the wheels are actually polyhedral and have rigid contact with the ground? Since you're making you own physics engine, it shouldn't be that hard to support proper round cylinders, I think: you mostly only need collision detection, and most algorithms for polyhedrons (like SAT or GJK) can be adapted for spheres and cylinders as well.
After playing for a while I managed to turn the car upside down and got stuck - guess this should be detected by the game somehow and considered a lost life or something like that :)

RE: dll's - Yes, my CMake setup ends up making a bunch of SO files (or dll's on Windows). It's an older setup that definitely needs an overhaul.
RE: Dear ImGui - It was a choice made out of... availability. The renderer and GUI are tools meant more for debugging than visual polish. Although I really think shadow maps would make things pop...
RE: Jitter - I'm using GJK, EPA, and Sutherland-Hodgman for collision detection and resolution. Currently all rigid bodies are treated as convex polyhedral meshes, but yes, support functions can certainly be created for non-polyhedra. The main benefit would be a performance boost from not having to iterate through faces and vertices to find support points. With the current formulation contact points and constraint impulses are pretty stable, the car jitter comes from how the motor constraint for the two drive wheels is set up. This can absolutely be addressed in future demos!
RE: Getting stuck - Press `m` to reset the car ;)
Thank you again for your feedback, this is extremely valuable and I look forward to playing your game!
I'm looking forward to continuing to improve this game in the future.
@harmofish Thank you so much!
Similar to others, I didn't have the patience for collecting all the beans in the end, but the physics simulation ran great, and I was able to traverse the world and interact with stuff. Great work
There was a little something that I'm not sure is intended or expected, but the camera seemed to react to 'micro' movements of the buggy as I drove across the ground. I presume the ground is a flat cube, so I wouldn't have expected any jittering of the camera, and although it was barely preceptable, it was a little jarring
in simple terms: I enjoyed it
Thank you for playing! Yes, the "harvester's" turn radius is pretty big and the beans are definitely difficult to pick up; improving the mechanics is a high priority for the next game jam. Thank you for the encouragement, and I look forward to the next jam!
Yes, you nailed it! There's a hinge-like suspension in all of the wheels - I couldn't implement the prismatic joint in time, otherwise the suspension would've felt much more familiar. Thank you so much for playing!
Thank you! Ah yes, the jumping beans spawn randomly within the map area at the start of the game... and sometimes they drop straight in the bucket. What would you think of turning the trunk of the car into a bucket that can be raised and lowered (like a garbage truck)?
Thank you for playing, and apologies for the frustration the gameplay caused! Addressing the gameplay mechanics is a core focus for the next game jam and I very much appreciate your feedback!
Thank you for playing! The core focus of the next jam is going to be converting difficulty into fun. I'm glad you like the resizable window, I'll consider it for the next game!