It's really commendable these guys focused on making a fun game. The glowing dots are easy to avoid and even the story they tell is not intrusive. It's an understandable compromise!
Yeah, they really should be some kind of powerup so you're incentivized to hit them.
Right now learning about the company feels like a penalty which I doubt was the intent.
Also for anyone who hits a dot and is confused how to get out of the information screen - you just press the arrows. I tried escape and clicking for longer than I would care to admit before I realized this.
Lol. Same for me, the game was avoid the white dots. It almost speaks to something deeper in terms of corporate-sponsored games, how does a "brand" form a relationship with me? Perhaps just calling the game "avoid the white dots" would have been a step in this direction?
I often get YouTube advertisements thrust upon me when I'm engaged in content and think "what are these brands thinking... bursting into my living room mid-content and trying to push tampons onto me?" I'll never buy your tampons again.
However, I digress, and apologies, because I love the game and also the studio that created it - but honest feedback - I still have no idea what the company does that sponsored this game. I don't feel an emotional connection, and the game didn't peak my interest enough to find out what they do.
In the past when I've encountered great "art" - it's inspired me to go deeper into what was behind the art; to learn more about the author, and perhaps if it's truly amazing, another step beyond this. Brands like Panic have made me do such a thing.
I remember that great commercial for (I think) it was Geiko insurance on YouTube that said "You can't skip this ad because it's already finished", it was wonderful IMHO because it empathised with the viewer. Perhaps calling the game "Avoid the dots" would do the same?
Just my opinion, insignificant such as it is.
[edit] After a moment on the balcony it occurred to me, what if the game began with a big white Super-hot title that said "Avoid the dots (Speedrun challenge)" and at the end of each level displays a high-score table? Perhaps that would even give it a chance of virality in the speed running community? (credit to the commenter that said he "speed ran" avoiding the dots for the idea)
Great work, it really captures the feeling of Marble Madness. Its maybe to deep of a thought, but I really fancy the spin of the marble, something that the original was not conveying as fancy as your version does.
Thank you. The physics engine we're using (Rapier) really does most of the work to make the spin of the marble look realistic. But we spent quite some time tweaking the controls to make them as enjoyable as we could.
As a MM fan, I wanted to second this. Great work, engaging enough to make me finish it and wish there were more mechanics like the catapults and enemies.
Nice work! In level 5 there are three bounce green boxes and if you fall on one, it bounces you to second, which bounces to third and you "fall into the void" like noclip through the platform and you respawn under it and instantly die forever. Buggy and not going to start from beginning. Open source it!
This was really fun. Right before this little hole on the second level, my macbook started running a bit slow and the collision detection somehow sucked the marble into the floor.
Physics collision bugs are more likely to occur during frame rate drops. We’ve tried to address this by implementing an auto-respawn mechanism to handle cases where the ball gets stuck inside a collider, but it seems this sometimes fails. Anyway, thank you for playing!
Nice work, love to know more about the technical bits: what framework did you use for 3D scene, objects? how did you handle camera movements to track the ball? What library for sound as that was a nice touch. How did you do physics? Thanks!
Thanks. The WebGL rendering is based on Three.js. We're using Rapier for the physics simulation, and Howler for the audio.
Our game engine is responsible for all the controls and updating things like the camera position (which follows the position of the ball at every frame).
Why did you choose to do things this way instead of using Unity WebGL?
It's okay if the reason is, "because we make websites and the programming we know is Javascript" or whatever. It doesn't have to be about some objective comparison, like optimization or whatever, which isn't going to be true or necessarily matter anyway.
Hmm... Unity WebGL has worked correctly on Mobile Safari since 2013. Support has probably been flawless since around 2019. It has been supported in all the ways that matter for a long time.
I wasn't aware of that. The Unity 6 Preview announcement from just this year had a lot of stuff around iOS and Android browser support:
From the article:
Android and iOS browser support has arrived With Unity 6 Preview. Now, you can run your Unity games anywhere on the web, without limiting your browser games to desktop platforms.
I should have said that it's not officially supported. For client work, we prefer not to choose an engine that may not work on a few devices and which we have no ability to fix.
I don't know if it's just my system or the particular games I've been playing, but Unity WebGL stuff always seems to take a long time to load. TFA loads seemingly instantly.
Besides people from the Netlify team who helped write the content and worked on some back-end aspects, the design and development of the game took around 8 weeks for a team of two.
Thanks for playing. Actually, your time is displayed once you finish the experience (there are 5 levels in total).
During the project, we discussed adding a speed-run mode but ultimately had to drop this feature due to time constraints. However, we intentionally included some shortcuts in the level design with that intent in mind.
the purpose of the game was to force marketing upon the players. a speed run version would defeat the dwell time of the marketing on the screen. i'm sure the marketing department would not be a fan
Surprisingly, you have to sit on the opening screen for a second or so before starting every run to get the best speedrun cycle for level 3. So I would say also with fast resets, it would be enough marketing even in the speedrun lol. (Coming from someone has spent hours speedrunning it so far)
I got stuck in the spiral slide on the same level. I got the impression framerate glitches are affecting the collision detection (common physics implementation pitfall). I could be wrong though.
Still, very cool. Too cool to waste on marketing in fact :)
Only the OP would know for sure, but it might be the case that this never would've come into existence were it not for the project to land the messages about the company.
Yeah, sometimes the ball does some crazy things due to the way collision detection works. We tried to optimize and avoid most of the issues but it can happen.
There is code in place to respawn the ball if we detect that it's stuck inside a block or wall, which can occur due to frame drops during the physics simulation. I'll try to reproduce this issue. Thanks for reporting it!
I was being malicious and dropped down onto the hovering pink cube outside the play area on the final level. Once you roll off that pink cube your respawn point is on the cube, leaving you stuck and unable to get back to the main course.
NBD but sharing in case you want this kind of playtesting feedback!
The glowing line represents a timeline of Netlify's milestones that you have to follow in order to discover their journey. No particular reason for the physics-based gameplay except to have a bit of fun.
This game is way better than it needs to be for a quick burst of advertising. Not only is the implementation fantastic, with perfect controls, but the level design is also great. I really enjoyed the multiple routes and the fact you can skip most of the advertising displays.
It seems such a shame that this isn't a full game. Removing the advertising and adding more complex levels with puzzles would make for a perfect little distraction.
I even triggered a back gesture by accidentally swiping from the edge when I merely wanted to move the marble, bringing me back to this HN page, assumed state was lost, but found the browser's forward button and it was like it never happened! I've never seen that in a browser-based game.
I think this is the first time I've ever seen an online game correctly tell me to use WARS keys for movement. Big props for handling non-qwerty layouts.
Great job optimizing too. Runs totally smooth on my 2012 macbook and its decrepit HD 4000 iGPU, which is no small feat for web-games these days.
That was enjoyable. I wasn't at all interested in any of the "Netlify facts" but it was fun to push the marble around and I'm impressed by how smooth the experience was. Well done!
Who is better known for designing the PS4 and PS5.
Edit: can someone explain what netlify does? I visited the site, and while I appreciate it can be difficult to explain these things in marketing blurb, I really came away none the wiser (I work as a programmer so maybe I'm not quite the target market)
I don't know if its still the case but 5+ years ago, Netlify was a pretty robust Jamstack host with built-in CI/CD deployment via git if you didn't want to manage your own VPS.
Kind of off topic, but Marble Madness was a large part of what inspired me to start programming. My dad played it when he was a kid and it made an impression on him, so he had me play it on MAME as a kid. I was blown away by the fact that computers can simulate (fairly complex) falling objects in an isometric space, but I couldn't figure out for the life of me how to reproduce that in Game Maker 7 at the time. When I got better at math, it influenced a project in my teens that's on my resume to this day.
> This seems like a great example of a lot of stuff for which there are few tutorials currently.
Not OP but, what exactly you feel like is missing tutorials? It's a nice little polished experience, but I don't think there is anything particularly innovative or difficult to build with the resources that exists today. Or is there something in particular that looks/seems difficult from what they shared?
I disagree, I think the "nice little polished experience" is the difficult part.
In practice building something like this with resources that exist today can still mean a stream of issues specific to a given platform, browser, library, programming language, IDE, issues related to a combination of any earlier two and a yak that needs shaving[1].
Meanwhile this project is described as[2]:
> fully optimized for both desktop and mobile browsers, with user controls and UI components tailored for each device, ensuring intuitive navigation and interaction across all platforms.
If this process was easy and well documented, Netlify wouldn't hire an external agency.
> I disagree, I think the "nice little polished experience" is the difficult part.
Right, I agree, most of the time will be spent in the polish. But is there really no resources out there on how to polish? Assuming there isn't, what would you want a tutorial to contain to make it apply to a wider audience, as polish is typically hyper-specific to the project.
> If this process was easy and well documented, Netlify wouldn't hire an external agency.
Companies don't typically hire external agencies because something is difficult for them to do per se, but more that it would be wasteful for them to spend the time building something like that instead of focusing on things core to the business.
FWIW: I'm asked parent about this in order to see if there are actual gaps in the available resources today for what parent wanted to do, hence the question to specify what exactly they're looking for. I guess "how to polish" is a valid answer, but again, there are resources out there to help understand how to approach that.
You can't really compare the depth of resources that exists for something like React versus something like Three, which has a bunch of toy examples but no fully coherent experiences.
Companies like Figma have shown that there is a huge appetite for solutions built on top of Canvas or WebGL, but if you don't have the privilege of working for one of these companies that built up lots of proprietary building blocks from scratch, it's much more difficult to get started.
I think you answered your own question. It looks an awful lot like a platform designed to lure non-technical people in with the promise of a magical, frictionless website building experience, ironically achieved by adding layers of abstraction and complexity into a regular web app.
The controls don't seem to work for me. AWSD, only up and down work, unless I try to go diagonally, then it just gets "stuck" moving forever. Arrow keys no directions work unless I hold multiple keys down at once, then it also gets stuck moving.
That's weird, the desktop controls are supposed to work regardless of your keyboard layout. Are you able to play with your arrow keys (which are also supported)?
That's quite fun! I didn't know about "Marble Madness", but it reminded me of Cuboro [1], a (hardware!) toy that consists wooden blocks and allows people to create quite complicated marble runs that look very very similar to this game.
This is absolutely amazing! Very well executed, congrats!!
I was absolutely terrified at first that falling off would have me start again from the beginning, so I was very careful. Once I did fall and come back where I was I grew bolder which made it more fun. Maybe that should be advertised somewhere.
(I'm still unsure what Netlify exactly is or what it does but this will make me want to find out!)
Interesting. This consistently crashes my chrome browser whenever I get to the first glowing white checkpoint. But it's not like any crash I've seen before, the page reverts to a google search result I was on this morning. And the whole page is flickering white. That tab was closed long ago, but it seems something in this gets back to that state in memory, maybe a buffer overflow somewhere or something?
While on the google search result, the music from the game is still playing. If I open a new tab, the title of this tab changes from the google title to the netlify one, and vice versa if I change back.
In my experience, flickering often means a GPU-related bug. Sometimes scrolling or alt-tab would help. Sometimes a given top-level window would seem to become "poisoned" so all new tabs would be corrupt too.
I am very curious how the physics feel realy-wordly for the most part at the mathematical level. Are there existing algos that define the gravitational pull of the "Facts" spots or was there a lot of tweaking?
The 45 degree rotation does require more dual input than I care for which makes me wonder if that is a design choice.
The physics engine we are using is Rapier 3D which does a lot of the heavy lifting, even though we had to tweak a lot the physics properties of the ball and surfaces in order to get something that felt right. For hotspots specifically, we implemented the magnet-like effect with custom code (by applying a force that pushes the ball toward the center and slowing it down at the same time) as there is no attractor primitive in Rapier.
The dual input is indeed a consequence of our isometric-view design choice, which I agree may not be the easiest way to control the ball. But the 45 degree angle just looks cooler in our opinion.
The NES Marble Madness port (and probably others) had a choice of control schemes, where the D-Pad is either mapped directly to the screen (Down is down) or mapped at a 45 degree angle (Down is down-right). I never could wrap my head around the latter, but I can see the benefit given the stage layout mostly uses 45 degree paths.
The second scheme works pretty well if you can turn the controller 45º. I never had an NES but I am pretty sure some of the isometric games I played on the c64 and Amiga had this as an option.
FWIW, you can mentally remap the keys to partially eliminate dual input. E.g. Pressing down and right together as a single input moves the marble southeast. This considerably simplifies game play for me.
I've been enjoying the quality and aesthetics of your studio's work. I would love for you to build a complete game or a longer experience, rather than only for marketing. I love where art and programming intersect. I would love to be able to create experiences like this myself one day.
Thank you for the kind words. We’re glad you enjoy our work!
We’d love to create a longer game someday, but making a living as a small indie studio in the gaming world is definitely challenging. Never say never, though!
Thank you so much. This is a great game for my 6yo, it made his day! He loved it. We spent months looking for web games for 6yo without ads, dark patterns and distracting details, but this was the first one that really fit. I wish there would be more similar games.
These are ads in the original sense (to advertise something), rather than the modern sense (obnoxious attention-grabbing multimedia presentations); and all of them are skippable, save the victory screen. I do find it quite ironic, though, that the best ad-free video game I've seen this week is an advertisement.
This is exactly how I meant it. From the perspective of my 6yo, who can't really read yet or know what Netlify is, it was also never perceived as an Ad, but a game.
They possibly could/should add the qualifier of obnoxious ads. Many mobile ads are extremely obnoxious. Especially the ones that hide the "X" or place several "X"s in the interface so it's hard to tell where exactly to tap to get the ad to go away. This game is pretty classy and subtle in comparison. Kind of how Hacker News itself is an ad for YCombinator.
I would check out react three fiber if you want to see how people are building things like this. It essentially brings a component model to three js development and creates good standards for sharable code since things are just react hooks.
Rapier was brand new when I was making things in R3F 2 years ago. Glad to see how mature it’s gotten!
We tried to implement a workaround for that [1], but for some reason it still shows up from time to time. I really wish iOS Safari gave developers a way to disable these gestures!
Got stuck in a re-spawn loop : some collision detection failed in level 4 at the start of a standard 30° incline, the ball fell through, and was re-spawned at the same place resulting in falling again, locking me in loop.
On chapter 2 I liked figuring out how to skip an entire section.
On chapter 3 I fell through the checkerboard immediately the first time; this seems like a bug.
On chapter 4 there are enough paths that it's possible to get slightly lost and not know which way you're supposed to follow the line.
On chapter 5 it's possible to fall onto an isolated island (the pink cube, under the lip) and get trapped forever. I would suggest making "only blue saves your position" a consistent rule rather than the current randomness. At this point I gave up and didn't want to try again from scratch.
There's an easy shortcut in the second level past the climb on the pink pipe and before you climb the ramp where you can jump to the semi-circle on the lower platform on the other side. Love it!
Great implementation, very enjoyable. Any chance that you will use this foundation to make an actual game (I mean, challenging, with scores/time/etc., and without the marketing component)?
I have always missed a worthy sucessor to Marble Madness. I have tried several partial implementations or demos inspired on it, like this, but never an actual full game with the same philosophy (maybe there's some I'm missing, in which case I would like to know, of course).
Kudos on a great game! If you ever expand or open source this, let me know. The mechanics and design are great and could really blossom into something fun and expansive (especially if users could submit levels).
Thanks! Agreed that the mobile experience can sometimes be a little difficult compared to the desktop version. It was hard to get right, and we may have set the ball speed a bit too high.
Actually, we used a recording of a basketball for the sound of the marble bouncing. It wasn’t our original intention, as we initially imagined the ball to have more of a metallic quality. However, the rubbery effect kinda works, I guess. :)
Hopefully constructive: Touch controls. If finger is lifted off, even for a second, new "center" is registered, which makes it quite hard to control without looking where the"center" is. Nice soundtrack, quite relaxing.
Btw, how did you started making a creative tech studio? That’s something I want to do but I’m kinda lost on the selling part. How do you sell to a business that earned media is worth it?
Thanks so much! With a bit of luck and talking to the right people at the right time, we got our start when Mozilla gave us the opportunity to create technical demos for the release of Firefox 4 back in 2010. Among other demos, we created a game called Mozilla BrowserQuest at the time, which really set us on the path to working on creative, tech-driven projects through word-of-mouth. These days, most of our clients are already excited about creating campaigns that can spark conversations and generate organic sharing, so we don’t usually need to sell them on the concept—they come to us because they already believe in its potential.
I have to say, this is perfect execution. Now, if cloudflare made an equally great Oxyd inspired game the marble game sentimentalist edge computing nerds among us would be content.
This is so cool, it feels great! The ball has the "feel" of a putty ball, bouncy but not a lot just enough. Probably a lot of thought went into this and it shows.
The rendering engine is using Three.js which is a WebGL library. The physics/collision detection code is using Rapier through a WebAssembly module available on npm [1], which means that it can be used on the web even though it's originally written in Rust.
The levels were built inside the Unity Editor, then exported to FBX, then went through a pipeline based on Blender python scripting that optimized their geometry, assigned materials and exported them to GLTF (the final format that we load in the browser).
Nothing complicated, we simply have initialization code that parses the GLTF scene on startup by iterating over the children of a specific group, and creating Rapier colliders for each of them (Triangle Mesh Colliders to be specific, in order to allow things such as curved ramps). Since their geometry is very simple, we can use directly the rendering geometry for the collider geo.
thanks for answering! Interesting you used unity for level layout. Interested to hear the advantage here. Considering you already use Blender down the pipe, how come you haven't used Blender for it or any other dcc app lile maya, max, whatever?
The main draw of the Unity Editor for us is how it auto-reloads assets, like 3D models, as soon as the asset file is updated. So the workflow is having your DCC app open in which you model things and export assets from, and Unity Editor to design your level where every model is always up-to-date.
This is not possible with Blender because it contains all models inside a single .blend file, so assets must be manually re-imported each you change them. There is a Link feature in Blender but in my experience it's not as good as what Unity does out of the box.
Not the dev, but Rapier has a JavaScript binding through WASM. And you can design the levels with a 3d tool like Blender, then script out the animation.
I got stuck in the second chapter. Went into a tube leading to a spiraling green slide and my ball reset... to the interior of the block. Oh well, cool project.
The issue with using the gyroscope is that the Device Orientation API requires websites to request user permission first (at least on iOS Safari), which we feared might drive away too many visitors.
I'll post my slowest time at the bottom of the stack: 5 minutes and 59 seconds
didnt work on FF, and only 1/4 screen on brave
index-dffbfc39.js:4603 expected expression got ?
Anyway great fun, and much easier than what I remember of the Amiga version, very forgiving controls, thanks and well done.
Seems like the ball is 0.5m in diameter, if you treat single wireframe texture tile as 1m. Gravity seems to be correct for the ball of this size (although linear dampening aka air resistance is quite high).
I think this is intentional, since higher gravity/smaller ball would significantly raise difficulty.
does anybody remember the name of the board game that you turned knobs on the outside of the box to tilt on the x/y axis to drive the marble around the board?
Thanks. Although, just searching for Labyrinth board game brings up things not what I was thinking about, but it was the correct name and got me there.
So uh, don't try to make the jump from the pink elevator to the solitary pink cube on the last level. If you make it, you're stuck there forever! (I thought it would be a skill jump to an easter egg)
#2. The "ROI calculator" steered me to enter in my name, e-mail, and phone number. I don't want to sign up to get spam from a salesman just to find out the basics about some tool or platform.
#3. Wikipedia's page for Netlify has a content warning that the content appears to be an ad brochure, but at least it said this:
"Netlify is a remote-first cloud computing company that offers a development platform that includes build, deploy, and serverless backend services for web applications and dynamic websites.
The company enables building, deploying, and scaling websites whose source files are stored in the version control system Git and then generated into static web content files served via a content delivery network."
Still have no idea what Netlify does (beyond what I can already do with git with a few clicks), or if it's right for our team, or if we can even afford it.
The Marble game was quite fun, however...
#4. The main thing that stuck in my mind from the little "milestones" about Netlify was that they changed their logo. This may seem significant to the Netlify team, but is completely irrelevant to the rest of us.
#5. The second thing was that they "bought Squirrel, an open source"... it is rather dystopian to hear that someone "bought" an open source platform.
Since we have a few Netlify people posting here, please feel free to correct my ignorance or point me in the right direction.
Used Netlify back in the day (prior to Cloudflare pages / workers sites). The experience was largely smooth.
HOWEVER, pricing was both opaque and prone to explode without warning, with little to no way of setting billing limits. Ultimately, that was too risky for the kind of small-ish projects I'm running.
They had the Netlify CMS for a while, which I quite liked. But that's gone now.
Be interesting to know what their USP is over CF Pages.
Not exactly. More that Netlify started as a no-devops-needed static website hosting platform, and gradually branched off into value props that naturally fit into that starting point.
Vercel (formerly ZEIT) basically did the same thing.
Since founding, both companies have raised an insane amount of VC money, making them both unicorns by valuation a few times over. Though imo it remains to be seen if this was actually a good investment. Neither company seems to have fully made good on their business model, which is quite similar in both cases: encourage and allow devs (or non devs) to do the absolute bare minimum of work in exchange for hosting/bandwidth/etc prices that many consider exorbitant.
> The company enables building, deploying, and scaling websites whose source files are stored in the version control system Git and then generated into static web content files served via a content delivery network.
That’s the meat of it. It’s Heroku for statically generated websites or websites that can run as lambdas. Pretty limited but very fast for those purposes cause everything is handled by edge servers rather than primary data center servers.
I spotted Little Workshop when I saw https://equinox.space/ on Hacker News and noticed it was running on Netlify. Loved the fluidness, speed and art direction of a game running directly in the browser and working smoothly on my phone.
Immediately thought of them when we started thinking about a 5 million developer celebration and reached out. Love the result :)
We’re very grateful for the opportunity to create this experience! Huge thanks to you and the Netlify team for supporting innovative campaigns like this one.
I knew I recognized the feel of this project. It did quite well on the front page [0]. Hopefully you and others keep hiring them so we can keep enjoying their work!
Nice! My favorite challenge was avoiding the glowing white dots along the path.
It's really commendable these guys focused on making a fun game. The glowing dots are easy to avoid and even the story they tell is not intrusive. It's an understandable compromise!
Yeah, they really should be some kind of powerup so you're incentivized to hit them.
Right now learning about the company feels like a penalty which I doubt was the intent.
Also for anyone who hits a dot and is confused how to get out of the information screen - you just press the arrows. I tried escape and clicking for longer than I would care to admit before I realized this.
Super cool idea though.
Should we be learning about the product or the company? Only one seems valuable, no?
Lol. Same for me, the game was avoid the white dots. It almost speaks to something deeper in terms of corporate-sponsored games, how does a "brand" form a relationship with me? Perhaps just calling the game "avoid the white dots" would have been a step in this direction?
I often get YouTube advertisements thrust upon me when I'm engaged in content and think "what are these brands thinking... bursting into my living room mid-content and trying to push tampons onto me?" I'll never buy your tampons again.
However, I digress, and apologies, because I love the game and also the studio that created it - but honest feedback - I still have no idea what the company does that sponsored this game. I don't feel an emotional connection, and the game didn't peak my interest enough to find out what they do.
In the past when I've encountered great "art" - it's inspired me to go deeper into what was behind the art; to learn more about the author, and perhaps if it's truly amazing, another step beyond this. Brands like Panic have made me do such a thing.
I remember that great commercial for (I think) it was Geiko insurance on YouTube that said "You can't skip this ad because it's already finished", it was wonderful IMHO because it empathised with the viewer. Perhaps calling the game "Avoid the dots" would do the same?
Just my opinion, insignificant such as it is.
[edit] After a moment on the balcony it occurred to me, what if the game began with a big white Super-hot title that said "Avoid the dots (Speedrun challenge)" and at the end of each level displays a high-score table? Perhaps that would even give it a chance of virality in the speed running community? (credit to the commenter that said he "speed ran" avoiding the dots for the idea)
I also went for 0% speedrun challenge.
I'm one of the developers who worked on this project. Happy to answer any questions.
More info on the project here: https://www.littleworkshop.fr/projects/5milliondevs/
Great work, it really captures the feeling of Marble Madness. Its maybe to deep of a thought, but I really fancy the spin of the marble, something that the original was not conveying as fancy as your version does.
Thank you. The physics engine we're using (Rapier) really does most of the work to make the spin of the marble look realistic. But we spent quite some time tweaking the controls to make them as enjoyable as we could.
The marble has the perfect amount of friction, I'm able to "drift" around corners which feels really nice.
You did a great job. The physics seems about as enjoyable as those of Rocket League and they must've have spent a considerably larger effort.
the "feel" is tremendous, S-tier for real.
As a MM fan, I wanted to second this. Great work, engaging enough to make me finish it and wish there were more mechanics like the catapults and enemies.
Nice work! In level 5 there are three bounce green boxes and if you fall on one, it bounces you to second, which bounces to third and you "fall into the void" like noclip through the platform and you respawn under it and instantly die forever. Buggy and not going to start from beginning. Open source it!
This was really fun. Right before this little hole on the second level, my macbook started running a bit slow and the collision detection somehow sucked the marble into the floor.
https://imgur.com/ZANb1cT
Physics collision bugs are more likely to occur during frame rate drops. We’ve tried to address this by implementing an auto-respawn mechanism to handle cases where the ball gets stuck inside a collider, but it seems this sometimes fails. Anyway, thank you for playing!
Nice work, love to know more about the technical bits: what framework did you use for 3D scene, objects? how did you handle camera movements to track the ball? What library for sound as that was a nice touch. How did you do physics? Thanks!
Thanks. The WebGL rendering is based on Three.js. We're using Rapier for the physics simulation, and Howler for the audio. Our game engine is responsible for all the controls and updating things like the camera position (which follows the position of the ball at every frame).
Why did you choose to do things this way instead of using Unity WebGL?
It's okay if the reason is, "because we make websites and the programming we know is Javascript" or whatever. It doesn't have to be about some objective comparison, like optimization or whatever, which isn't going to be true or necessarily matter anyway.
Unity WebGL is not supported on mobile and we needed the experience to be playable on both desktop and mobile browsers.
However, mobile browsers will be supported with Unity 6 web exports, still experimental currently AFAIK, but that should become a viable option soon.
> Unity WebGL is not supported on mobile.
Hmm... Unity WebGL has worked correctly on Mobile Safari since 2013. Support has probably been flawless since around 2019. It has been supported in all the ways that matter for a long time.
I wasn't aware of that. The Unity 6 Preview announcement from just this year had a lot of stuff around iOS and Android browser support:
From the article:
Android and iOS browser support has arrived With Unity 6 Preview. Now, you can run your Unity games anywhere on the web, without limiting your browser games to desktop platforms.
https://unity.com/blog/engine-platform/unity-6-preview-relea...
I should have said that it's not officially supported. For client work, we prefer not to choose an engine that may not work on a few devices and which we have no ability to fix.
Also no one wants to see a Unity Splash screen :(
I don't know if it's just my system or the particular games I've been playing, but Unity WebGL stuff always seems to take a long time to load. TFA loads seemingly instantly.
How many people worked on this project and how long did it take to develop? Nice job!
Besides people from the Netlify team who helped write the content and worked on some back-end aspects, the design and development of the game took around 8 weeks for a team of two.
How long till people start speed running this?
That’s really lovely and polished. Nice job…
Thanks for playing! Glad you enjoyed it.
Congrats on your work! You mentioned "using our custom render pipeline and shaders", can you please elaborate more on that?
add a built in timer and I bet people would speed run this thing
Thanks for playing. Actually, your time is displayed once you finish the experience (there are 5 levels in total).
During the project, we discussed adding a speed-run mode but ultimately had to drop this feature due to time constraints. However, we intentionally included some shortcuts in the level design with that intent in mind.
the purpose of the game was to force marketing upon the players. a speed run version would defeat the dwell time of the marketing on the screen. i'm sure the marketing department would not be a fan
Perhaps make it such that once you've completed it at 'normal' speed all the marketing messages are disabled, enabling the speedrun.
Surprisingly, you have to sit on the opening screen for a second or so before starting every run to get the best speedrun cycle for level 3. So I would say also with fast resets, it would be enough marketing even in the speedrun lol. (Coming from someone has spent hours speedrunning it so far)
For what it's worth our head of marketing was the one asking for a speedrun mode, but it just couldn't make the cut in terms of scope :)
and physics bugs, there are a few edge spots you can clip into and really send yourself flying!
release it on steam with the promise of multiplayer and it'll sell for $10
There is a glitch on the momentum level, where the marble gets stuck behind a wall after dropping into a hole.
I got stuck in the spiral slide on the same level. I got the impression framerate glitches are affecting the collision detection (common physics implementation pitfall). I could be wrong though.
Still, very cool. Too cool to waste on marketing in fact :)
Only the OP would know for sure, but it might be the case that this never would've come into existence were it not for the project to land the messages about the company.
Yeah, sometimes the ball does some crazy things due to the way collision detection works. We tried to optimize and avoid most of the issues but it can happen.
There is code in place to respawn the ball if we detect that it's stuck inside a block or wall, which can occur due to frame drops during the physics simulation. I'll try to reproduce this issue. Thanks for reporting it!
I was being malicious and dropped down onto the hovering pink cube outside the play area on the final level. Once you roll off that pink cube your respawn point is on the cube, leaving you stuck and unable to get back to the main course.
NBD but sharing in case you want this kind of playtesting feedback!
Haha same https://imgur.com/a/DHDSzPW
I ran into the same infinite respawn. Here's where it happened to me:
https://imgur.com/RFxyl1Q
I seem to have dropped through a wall while taking an elevator on the elevation level, it keeps respawning me in the void, so that was a game over =)
I hit the same thing. It killed me while I was dropping into the hole, then respawned me into the block, ending my game.
Did you employ any specific practices to keep it running at framerate in JS?
You might be interested in this nice write up: https://shopify.engineering/how-we-built-shopifys-bfcm-2023-...
Thats a great writeup for GPU perf improvements!
I was personally looking more for details on dealing with JS and its GC and keeping things smooth on that front.
How is the gameplay related to the information? The connection seems pretty contrived to me.
The glowing line represents a timeline of Netlify's milestones that you have to follow in order to discover their journey. No particular reason for the physics-based gameplay except to have a bit of fun.
Made my day. No notes!
This game is way better than it needs to be for a quick burst of advertising. Not only is the implementation fantastic, with perfect controls, but the level design is also great. I really enjoyed the multiple routes and the fact you can skip most of the advertising displays.
It seems such a shame that this isn't a full game. Removing the advertising and adding more complex levels with puzzles would make for a perfect little distraction.
> Not only is the implementation fantastic, with perfect controls, but the level design is also great.
I was surprised how well the WASD controls worked. Perfectly intuitive.
Mobile control smooth as well
I even triggered a back gesture by accidentally swiping from the edge when I merely wanted to move the marble, bringing me back to this HN page, assumed state was lost, but found the browser's forward button and it was like it never happened! I've never seen that in a browser-based game.
I did spot one control bug, which is that if you start holding down a key while/before spawning in, it won't register.
Check out Ballance:
https://www.gog.com/en/game/ballance
I think this is the first time I've ever seen an online game correctly tell me to use WARS keys for movement. Big props for handling non-qwerty layouts.
Great job optimizing too. Runs totally smooth on my 2012 macbook and its decrepit HD 4000 iGPU, which is no small feat for web-games these days.
Thank you! As an azerty user, I know the pain of using websites that are only designed for US keyboards.
If anyone's wondering, the getLayoutMap method from the Keyboard API is what we're using to handle international keyboard layouts.
https://developer.mozilla.org/en-US/docs/Web/API/Keyboard/ge...
do you have a technical writeup somewhere with tips and tricks like these?
That was enjoyable. I wasn't at all interested in any of the "Netlify facts" but it was fun to push the marble around and I'm impressed by how smooth the experience was. Well done!
I can't find anyone else mentioning this here, so interesting fact, marble madness was designed by mark cerny
https://en.m.wikipedia.org/wiki/Marble_Madness
https://en.m.wikipedia.org/wiki/Mark_Cerny
Who is better known for designing the PS4 and PS5.
Edit: can someone explain what netlify does? I visited the site, and while I appreciate it can be difficult to explain these things in marketing blurb, I really came away none the wiser (I work as a programmer so maybe I'm not quite the target market)
I don't know if its still the case but 5+ years ago, Netlify was a pretty robust Jamstack host with built-in CI/CD deployment via git if you didn't want to manage your own VPS.
Thanks
Kind of off topic, but Marble Madness was a large part of what inspired me to start programming. My dad played it when he was a kid and it made an impression on him, so he had me play it on MAME as a kid. I was blown away by the fact that computers can simulate (fairly complex) falling objects in an isometric space, but I couldn't figure out for the life of me how to reproduce that in Game Maker 7 at the time. When I got better at math, it influenced a project in my teens that's on my resume to this day.
Any chance this could get open-sourced? This seems like a great example of a lot of stuff for which there are few tutorials currently.
> This seems like a great example of a lot of stuff for which there are few tutorials currently.
Not OP but, what exactly you feel like is missing tutorials? It's a nice little polished experience, but I don't think there is anything particularly innovative or difficult to build with the resources that exists today. Or is there something in particular that looks/seems difficult from what they shared?
I disagree, I think the "nice little polished experience" is the difficult part.
In practice building something like this with resources that exist today can still mean a stream of issues specific to a given platform, browser, library, programming language, IDE, issues related to a combination of any earlier two and a yak that needs shaving[1].
Meanwhile this project is described as[2]:
> fully optimized for both desktop and mobile browsers, with user controls and UI components tailored for each device, ensuring intuitive navigation and interaction across all platforms.
If this process was easy and well documented, Netlify wouldn't hire an external agency.
[1]: https://en.wiktionary.org/wiki/yak_shaving
[2]: https://www.littleworkshop.fr/projects/5milliondevs/
> I disagree, I think the "nice little polished experience" is the difficult part.
Right, I agree, most of the time will be spent in the polish. But is there really no resources out there on how to polish? Assuming there isn't, what would you want a tutorial to contain to make it apply to a wider audience, as polish is typically hyper-specific to the project.
> If this process was easy and well documented, Netlify wouldn't hire an external agency.
Companies don't typically hire external agencies because something is difficult for them to do per se, but more that it would be wasteful for them to spend the time building something like that instead of focusing on things core to the business.
FWIW: I'm asked parent about this in order to see if there are actual gaps in the available resources today for what parent wanted to do, hence the question to specify what exactly they're looking for. I guess "how to polish" is a valid answer, but again, there are resources out there to help understand how to approach that.
> But is there really no resources out there on how to polish?
I didn’t mean “how”, I was after the examples. As in: what code, hacks and optimizations, results in this particular polished experience.
Yes, it is hyper-specific to the project; but this particular project is hyper-generic. It could be a nice starting point for other experiments.
You can't really compare the depth of resources that exists for something like React versus something like Three, which has a bunch of toy examples but no fully coherent experiences.
Companies like Figma have shown that there is a huge appetite for solutions built on top of Canvas or WebGL, but if you don't have the privilege of working for one of these companies that built up lots of proprietary building blocks from scratch, it's much more difficult to get started.
No plans to open-source at the moment, but we intend to share some behind-the-scenes info in the future.
Is there a page somewhere that tells me what netlify is on a technical level? All I see it marketing speak and I can't make sense of it.
Turnkey web hosting. Drag and drop your build folder, get a URL. Or point it to your git repo.
Github pages for when you need >1 site.
https://docs.netlify.com/platform/what-is-netlify/
I think you answered your own question. It looks an awful lot like a platform designed to lure non-technical people in with the promise of a magical, frictionless website building experience, ironically achieved by adding layers of abstraction and complexity into a regular web app.
Beautiful work, well done. It also made me remember a game I played a long time ago called Ballance[1]. Weird how memory works like that.
[1] https://en.wikipedia.org/wiki/Ballance_(video_game)
This was actually very fun, great work here! There was a PC game called hamsterball that I really enjoyed a long time ago; this brought back memories.
The controls don't seem to work for me. AWSD, only up and down work, unless I try to go diagonally, then it just gets "stuck" moving forever. Arrow keys no directions work unless I hold multiple keys down at once, then it also gets stuck moving.
M1 macbook pro, Arc browser
That's weird, the desktop controls are supposed to work regardless of your keyboard layout. Are you able to play with your arrow keys (which are also supported)?
Nope, arrow keys also misbehaving. Very vanilla keyboard layout. Let me know if I can provide something to help debug, maybe the key events
Really smooth, clean work. Didn't get a chance to monitor memory and network, but seemed pretty light, kudos!
Very nice way to show off some of the history of Netlify while making it fun. Congrats on 5m.
That's quite fun! I didn't know about "Marble Madness", but it reminded me of Cuboro [1], a (hardware!) toy that consists wooden blocks and allows people to create quite complicated marble runs that look very very similar to this game.
[1]: https://de.wikipedia.org/wiki/Cuboro
This is absolutely amazing! Very well executed, congrats!!
I was absolutely terrified at first that falling off would have me start again from the beginning, so I was very careful. Once I did fall and come back where I was I grew bolder which made it more fun. Maybe that should be advertised somewhere.
(I'm still unsure what Netlify exactly is or what it does but this will make me want to find out!)
Interesting. This consistently crashes my chrome browser whenever I get to the first glowing white checkpoint. But it's not like any crash I've seen before, the page reverts to a google search result I was on this morning. And the whole page is flickering white. That tab was closed long ago, but it seems something in this gets back to that state in memory, maybe a buffer overflow somewhere or something?
While on the google search result, the music from the game is still playing. If I open a new tab, the title of this tab changes from the google title to the netlify one, and vice versa if I change back.
In my experience, flickering often means a GPU-related bug. Sometimes scrolling or alt-tab would help. Sometimes a given top-level window would seem to become "poisoned" so all new tabs would be corrupt too.
[dead]
I am very curious how the physics feel realy-wordly for the most part at the mathematical level. Are there existing algos that define the gravitational pull of the "Facts" spots or was there a lot of tweaking?
The 45 degree rotation does require more dual input than I care for which makes me wonder if that is a design choice.
The physics engine we are using is Rapier 3D which does a lot of the heavy lifting, even though we had to tweak a lot the physics properties of the ball and surfaces in order to get something that felt right. For hotspots specifically, we implemented the magnet-like effect with custom code (by applying a force that pushes the ball toward the center and slowing it down at the same time) as there is no attractor primitive in Rapier.
The dual input is indeed a consequence of our isometric-view design choice, which I agree may not be the easiest way to control the ball. But the 45 degree angle just looks cooler in our opinion.
> The 45 degree rotation does require more dual input than I care for which makes me wonder if that is a design choice.
Well they say "A Marble Madness-inspired WebGL game" so there is not much choice about the rotation [1]
[1] https://en.wikipedia.org/wiki/Marble_Madness
The NES Marble Madness port (and probably others) had a choice of control schemes, where the D-Pad is either mapped directly to the screen (Down is down) or mapped at a 45 degree angle (Down is down-right). I never could wrap my head around the latter, but I can see the benefit given the stage layout mostly uses 45 degree paths.
The second scheme works pretty well if you can turn the controller 45º. I never had an NES but I am pretty sure some of the isometric games I played on the c64 and Amiga had this as an option.
Looking through the linked docs I see the physics frameworks.
Of all the programming I find the 3D gaming to be the most complex and unattainable at my current knowledge or intelligence level.
FWIW, you can mentally remap the keys to partially eliminate dual input. E.g. Pressing down and right together as a single input moves the marble southeast. This considerably simplifies game play for me.
I've been enjoying the quality and aesthetics of your studio's work. I would love for you to build a complete game or a longer experience, rather than only for marketing. I love where art and programming intersect. I would love to be able to create experiences like this myself one day.
Thank you for the kind words. We’re glad you enjoy our work!
We’d love to create a longer game someday, but making a living as a small indie studio in the gaming world is definitely challenging. Never say never, though!
Cute game. A lot more forgiving than Marble Madness though.
Needs a good enemy marble to come crack you and hammers too.
Thank you so much. This is a great game for my 6yo, it made his day! He loved it. We spent months looking for web games for 6yo without ads, dark patterns and distracting details, but this was the first one that really fit. I wish there would be more similar games.
It's wonderful to know that your child enjoyed our little game. Thanks so much for sharing that with us!
How is this without ads? It's sole purpose was to be a marketing tool and interrupts the game play with...ads.
These are ads in the original sense (to advertise something), rather than the modern sense (obnoxious attention-grabbing multimedia presentations); and all of them are skippable, save the victory screen. I do find it quite ironic, though, that the best ad-free video game I've seen this week is an advertisement.
This is exactly how I meant it. From the perspective of my 6yo, who can't really read yet or know what Netlify is, it was also never perceived as an Ad, but a game.
They possibly could/should add the qualifier of obnoxious ads. Many mobile ads are extremely obnoxious. Especially the ones that hide the "X" or place several "X"s in the interface so it's hard to tell where exactly to tap to get the ad to go away. This game is pretty classy and subtle in comparison. Kind of how Hacker News itself is an ad for YCombinator.
it's cute how you've come to accept the less obnoxious ads as okay. it appears the obnoxious ads have served their purpose.
Great fun and very polished! I'd love to try this with accelerometer based controls.
Wow, this is nice. I don't know, but is it possible for us to study code for this? I would love to see how all of this is built.
I can understand you might have commercial obligation, so hoping Netlify can make this public :)
I would check out react three fiber if you want to see how people are building things like this. It essentially brings a component model to three js development and creates good standards for sharable code since things are just react hooks.
Rapier was brand new when I was making things in R3F 2 years ago. Glad to see how mature it’s gotten!
Thanks! Sorry there's currently no plan to make it open source at the moment.
On iOS, sometimes it scrolls the page and pressing and holding opens a weird right click magnifier and releasing it a share option on the top left?
Those jarring little things seem to just never disappear from modern browser games.
Beyond that it‘s amazingly fluid.
We tried to implement a workaround for that [1], but for some reason it still shows up from time to time. I really wish iOS Safari gave developers a way to disable these gestures!
[1] https://discourse.threejs.org/t/iphone-how-to-remove-text-se...
Also there are spots from which you can fall that lock you in a revival loop.
https://imgur.com/a/L5PV0HX
I am very sure scrolling is related to popups when you roll over popup points.
That is very cute. But even after hitting all the white dots, it's not clear what their product is? A web framework? Hosting? Cloud services?
15 mins 31 secs, including reading all the promo material.
Got stuck in a re-spawn loop : some collision detection failed in level 4 at the start of a standard 30° incline, the ball fell through, and was re-spawned at the same place resulting in falling again, locking me in loop.
On chapter 2 I liked figuring out how to skip an entire section.
On chapter 3 I fell through the checkerboard immediately the first time; this seems like a bug.
On chapter 4 there are enough paths that it's possible to get slightly lost and not know which way you're supposed to follow the line.
On chapter 5 it's possible to fall onto an isolated island (the pink cube, under the lip) and get trapped forever. I would suggest making "only blue saves your position" a consistent rule rather than the current randomness. At this point I gave up and didn't want to try again from scratch.
Anyone who wants a full game of this, try Ballance:
https://www.gog.com/en/game/ballance
There's an easy shortcut in the second level past the climb on the pink pipe and before you climb the ramp where you can jump to the semi-circle on the lower platform on the other side. Love it!
The ASDF controls are absolutely backwards while the cursor controls work.
It's WASD on QWERTY.
Great implementation, very enjoyable. Any chance that you will use this foundation to make an actual game (I mean, challenging, with scores/time/etc., and without the marketing component)?
I have always missed a worthy sucessor to Marble Madness. I have tried several partial implementations or demos inspired on it, like this, but never an actual full game with the same philosophy (maybe there's some I'm missing, in which case I would like to know, of course).
Thanks. There's no current plan to turn this into an actual game but I agree it would neat.
Alright, alright. Where are the speedrunning leaderboards for this ?
I got 2:57 after discovering a few shortcuts
Amazing, as the developer of this game, I wasn't even aware that you could make it under 3 minutes!
I'm by no means a speedrunner but decided to record my runs in case I got a sub-3. Just uploaded the 2:57: https://youtu.be/0THaZ61sCmg
I challenge someone to beat it!
Oh wow, looks like someone uploaded a 2:55 yesterday: https://www.youtube.com/watch?v=G6yExxPR1vI
Wow, learning that people are sharing speedruns on YouTube totally made my day!
This will probably be my last run (2:49): https://youtu.be/zIyZJjyPy8U
Kudos on a great game! If you ever expand or open source this, let me know. The mechanics and design are great and could really blossom into something fun and expansive (especially if users could submit levels).
I got it down even further! 2:47! https://youtu.be/3v2v5ptOT5Y
Awesome, congrats on your 2:49 run. Sure, we'll definitely let you know. Probably won't happen but I would love adding a level editor. Thanks!
Oh someone showed my time haha ^_^
There are definitely some neat skips available.
That's really great!
The one game that I used to love, but never got translated into the modern world, is Oxyd[0], which was later re-released (in a fashion) as Enigma[1].
[0] https://en.wikipedia.org/wiki/Oxyd
[1] https://www.nongnu.org/enigma/
Incredibly cool! Also, I had no idea how early I was to Netlify. I guessed something closer to 1 million, but apparently I was one of the first 5,000.
Nice job! You just need to have it so if the marble exceeds a certain Y velocity threshold that it shatters and a dust pan appears to sweep it up.
Its been a long time since someone built something like this for the web. Praystation was a long time ago. No one has really followed up since then.
Great game! On mobile, feels like the joystick is a bit too sensitive. Ie: I move my finger a tiny amount and the ball goes flying.
What's your company called?
Thanks! Agreed that the mobile experience can sometimes be a little difficult compared to the desktop version. It was hard to get right, and we may have set the ball speed a bit too high.
Our studio is called Little Workshop. You can find more info about us here: https://www.littleworkshop.fr
Neat. I loved Marble Madness. It was one of the first games I got for my Amiga, back in the late 80's!
Super fun. Loved the rubbery sound design.
I’d want to watch the CEO host a speed run stream.
Actually, we used a recording of a basketball for the sound of the marble bouncing. It wasn’t our original intention, as we initially imagined the ball to have more of a metallic quality. However, the rubbery effect kinda works, I guess. :)
Hopefully constructive: Touch controls. If finger is lifted off, even for a second, new "center" is registered, which makes it quite hard to control without looking where the"center" is. Nice soundtrack, quite relaxing.
I wish I had code access to this, I would make a multiplayer mode using https://docs.joinplayroom.com/usage/threejs (my project)
Fun game, but I soft-locked myself https://imgur.com/a/DHDSzPW Took a few tries to get there, but I don't think there's a way out
I’ve heard people claim they beat the original marble madness, but I don’t believe them.
There's proof!
https://www.youtube.com/watch?v=vskQsSJ_IJg&ab_channel=hirud...
Watching a playthrough I was surprised to see I'd never seen anyone get past level two.
such an absurdly difficult game, especially when playing with old school NES directional inputs.
That’s incredible!!
Btw, how did you started making a creative tech studio? That’s something I want to do but I’m kinda lost on the selling part. How do you sell to a business that earned media is worth it?
Thanks so much! With a bit of luck and talking to the right people at the right time, we got our start when Mozilla gave us the opportunity to create technical demos for the release of Firefox 4 back in 2010. Among other demos, we created a game called Mozilla BrowserQuest at the time, which really set us on the path to working on creative, tech-driven projects through word-of-mouth. These days, most of our clients are already excited about creating campaigns that can spark conversations and generate organic sharing, so we don’t usually need to sell them on the concept—they come to us because they already believe in its potential.
I have to say, this is perfect execution. Now, if cloudflare made an equally great Oxyd inspired game the marble game sentimentalist edge computing nerds among us would be content.
Gives me nostalgia for Gyroscope: https://youtu.be/T3RtojpRc2M?si=nkDpJtJ_lzs5xOP8
This is so cool, it feels great! The ball has the "feel" of a putty ball, bouncy but not a lot just enough. Probably a lot of thought went into this and it shows.
i got a few questions:
- you say it's built with three.js but you also use rapier. How does that work / integrate? I see one is JS frontend thing, the other rust engine
- how did you design levels, with what?
The rendering engine is using Three.js which is a WebGL library. The physics/collision detection code is using Rapier through a WebAssembly module available on npm [1], which means that it can be used on the web even though it's originally written in Rust.
The levels were built inside the Unity Editor, then exported to FBX, then went through a pipeline based on Blender python scripting that optimized their geometry, assigned materials and exported them to GLTF (the final format that we load in the browser).
[1] https://rapier.rs/docs/user_guides/javascript/getting_starte...
How did you assemble Rapier colliders from GLTFs?
Nothing complicated, we simply have initialization code that parses the GLTF scene on startup by iterating over the children of a specific group, and creating Rapier colliders for each of them (Triangle Mesh Colliders to be specific, in order to allow things such as curved ramps). Since their geometry is very simple, we can use directly the rendering geometry for the collider geo.
thanks for answering! Interesting you used unity for level layout. Interested to hear the advantage here. Considering you already use Blender down the pipe, how come you haven't used Blender for it or any other dcc app lile maya, max, whatever?
The main draw of the Unity Editor for us is how it auto-reloads assets, like 3D models, as soon as the asset file is updated. So the workflow is having your DCC app open in which you model things and export assets from, and Unity Editor to design your level where every model is always up-to-date.
This is not possible with Blender because it contains all models inside a single .blend file, so assets must be manually re-imported each you change them. There is a Link feature in Blender but in my experience it's not as good as what Unity does out of the box.
interesting! I haven't got much into blender, but sounds rather basic functionality. FWIW Maya has that since forever.
Not the dev, but Rapier has a JavaScript binding through WASM. And you can design the levels with a 3d tool like Blender, then script out the animation.
Great work. Are there any plans to convert some of the code to OSS?
I got stuck in the second chapter. Went into a tube leading to a spiraling green slide and my ball reset... to the interior of the block. Oh well, cool project.
Thanks and sorry you got stuck, we made our best effort to prevent these situations from happening but apparently they still do.
Could you explain more on:
> The 2D content is overlaid on the WebGL view using CSS 3D transforms for a seamless integration with the 3D view.
Maybe a simple example of this with code?
We use the CSS3DRenderer from Three.js which automatically applies CSS transforms to DOM elements.
More info here: https://threejs.org/docs/index.html?q=css3D#examples/en/rend...
And some code samples from the Three.js website: https://threejs.org/examples/?q=CSS3D#css3d_periodictable https://threejs.org/examples/?q=CSS3D#css3d_molecules
Question unrelated to the game specifically - how does Netlify quantify the number of developers? How does it know/guess that it is 5 million?
presumably "select count(*) from users" :)
In fact, apparently they now have 6.6M (just signed up for an account and saw what the number said)
Minor -- the date on the Riot Games video "stop point" is likely wrong. It says 2024, but based on the timeline it should be 2023.
Thanks for reporting!
Hello, really amazing work, well done! Just one curious question: have you made the background music yourself? if not, can I know the name?
Thank you! The entire soundtrack was composed by this artist: https://www.pond5.com/artist/avifauna
Nice, I did manage to get a respawn point where it immediately died causing a loop. On Elevation.
Still have no idea what netlify is or does.
Have you considered using R3F for this project? Also curious, why did you implement a custom renderer pipeline?
There's a glitch in the velocity level. My marble keeps respawing and the game is stuck in a refresh loop
On the last level I ran into one of the raised blocks and tunneled into the cubes. I could still roll around inside, lol, but there was no way out.
Brilliant game! I know it probably won't happen, but I would loove to see the source for this.
It's buggy. I got stuck in the blue "pool" in the last stage, under one of the green ramps.
This is great! Fantastic work. You should port a game like this to steamdeck, it would be a huge hit!
I was hoping to control the marble with the IMU of my phone... is that a planned feature?
Unfortunately, we have no plans to add new controls to the game at this time.
I'm here just for the game.
If you move fast enough, you can glitch the ball against the slides and get stuck.
Speedrun any% category coming soon?
Nice game, although I would expect to be able to use the gyroscope on mobile devices.
The issue with using the gyroscope is that the Device Orientation API requires websites to request user permission first (at least on iOS Safari), which we feared might drive away too many visitors.
It could be a game setting, no need to be by default.
Wow! So beautifully designed and smooth, brought many good memories...
This is fantastic!.
Time to start speed running!
4 minutes and 31 seconds, any%. Need to do some better routing.
4 minutes and 21 seconds after few more attempts.
3 minutes and 59 seconds. Sub 4 is good enough for me :)
My competitive side got the better of me and spent too long playing this :|
3 minutes 33 seconds after ~10 attempts
routing is definitely fun, I enjoyed figuring out which bounce pads to take
---
3:20 after some more tries, I think sub 3 is possible
3:14 even with the game glitching me into the abyss on the last level :(
I got 2:57 — required a near-perfect run but still room for improvement
4 minutes 58 seconds.
I'll post my slowest time at the bottom of the stack: 5 minutes and 59 seconds didnt work on FF, and only 1/4 screen on brave index-dffbfc39.js:4603 expected expression got ?
Anyway great fun, and much easier than what I remember of the Amiga version, very forgiving controls, thanks and well done.
3 minutes 25 seconds here
It needs more gravity for the marble to roll down slopes better.
Seems like the ball is 0.5m in diameter, if you treat single wireframe texture tile as 1m. Gravity seems to be correct for the ball of this size (although linear dampening aka air resistance is quite high).
I think this is intentional, since higher gravity/smaller ball would significantly raise difficulty.
Would love a multiplayer PvP version of this, a la Fall Guys.
does anybody remember the name of the board game that you turned knobs on the outside of the box to tilt on the x/y axis to drive the marble around the board?
Pretty sure it was Labyrinth.
Thanks. Although, just searching for Labyrinth board game brings up things not what I was thinking about, but it was the correct name and got me there.
Here's what I was thinking of (at least in type):
https://www.sunnywood.net/product/60-hole-labyrinth/
Just fantastic!! Loved it.
would really like to know how this was made.
That was fun, thanks!
This is a really neat concept! Thanks for sharing.
this gives me an idea... what if you keep everything about the game the same but change it to hjkl navigation for vim learners?
I love your work, especially browserquest!
That is really well done, congratulations :-)
I like it. I will share it with my friends.
personally couldnt care less about netlify but still played all 5 levels cause they were just fun, kudos
So uh, don't try to make the jump from the pink elevator to the solitary pink cube on the last level. If you make it, you're stuck there forever! (I thought it would be a skill jump to an easter egg)
yes but do they still bill you 170 000$ even if you have the free service??
Pretty fun simple little game!
This is fun but it's buggy. I randomly glitch out and get forced to respawn :(
Phone gets hot fast
This is amazing!
Very fun. I played all the levels. Thanks for sharing.
Well, I'd love to know what Netlify does, but...
#1. I could not find pricing anywhere.
#2. The "ROI calculator" steered me to enter in my name, e-mail, and phone number. I don't want to sign up to get spam from a salesman just to find out the basics about some tool or platform.
#3. Wikipedia's page for Netlify has a content warning that the content appears to be an ad brochure, but at least it said this:
"Netlify is a remote-first cloud computing company that offers a development platform that includes build, deploy, and serverless backend services for web applications and dynamic websites.
The company enables building, deploying, and scaling websites whose source files are stored in the version control system Git and then generated into static web content files served via a content delivery network."
Still have no idea what Netlify does (beyond what I can already do with git with a few clicks), or if it's right for our team, or if we can even afford it.
The Marble game was quite fun, however...
#4. The main thing that stuck in my mind from the little "milestones" about Netlify was that they changed their logo. This may seem significant to the Netlify team, but is completely irrelevant to the rest of us.
#5. The second thing was that they "bought Squirrel, an open source"... it is rather dystopian to hear that someone "bought" an open source platform.
Since we have a few Netlify people posting here, please feel free to correct my ignorance or point me in the right direction.
Used Netlify back in the day (prior to Cloudflare pages / workers sites). The experience was largely smooth. HOWEVER, pricing was both opaque and prone to explode without warning, with little to no way of setting billing limits. Ultimately, that was too risky for the kind of small-ish projects I'm running. They had the Netlify CMS for a while, which I quite liked. But that's gone now. Be interesting to know what their USP is over CF Pages.
Just in case you haven't seen it, there's a new free plan with no overages for small projects that you don't want to worry about overages for: https://www.netlify.com/blog/introducing-netlify-free-plan/
Netlify is Vercel before Vercel.
Netlify being related to Gatsby and Vercel being related to Next.js.
Not exactly. More that Netlify started as a no-devops-needed static website hosting platform, and gradually branched off into value props that naturally fit into that starting point.
Vercel (formerly ZEIT) basically did the same thing.
Since founding, both companies have raised an insane amount of VC money, making them both unicorns by valuation a few times over. Though imo it remains to be seen if this was actually a good investment. Neither company seems to have fully made good on their business model, which is quite similar in both cases: encourage and allow devs (or non devs) to do the absolute bare minimum of work in exchange for hosting/bandwidth/etc prices that many consider exorbitant.
> The company enables building, deploying, and scaling websites whose source files are stored in the version control system Git and then generated into static web content files served via a content delivery network.
That’s the meat of it. It’s Heroku for statically generated websites or websites that can run as lambdas. Pretty limited but very fast for those purposes cause everything is handled by edge servers rather than primary data center servers.
Netlify CEO here.
I spotted Little Workshop when I saw https://equinox.space/ on Hacker News and noticed it was running on Netlify. Loved the fluidness, speed and art direction of a game running directly in the browser and working smoothly on my phone.
Immediately thought of them when we started thinking about a 5 million developer celebration and reached out. Love the result :)
We’re very grateful for the opportunity to create this experience! Huge thanks to you and the Netlify team for supporting innovative campaigns like this one.
I knew I recognized the feel of this project. It did quite well on the front page [0]. Hopefully you and others keep hiring them so we can keep enjoying their work!
[0] https://news.ycombinator.com/item?id=40113013
So i have to say i saw the headline on the frontpage and clicked the game before reading the post.
I have no idea who netifly is... and thought lets have a fun time playing.
While the game is visually well made, i gave it 3 attemps and all 3 times my ball dissapeared at some point into the floor and got permastuck. :/
[dead]