Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Balancing game for the mobile browser with increasing difficulty (balanc3dgame.com)
338 points by nargaw 10 days ago | hide | past | favorite | 102 comments
I made this 10 level Game. Excited for people to try it. :) Stay Balanced :)





Nice work! Some thoughts:

The camera is tilted instead of looking straight down, and my phone needs to be flat to be in the no movement neutral position. This is unpleasant in to ways: How I'm sitting right now makes it hard to look at my phone while it's flat; it would be much nicer to be able to set my neutral point so I could play with the phone mostly vertically. The combination of flat phone and camera angle is awkward, as when you're looking straight down at the flat phone it looks like the level is tilted, and the ball should be rolling. If you're sticking with flat always being neutral, the corresponding camera angle should be from directly above, imo.

After trying the phone and dying, I ended up playing on the desktop with the arrow keys, much more pleasant.

Your light is coming from a direction where the magnitude is the same in x,y, and z. This means there's no difference in shading between three of the visible faces. (Or, you're using shaders which does this for some other reason.) This may be an intentional choice on your part, but I think it'd probably look better with a light angle which gives more definition to the geometry. Especially the level text suffers from this.

On the last level, is the spinning obstacle at a slightly offset pace from the first moving platform? When I first saw the level, they were very poorly timed with the obstacle sweeping past where you'd go to get on to the moving platform right as the moving platform came closest. Waiting a bit seemed to slowly improve the situation, and I eventually got tired of waiting and just went for it. Still unsure if they're actually in sync or not.

I died the third time on the last level, and called it quits when it put me back at the start. A very harsh punishment.


Third death being a reset to the beginning is indeed a harsh punishment.

I was expecting to have three balls but the UI makes me feel like I should 4.

Yeah, that is where i said to myself “f-this, you are not paying me enough to put up with this” and closed the “game”

I think setting a different “up” point ruins the metaphor and you’re trying mentally map tilting into arrow key inputs.

I’d recommend instead forgetting that your phone has an up. Hold it in landscape and rotate it as needed to get the angle you want before tilting.


+1, tilt should be dampened towards the natural orientation the phone was in during initialization

For the last level, you can get onto the moving platform on the first cycle if you're quick

Awesome! Make it a daily Wordle-style game! I need something new in my morning routine.

I think having a universal 3-life max is very harsh. I died on level 9 and was sent back to level 1. No way am I going to do the first 9 again, so I won't find out what was on 10.

I think it would be more casual friendly to have infinite repeats in every level, but you could have a total count of deaths, for people who care about their score.


Tempest had the best implementation of this. Every 3-4 levels was a checkpoint and with 3 lives as long as you cleared at least one level, you can start at your last checkpoint. If you died 3 times without completing the level, you have to start at the checkpoint below.

One of the first big games on the original iPhone after the App Store was shipped was “super Monkey Ball”, a port of a popular console franchise. It was basically this but with fancier graphics, many more levels and mechanics and cute characters. I remember being amazed how well it worked with the phone’s accelerometer and how good it looked back then. Hard to believe that was ~15 years ago already.

[0] https://supermonkeyball.fandom.com/wiki/Super_Monkey_Ball_(i...


If you liked monkey ball you may like Marble Blast, it even runs on web https://github.com/RandomityGuy/MBHaxe?tab=readme-ov-file

It is cool, but having to redo from the first level after 3 drops kills the fun for me. Of course some would like that aspect, but for me as a casual fun game it's a no.

I felt the same way at first, but it's ten levels, so you'd be done in one session if you could redo every level infinitely. This extends the fun a bit.

It’s ok to be done in one session

Replaying a level is boring


After 10 levels, it could be the same levels again, but with a time limit that gets shorter for each cycle, or something else to make it harder, like wind that blows the ball off course and changes direction all the time.

I think it very much extends the non-fun bits of the thing.

Marble Madness vibes. One of my favorite nostalgia games.

I think having 3 lives per level with it resetting just that level might be better for starters, then the 3 lives for the entire game being a “hard mode”.


> Marble Madness vibes.

Those are the exact words I head in my head while playing as well. I'd love to see a remake on modern devices.


For me, this took me back to Marble Blast Gold. An early 2000s game with essentially the same concept.

Great fun :-)



Very cool! An issue I immediately had is that it seems to be coded for a horizontal plane being zero. This means I must hold my phone looking down at it, which isn’t how I want to hold my phone.

One idea is to sample orientation for a little bit at start, then consider the average to be zero. Then have a button that zeroes motion to whatever it currently is as a backup.

That way I can play your game without getting up from bed just yet.


My neutral position is tilting away from me, even. Not ideal but fun game either way. Reminds me of Oxyd: https://en.m.wikipedia.org/wiki/Oxyd (I've only played the nineties mac version)

Oxyd was core to my childhood gaming as a Mac-only household. Theres a free version called Enigma that has the Oxyd levels by the way!


I feel like that would make intuitively finding the zero point hard. At least with the zero point being horizontal, all you need to do is look at the world around you and see which way things fall.

You can always have a “bubble level” showing you the orientation. Anything is better than requiring a player to orient themselves very specifically to play at all.

You can get the ball off the ground if you turn your phone upside down. Then you can just sort of fly over the places where you'd normally fall. Takes maybe a minute or two to complete all the levels.

In zoom meetings, I prefer this one, based on "Knot Theory": https://brainteaser.top/knot/

Not sure I learned anything about Knot Theory from playing this, but that was fun.


When you put Smartphone upside down, the ball will fall up

I wonder what could be done with a Super Mario Maker style community of people who make obscenely difficult maps. I guess maps where you have to hover the ball by rapidly flipping the phone would be just the start.

Came here to say the same. Also one can combine that with extreme tilts to accelerate massively and win easily

Idea: It would be super cool if the camera angle also shifted a bit when you tilt your phone, making the level look more like a real object. You would have to assume the relative position of the phone from the viewer, but that assumption is already being made (given that the view of the level is not from directly overhead currently).

I lost a bunch of times on level 7 and then was sent back to level 1. Is there a way to avoid redoing completed levels?

This is what we like to call a "skill issue".

Get better, then you won't have to redo any of them ;-)

BUG: If I make it to under the finish square by accident (falling off right before the end of a level), it still counts as a win when it should count as a death.

having only 3 lives for all levels is a bad idea imo

Gave up once it started again from scratch, its not fun just re-doing all the levels to try again


So to clarify:

With infinite lives, it would have guaranteed you made it to the end, at which point you would stop playing anyway.

So in both cases you stop playing, but at least in one of the cases the game remains hard for people who like a challenge. Win win!


Modern game design would suggest it’s better to simply put a death tracker for those who want a challenge rather than impose tedium on those who just want to play the game casually

“Stop playing” is not a meaningful metric


A win win would be if both types of people were happy, but the status quo frustrates one of them. It’s only a win if you stop playing because you’re satisfied, not because you’re annoyed. Games are supposed to be fun.

Plenty of games have a “zen mode” or “story mode” or “explorer mode” or any other kind of name to enable an option where’re you’re not severely punished by mistakes. Better yet, they usually allow you to switch modes mid-game. Which means you can progress at your own pace and appreciate everything without getting stuck and rage quitting.

Anecdotally, even if I never turn those modes on I find that the games who have them tend to be more fun and better designed in terms of difficulty progression. Examples include Celeste and Cross Code.

For this game, such a mode would even allow someone to see all the levels or practice in one where they’re stuck and then try again with lives turned on. That would be a win win.


This is some insane logic. The goal of the game isn't just to get the player to stop playing. Obviously two players haven't reached the same point just because one quit because he doesn't want to replay the starting levels again. This is known as "artificial difficulty".

The fear of needing to start all over adds a lot of suspense, which is cool

I'm so grateful for all the feedback and suggestions. Thank you!!!

Here is a link to the repo: https://github.com/nargaw/Balanc3d_game

Twitter: https://twitter.com/nate_dev_

If you had a great time and want to support the project: https://natedev.gumroad.com/l/balanc3d


you can speedrun by playing with the phone screen facing down. tilt it slightly and the ball will go super fast. you can sort of "fly", too, and climb up walls. i got to level 9 in like 30 secs like this

Can confirm. "Finished" all 10 levels in a minute on my first try of this strategy. Maybe the end detection area is too high...

Awesome. Thanks. I made it to level 10 like that

Didn't work on Brave on Android, but it did work on Chrome :)

Kind of fun


I'm on chrome on android and it's not working for me.

I see 3 dots on the left, a 1 on the right, but nothing seems to happen when clicking/swiping


You have to tilt your phone.

And Firefox

I liked it - thank you.

Can I suggest that you put something like “hold your phone flat and face up” On the instructions / landing page

And make sure the start button can be seen in landscape mode

I gave up and it’s only because HN gave me those hints that I got tomplay at all

But - well done - you shipped ! Brilliant :-)


Doesn’t work on ipad? I can click Start, but in the next screen nothing reacts to input.

Cool game!

Level 9 made me realize there's some inner dread deep within me when it's about playing web-based games with mazes.

Especially for those where you can fall off the path.


It doesn’t have a privation aspect but if you like games like this you might want to check out “Road to Ballhala” [0]. I haven’t completed it yet but I’ve been enjoying it quite a bit. The “dialog” is very well done.

[0] https://store.steampowered.com/app/425410/Road_to_Ballhalla/


Finished all levels without falling at once. Great game!

A leaderboard for speed runners would be interesting :)

What engine / library was used to make this?

I have no idea which engine, but the minified source has this in it

https://www.balanc3dgame.com/assets/index-53e87cdf.js

* react-dom.production.min.js * react-jsx-runtime.production.min.js * react-reconciler-constants.production.min.js * react-reconciler.production.min.js * react.production.min.js * scheduler.production.min.js * use-sync-external-store-shim.production.min.js * use-sync-external-store-shim/with-selector.production.min.js


It turns out it's just ThreeJS (react-three): https://github.com/nargaw/Balanc3d_game

Managed to make it through by only losing a life on Level 6. The last two were very scary (and I think I got very lucky on the last one).

But I guess I played enough Super Monkey Ball as a teen to still have a lot of practice for this.


I was laying on my back. Started up the game without resetting my phone to a flat state. Then the ball fell off the map. No automatic reset like the other levels.

Maybe this is a speed run tactic that can be used later ;)



I did it with arrow keys on desktop. Got lost 2 lives at level 9 and got frustrated so I hit full throttle ahead and basically bounced over all of the gaps. Then on mobile got to level 5. Cool! Thanks!

Arrow keys! Thank you! I could not figure out how to do anything.

Nice. I made one where you should guide a sphere into a hole a few years ago. It was in 2D and I don't think it worked all that great. I'll see if I find it and post it here

Awesome work Nate!!!

I’ve been following your work ever since that Lightning talk on Three.js at the Carolina Code Conference. You’ve got a lot of talent and motivation, which is a killer combination.


Create a webapp from it. The typical usecase for an installable version. Add service worker and a manifest.json. that way on android phones you have an icon.

Needs to have some visual feedback of the orientation. Also the ball is too heavy & slow. And as someone else said the perspective is wrong.

The ball can pop over the sides near the start. When this happens it falls forever without triggering the next life

Very responsive; can't say the same for most browser games so well done.

I managed to complete it in one shot. The old dog still has it :)


I'm extremely disappointed to learn that Firefox allows access to motion sensors by default and provides no option to make it ask for permission. It can only be disabled completely but this silently breaks legitimate uses like this one. This is a privacy nightmare. There is so much that can potentially be inferred from motion data, like user identity, mode of transport (maybe even location), what they're likely to be typing in the url bar or in an iframe, emotional state, a bunch of health information...

edit: Nice game, though. I wonder what it's made with. There seems to be a huge amount of generated shader code in the js. I wonder if that could be avoided.


I like it!

Unsolicited improvement suggestion: When I finish a level, let me see how well I did compared to others.


very good idea

Extremely well done! I didn't know you could access gyroscope from the browser.

Suggesttion: Have a button where people can "zero" their phone orientation.

Looks good!


Nice. How did you build it?

Looks to be React with Three.js. No GitHub repo but source can be seen using dev tools.

Three.js games run fine on my old phone. Even with physics! Buttery smooth.

React games however (even 2D ones) are a slideshow.


Doesn't work on Chrome for android. Mid range android phone though

Works like a charm on my Pixel 7.

Nice and very precise. I was expecting controls to be less reactive.

Nicely implemented; controls felt very intuitive on the keyboard.

Nice! I would like it more without the "lives" though.

The ball just falls off and then endlessly falls through space…

The keyboard controls are particularly satisfying. Well done.

I'm unable to go forward. I'm using arrow keys.

It's accelerometer based, though arrow keys do seem to work for me on Chrome / Linux

Arrow keys also seem to work on Firefox 126 Beta / Linux for me

Yeah, the arrow keys also work on IE4 in Win98. No accelerometer though.

Worked for me using A/S/D/F

very nicely done with all the graphics and motion. One thing i would add is autofocus attribute on the next button so that i just have to hit enter.

This is awesome! Makes me wanna play Monkey Ball!

very cool, I enjoyed this. One stupid random idea -- have a tiny pet or human running in the ball.

Absolutely love this! Well done OP!

got to level 8 and gave up but this was very fun could be better with changing camera angles

this has the feel of an old game called Ballance ... it was amazing and begging for level editor.

Amazing job.


Very cool game!

Doesn't work in Firefox for Android.

Also doesn't seem to work on FF for Windows. Can click thru initial [Start] screen, but no clicks are effective on the initial game screen showing the layout and [start] (at least none that I could find).

You may (like me) have been trying to interact by tapping/dragging/etc.

You need to physically tilt your device to play.


No, tried to tilt, no effect. I didn't get any permission prompts either.

It worked FF/Android for me, but it froze for a second every so often.



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

Search: