[{"data":1,"prerenderedAt":284},["ShallowReactive",2],{"project-20251015":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":45,"post_text":46,"what":47,"said":75,"maker_in_thread":176,"shape":181,"grid":184,"attempts":245,"same_week":246,"maker_shows":38,"maker_hidden":276,"reader_version":277,"card":278},"20251015","Gravitle","2D soft-body engine built with Rust for the web","title","Show HN: Gravitle – 2D soft-body engine built with Rust for the web","https:\u002F\u002Floicbourgois.github.io\u002Fgravitle\u002Findex.html","loicbourgois.github.io","bourgoisloic",1561228535,2019,95,27,506,2195,24,"notable","languages","physics engine library","web_app",[24,25,26,27],"soft body physics","rust wasm","2d physics engine","verlet springs","mixed",-0.125,{"positive":31,"neutral":32,"mixed":33,"critical":34},5,9,0,7,21,{"performance":37,"design":39,"idea":40,"execution":42},{"positive":33,"critical":38},1,{"positive":33,"critical":33},{"positive":41,"critical":33},2,{"positive":43,"critical":44},3,6,[38,43,43,43,43,43,33,43,33,33,33,31,31,38,33,43,38,38,38,31,31,31,38,43,43,33,38],null,{"problem":46,"audience":46,"pricing":46,"motivation":46,"time_to_build":46,"stack":48,"openness":74,"stage":74,"team_size":74},[49,58,62,68],{"value":50,"source":51,"evidence":52},"Rust","maker",[53,55],{"id":54},"post",{"id":56,"by":11,"text":57},"20253073","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…",{"value":59,"source":51,"evidence":60},"WebAssembly",[61],{"id":56,"by":11,"text":57},{"value":63,"source":51,"evidence":64},"JavaScript",[65],{"id":66,"by":11,"text":67},"20253013","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…",{"value":69,"source":51,"evidence":70},"WebGL",[71],{"id":72,"by":11,"text":73},"20251417","Thank you for the feedback. I will look into this. Maybe the issue is only related to WebGL rendering.","unknown",{"praise":76,"objections":96,"requests":138,"questions":153,"alternatives":168},[77,85],{"value":78,"source":79,"evidence":80},"Fun to play with","commenter",[81],{"id":82,"by":83,"text":84},"20251486","andai","Man this is great fun! I got all scrunched up by the circles of doom.",{"value":86,"source":79,"evidence":87},"Runs on unusual devices like BlackBerry and Firefox on Android",[88,92],{"id":89,"by":90,"text":91},"20252141","boomskats","This is very nice. It works perfectly on a BlackBerry K2 - with full keyboard support :)",{"id":93,"by":94,"text":95},"20259002","connicpu","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…",[97,112,123],{"value":98,"source":79,"evidence":99},"Freezes or fails to load on several mobile browsers and devices",[100,104,108],{"id":101,"by":102,"text":103},"20252077","markdog12","Site freezes on Moto G4, latest Chrome after about a second. At least back button still worked.",{"id":105,"by":106,"text":107},"20253621","mdonahoe","Didn’t work on my iphone",{"id":109,"by":110,"text":111},"20252302","hu3","Freezes in Firefox mobile on a LG G5.",{"value":113,"source":79,"evidence":114},"Fails in Safari without experimental WebGL 2.0 enabled",[115,119],{"id":116,"by":117,"text":118},"20251077","rgovostes","This works in Chrome, but not Safari (macOS 10.14.5).",{"id":120,"by":121,"text":122},"20251598","boardwaalk","It indeed works on Safari with WebGL 2.0 enabled (Developer -> Experimental Features)",{"value":124,"source":79,"evidence":125},"Inconsistent results in Firefox on desktop",[126,130,134],{"id":127,"by":128,"text":129},"20252397","Narishma","Doesn't work in Firefox 67 on Windows.",{"id":131,"by":132,"text":133},"20252447","rectang","Freezes Firefox 67.0.4 on Mac.",{"id":135,"by":136,"text":137},"20259553","NikkiA","Running fine on FF 67.0.4 on win 10 here.",[139,146],{"value":140,"source":79,"evidence":141},"Write a blog post explaining the implementation",[142],{"id":143,"by":144,"text":145},"20251971","aloer","super interesting. Is there a blog post somewhere? how much better is the performance due to rust\u002Fwasm compared to implementing the physics in JS?",{"value":147,"source":79,"evidence":148},"Consider finite element methods for realism and robustness",[149],{"id":150,"by":151,"text":152},"20253803","joelthelion","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.",[154,161],{"value":155,"source":79,"evidence":156},"How is stability ensured in the soft-body simulation",[157],{"id":158,"by":159,"text":160},"20251455","slavik81","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?",{"value":162,"source":79,"evidence":163},"How to use it on mobile",[164],{"id":165,"by":166,"text":167},"20252670","gitgud","How do I use this on mobile? The controls mention touchscreen...",[169],{"value":170,"source":79,"evidence":171},"Xspringies",[172],{"id":173,"by":174,"text":175},"20251505","phkahler","Like the old xspringies from '93.",{"comments":43,"answered":41,"key":177},[178,179,180],{"id":66,"text":67},{"id":72,"text":73},{"id":56,"text":57},{"commenters":18,"max_depth":43,"maker_replies":43,"first_comment_mins":182,"lifespan_hours":183},14,43,[185,187,189,190,192,193,197,199,201,205,207,210,215,216,218,219,220,223,225,226,230,231,232,234,238,241,243],[101,33,38,186,102,33],"project\u002Fcritical\u002Fperformance",[165,38,43,188,166,33],"project\u002Fneutral\u002Fdesign",[93,38,43,188,94,33],[158,41,43,191,159,33],"project\u002Fneutral\u002Fidea",[173,41,43,191,174,33],[194,41,43,195,196,33],"20252542","project\u002Fneutral\u002Fexecution","electricslpnsld",[66,41,33,198,11,38],"maker\u002Fneutral\u002Fexecution",[150,41,43,200,151,33],"maker\u002Fneutral\u002Fidea",[202,43,33,203,204,33],"20252545","commenter\u002Fneutral\u002Fnone","xchip",[206,43,33,203,196,33],"20252555",[208,43,33,203,209,33],"20253437","michaelgrafl",[211,212,31,213,214,33],"20263464",4,"project\u002Fpositive\u002Fidea","neetodavid",[82,31,31,213,83,33],[116,44,38,217,117,33],"project\u002Fcritical\u002Fexecution",[72,44,33,198,11,38],[120,44,43,195,121,33],[221,34,38,217,222,33],"20252163","emilfihlman",[127,224,38,217,128,33],8,[131,224,38,217,132,33],[227,224,31,228,229,33],"20252616","project\u002Fpositive\u002Fexecution","faitswulff",[135,224,31,228,136,33],[89,32,31,228,90,33],[105,233,38,217,106,33],10,[235,236,43,191,237,33],"20252793",11,"sidewinder128",[143,239,43,240,144,33],12,"project\u002Fneutral\u002Fperformance",[56,239,33,242,11,38],"maker\u002Fneutral\u002Fperformance",[109,244,38,217,110,33],13,[],[247,252,257,262,267,272],{"id":248,"name":249,"points":250,"category":251},"20252097","noageismintech.com",523,"web_saas",{"id":253,"name":254,"points":255,"category":256},"20245913","Catj",388,"dev_tools",{"id":258,"name":259,"points":260,"category":261},"20233376","collectoral.com",143,"productivity",{"id":263,"name":264,"points":265,"category":266},"20231328","The Star Maps",138,"creative",{"id":268,"name":269,"points":270,"category":271},"20247661","Fist",124,"data",{"id":273,"name":274,"points":275,"category":266},"20267629","Ludigraphix",106,false,"v2",{"id":279,"name":5,"line":6,"ai":276,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":280,"top":18,"kw":281,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":282,"url":9,"mix":283,"praise":78,"objection":98,"sub":21},20251015,-0.12,[24,25,26,27],"133333030005510311155513301",[31,32,33,34],1794036578578]