Jumping Bean Harvester by therealjtgill

[raw]
made by therealjtgill for Ludum Dare 52 (JAM)

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!

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🗨️

Feedback

Grisha
10. Jan 2023 · 02:54 UTC
Didn't play (don't wanna run an exe) but love to see dear imgui represented. Keep building your own engines!
🎤 therealjtgill
10. Jan 2023 · 02:58 UTC
@grisha Thanks for the encouragement! I was trying to get emscripten working just before the jam started but couldn't push past the compile errors in time. I'll work on getting a web build for next time though!
Chrispy977
10. Jan 2023 · 03:18 UTC
Interesting experiment, felt like a lot of the frustrating simulators like Surgeon Simulator. Hard to control the beans and the truck. Super commendable project though, seems like you put in a ton of work to make it so systematic. Keep going at it.
LDJam user 279233
10. Jan 2023 · 03:21 UTC
Neat game. I don't know if its the case, but it looked like you were simulating some kind of suspension system with the wheel movement and it looked cool :)
Riesyeti
10. Jan 2023 · 16:00 UTC
All self made? That's really impressive especially for the time constraints! And it's fun too once you get tha hang of it, though the grabbing of the beans is a bit finnicky imo, but still good.
Raivk
10. Jan 2023 · 21:10 UTC
Congrats on making it with your own engine and such, that's quite an achievement!
Christian Zommerfelds
10. Jan 2023 · 21:26 UTC
Good job on submitting your game!

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 :)
Yahel Dooley
10. Jan 2023 · 21:40 UTC
The game is pretty challenging and certainly tested my patience. I can tell that a lot of work went into the logic of controller, and that alone under the time constraints is commendable. The core loop itself was a bit too frustrating for my liking, as even after managing to capture a bean, the vehicle could still simply drove over and past it. That said though, I do think that frustration could be solved by giving it a little "magnetic attraction" once you've grabbed a bean. Good work!
mactinite
11. Jan 2023 · 02:19 UTC
Custom engine? Cool stuff!
FancyReckless
11. Jan 2023 · 10:38 UTC
Controls and everything is intuitive, resizable tutorial windows is pretty neat and something I haven't seen before. Grabbing mechanic needs some work as right now it was big challenge to use it, but maybe that's where the fun is. Good job on writing your engine, that's a really challenging task.
Nathan Varughese
11. Jan 2023 · 10:48 UTC
very well done, bit tricky to grab the beans tho
Flatgub
11. Jan 2023 · 11:06 UTC
Congrats on submitting something with your own engine, that's absolutely impressive on its own merit!
LDJam user 240168
11. Jan 2023 · 18:54 UTC
Oh, someone using a custom engine as well, with less than 2Mb download size, love that :) Also haven't seen anyone use imgui as a game GUI, that's an interesting decision.
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 :)

![2023-01-11-214351_1920x1080_scrot.png](///raw/82a/a3/z/56254.png)
🎤 therealjtgill
11. Jan 2023 · 19:19 UTC
@lisyarus Thank you for the thorough feedback! I'll respond to your points separately.

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!
jitspoe
12. Jan 2023 · 03:19 UTC
Fun little physics sandbox. It would be nice if the harvested beans disappeared. Seems I had a case where a harvested jumping bean jumped back out and when harvested it again, I didn't get any points.
TheOtherSamP
12. Jan 2023 · 03:26 UTC
Seems a little more like a tech demo than a game, but a good one. The physics engine seems to hold up well as far as I can tell. Nice work getting that done in the time!
🎤 therealjtgill
12. Jan 2023 · 18:36 UTC
The Mac build is broken - I'm going to take down the link until it's fixed.
picross
13. Jan 2023 · 06:01 UTC
Awesome game! Very impressive that you used your own engine. Was the engine mostly already developed when you started the jam or did you have to do a lot of live fixes during LD> Also, which physics API are you using? Super cool stuff and nice work!
Harmofish
13. Jan 2023 · 06:43 UTC
The physics engine is performing admirably. I understand how difficult it is. Congratulations!
I'm looking forward to continuing to improve this game in the future.
🎤 therealjtgill
13. Jan 2023 · 12:56 UTC
@picross Thank you for playing! Yes, the physics engine was in a solid working state before the jam started. The one major addition I added was the ability to raycast into the scene. I also added a couple of 'getters' to the existing API, but those were no biggie. The physics API is one that I've made up, but if you stand 20ft away from it and squint your eyes it might look like Unity's physics API?

@harmofish Thank you so much!
picross
13. Jan 2023 · 17:04 UTC
@therealjtgill That's super cool! I can't even imagine all the math involved. Thanks for sharing!
n.feofentov
13. Jan 2023 · 20:29 UTC
It was cool! I love vehicle physics, was fun to ride on top. I wish camera has more smooth movement, hang it on spring. But it's cool you've made it on your own engine. Great job!
Kevin Barrios
13. Jan 2023 · 22:50 UTC
Cool demo of your physics engine. Didn't quite have the patience to harvest the beans, but still enjoyed driving the car around, toying with the physics and the tank controls.
🎤 therealjtgill
14. Jan 2023 · 00:22 UTC
@kevin-barrios Thank you for trying it out!
Lintfordpickle
14. Jan 2023 · 14:30 UTC
I wanted to play this as I saw one of your posts pre-competition about using your own physics engine (and I too just finished up my 2d physics engine over Christmas).

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
🎤 therealjtgill
14. Jan 2023 · 15:08 UTC
@lintfordpickle Thank you for the feedback! The tires are polyhedral approximations with flat faces on the sides, so those micro movements are the result of the wheels transitioning from face --> edge --> face --> edge contact with the floor. I've got an update pending that allows GJK and EPA to support implicit surfaces in addition to convex meshes, so camera jitter is on the list for fixes! I'm looking forward to playing your game as well!
malibaturhan
14. Jan 2023 · 16:20 UTC
very nice to play but lacks gameplay. I think this is a prototype of something
LDJam user 233347
14. Jan 2023 · 22:13 UTC
Nice entry - never really got the hang of collecting the beans. But managed to hang off a platform on 2 wheels.. and then the camera glitched :smirk:
in simple terms: I enjoyed it
🎤 therealjtgill
15. Jan 2023 · 15:43 UTC
@malibaturhan Thank you for trying it out!
🎤 therealjtgill
15. Jan 2023 · 15:44 UTC
@xparker That's what nearly all of my attempts end with - hanging off the edge going "ah shit shit shit I don't want to lose my bean"
mr_lazy
15. Jan 2023 · 21:29 UTC
nice entry....game mechanism is good..your own engine!!!!that's awesome!!!
jk5000
16. Jan 2023 · 15:03 UTC
I don't know how well the game is working, but it was still fun to see what you have made.
🎤 therealjtgill
17. Jan 2023 · 16:06 UTC
@chrispy977

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!
🎤 therealjtgill
17. Jan 2023 · 16:07 UTC
@noobman64

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!
🎤 therealjtgill
17. Jan 2023 · 16:08 UTC
@riesyeti Thank you so much! Mechanics related to interacting with bodies in the physics engine are a high priority for the next game jam, thank you for the feedback!
🎤 therealjtgill
17. Jan 2023 · 16:09 UTC
@raivk Thank you so much! Best of luck with Harveeps!
🎤 therealjtgill
17. Jan 2023 · 16:12 UTC
@christian-zommerfelds

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)?
🎤 therealjtgill
17. Jan 2023 · 16:13 UTC
@yahel-dooley

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!
🎤 therealjtgill
17. Jan 2023 · 16:13 UTC
@mactinite Thank you!
🎤 therealjtgill
17. Jan 2023 · 16:16 UTC
@fancyreckless

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!
🎤 therealjtgill
17. Jan 2023 · 16:17 UTC
@nathan-varughese Thank you for playing!
🎤 therealjtgill
17. Jan 2023 · 16:17 UTC
@flatgub Thank you for your kind words!