Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Gravitle – 2D soft-body engine built with Rust for the web (loicbourgois.github.io)
95 points by bourgoisloic on June 22, 2019 | hide | past | favorite | 27 comments



Site freezes on Moto G4, latest Chrome after about a second. At least back button still worked.


How do I use this on mobile? The controls mention touchscreen...


Idk if it breaks on other platforms, but Firefox on Android it's working to tap and hold the middle of the screen for the center thruster, left for left thruster, and right for right thruster


How do you ensure stability? Based on the "learn more" section, I would presume the soft body is made up of vertices stitched together with damped springs. Is that accurate?


The springs are not damped yet, but for the main example, drag is enabled[1]. This continuously slows down the particles.

Drag is computed[2] for all the particles using something similar to the Drag equation[3].

Also, like electricslpnsld said, having a small enough time step helps.

[1] https://github.com/loicbourgois/gravitle/blob/master/fronten...

[2] https://github.com/loicbourgois/gravitle/blob/master/src/par...

[3] https://en.wikipedia.org/wiki/Drag_equation


You might want to look into finite elements. That's a bit harder conceptually, but it's not that hard to implement and should be far more realistic and robust.


I presume by keeping the time step small enough? If you go into the integrator settings in the demo and crank the time step, it does go unstable.


Like the old xspringies from '93.


I landed my first job 20 years ago by writing a similar demo. It was in ASM on a 80286, I was rendering a torus in 3D and applying physics using a spring/mass model.


What was the context? Where people still using 286s in 1999?


Nope. Probably meant to say 30 years ago.


Verlet physics are so nifty. A basic implementation with points, springs, gravity, and a simple floor (a Math.max check) produces stunning motion. Going from trying to tune angular momentum calculations to getting believable rotation 'for free' felt like a revelation


Man this is great fun! I got all scrunched up by the circles of doom.


This works in Chrome, but not Safari (macOS 10.14.5).


It indeed works on Safari with WebGL 2.0 enabled (Developer -> Experimental Features)


Thank you for the feedback. I will look into this. Maybe the issue is only related to WebGL rendering.


Doesn't work in Chrome : /

E: And started to work, could just have been some fringe issue, the page was just a white screen and didn't respond.


Doesn't work in Firefox 67 on Windows.


Firefox 69.0a1 (2019-06-22) (64-bit) chugging along just fine on macOS


Running fine on FF 67.0.4 on win 10 here.


Freezes Firefox 67.0.4 on Mac.


This is very nice. It works perfectly on a BlackBerry K2 - with full keyboard support :)


Didn’t work on my iphone


It would be possible to use SDL2 with rust for rendering too.


super interesting. Is there a blog post somewhere?

how much better is the performance due to rust/wasm compared to implementing the physics in JS?


Thank you. There is not, but on the readme you can find a few links to learn more[1].

I don't have solid metrics, but using only JS for a previous attempt, I couldn't have 8 points running smoothly [2]. Now it works with 500[3].

I'm not sure whether it's because I have a better understanding of the problems now or just because Rust/wasm is way faster, but what is sure is that Rust makes it easier to write performant code, even if it's harder to learn at first.

[1] https://github.com/loicbourgois/gravitle#learn-more

[2] https://loicbourgois.github.io/treeminor/demo/heart

[3] https://loicbourgois.github.io/gravitle/playground.html?test...


Freezes in Firefox mobile on a LG G5.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: