Thanks for making something with Hoot!
Play game
balls's itch.io pageResults
Criteria | Rank | Score* | Raw Score |
Presentation - how does it look/feel? | #16 | 2.500 | 2.500 |
Creativity - how original is the idea? | #17 | 2.667 | 2.667 |
Overall | #17 | 2.444 | 2.444 |
Entertainment - how enjoyable is it? | #21 | 2.167 | 2.167 |
Ranked from 18 ratings. Score is adjusted from raw score by the median number of ratings per game in the jam.
Comments
Ran fine in Chromium, like all Hoot things it errors in Safari. But after spamming balls (“balls!”) for a while, it lags, then locks up. There’s physics going on, but you need to cheat a bit or put guards in to stop it from breaking the game.
Like the glowy skeleton look. Physics performed well. Small suggestion, a "tink" sound effect when the balls collide would be nice.
Neat creation. It’s a very fun little physics engine to play around with.
Idk what constraints you decided to use when programming the physics from scratch--but they are good ones implemented well! Doing this in a single weekend is even more impressive!
No engine deals with solving perfectly, thanks to delta-time, and from what I've seen in GDC talks, the most graceful undesired behavior is objects under constant collision slowly pushing into each other... as opposed to source engine boxes going crazy, skyrims ragdolls shooting into space, or at worst, no-clipping out of bounds. The fact you're getting 0 no-clips at the framerate of my poor old computer in a web browser is amazing honestly.
Funny story, I wanted to make a pinball game. If you run our game, you can see a cartridge called "Balatzee" on the shelf in the top left. Similarly it will spawn balls that drop and only wall collisions are implemented. The frame rate issues with love.js and my own amateur coding of constraints with 0 research meant having the game function well in a week would be impossible. You got waaaaaay farther than I did in less time! Seriously awesome job!
This is my first time making anything resembling a game (unless you like playing with engineering simulations), so I appreciate it!
I started with a pretty naive implementation where normal/tangential impulses are applied to velocity only, followed by a single position update which integrates velocity at each time step. This probably would've worked better for very small time steps, but at 60Hz it caused all sorts of no-clip issues, balls slowly sinking, balls being pushed through walls by other balls, etc.
Apparently a solution for this is called sequential impulses, where you update velocity/position multiple times each frame to iteratively separate colliding entities, but obviously it hurt performance (I don't think it helped that I was using float64 for everything either). I ended up just adding a step right before integration where any two objects still intersecting will have their normal velocities clamped to 0 (I only did ball-wall intersections for the submission, but ball-ball also ended up working pretty well).
Your game looks so much more polished and like a game, can't believe you had time to squeeze my game into yours :P
Leave a comment
Log in with itch.io to leave a comment.