alexanderperrin 5 months ago

A couple of years ago I produced this as a study into procedural heightmaps, shadow mapping and online geometry loading with Three.js. I had big plans for it but abandoned it half way.

I found it on my hard-drive the other day and thought it might be worth putting up in the case that it's of any use to anyone! The project is full of performance issues and other weird things but hey I hope it's worth something! Enjoy.

Code lives here:

Works on desktop and (most) mobiles. You can use the arrow keys or touch the screen to move the balloon.

  • salzig 5 months ago

    Im surprised, ever and ever again, how well this works on mobile.

    • alexanderperrin 5 months ago

      Super glad it's working for you! May I ask what sort of device you're using? I'm quite curious.

      • dvh 5 months ago

        To give you second data point, it crashes (probably OOM) on my $39 phone.

        • swiley 5 months ago

          Where do you get a $39 phone?

          • dvh 5 months ago

            It's myPhone Pocket, Android 6, 512MB ram, 4GB flash. I found it now cheapest for €42 [1], year ago I found it for €39. The only downside is that default apps cannot be uninstalled, that makes the phone almost unusable. It was never locked to any carrier. It's dual sim but I never had sim in it, I use it only as pocket-wifi-browser (102 grams!) and for app development.


          • vasiliys 5 months ago

            BestBuy has "disposable" androids - probably subsidized by the carrier they're locked to. Just checked - $25 for an ATT phone, used to be $30/$40 with/without sale.

            I'm certain other places do too.

      • saagarjha 5 months ago

        Works great on my iPhone SE–better than it does on my MacBook Pro.

      • knolan 5 months ago

        Works great on my iPhone 7.

      • jbay808 5 months ago

        It runs beautifully on my Sony Xperia XZ1 compact. Firefox. Very nice.

      • zius 5 months ago

        Works flawlessly for me on a Pixel 2XL, quite surprised.

        • osrec 5 months ago

          On a high end phone such as yours, it should not be all that surprising that the performance is good!

          On my low end Samsung J3, it is rather choppy, but I feel it can be improved, given that this animation is lovely and smooth:!/en

          I think people assume rather quickly that animation in a mobile browser will be janky. Truth is, if done well, it really doesn't need to be.

      • tnolet 5 months ago

        Gorgeous, and works better on my Ipad than my Macbook. Does anyone have any idea why?

        • alexanderperrin 5 months ago

          Same goes with me actually. I'm not entirely sure but I think most of it is attributed to the huge amount of optimisations and refinements that have gone into the modern mobile GPU's. While the mobiles don't seem to be quite as diverse in their capability, they excel at what they can do!

          The future is a strange place.

      • tlarkworthy 5 months ago

        Runs about 7fps on budget Android Samsung J530F, which cost 160 euros.

      • webb5 5 months ago

        Microsoft go/firefox working perfect. love it.

        • arcbyte 5 months ago

          What so you use your Go for and does the battery life bother you?

          I want one, but 4 hours seems too short for me

          • webb5 5 months ago

            Was a present, and is treated as a play thing. General low level use gives about 6 hours, browsing and word etc, but if pushed by a game or couple of vbox nix v-machines (just to see if it could) about that 4 hour mark. As a secondary device it's not been a problem, and it charges pretty quick.

            It's a nice thing. Best feature is the flap, imo. all tablet-like devices should have them! I've not got the proper keyboard, but am tempted.

      • BiggusDijkus 5 months ago

        €380 Pocophone F1 with Chrome. What an eye candy!

      • dublo7 5 months ago

        Moto g6 play smooth as can be

      • punnerud 5 months ago

        Works great on iPhone 6!

      • rolleTx 5 months ago

        Works in my iPhone XR

      • salzig 5 months ago

        iPhone X.

        • nullandvoid 5 months ago

          S7 here on firefox and chrome @ 15-20 frames, looks like my phone is a little dated!

  • androidgirl 5 months ago

    This is awesome!!! Amazing work.

  • johnmarinelli 5 months ago

    Nice pastoral-feeling work. In the readme you feature "Shore detection algorithms for boathouse placement". Does the algorithm have a name, or did you create it from scratch? I'd be curious to learn how it works.

    • alexanderperrin 5 months ago

      Thanks! I actually can't remember exactly how it worked, but I think it was a pretty simple process of selecting points at the level of the water combined with some sort of normal calculation. Just used it for placing the boathouses in semi-logical locations.

      I should probably take it out of the readme just in case someone gets all excited and then disappointed when they realise it's all smoke and mirrors and nonsense. Ha!

lucidstack 5 months ago

Perhaps not as technically impressive, but this [0] other short game/experience from the same creator is extraordinarily charming and well produced!


  • mcjiggerlog 5 months ago

    That was absolutely beautiful! Props to OP.

  • kumaraman 5 months ago

    I feel like this was a part of a chrome experiment in the early days of html5.

  • cptaj 5 months ago

    Love it

pasta 5 months ago

Press space to see the world from another side.

Use the left and right to 'steer'.

Also checkout his Short Trip which was posted here some time ago:

  • nickthemagicman 5 months ago

    How was short trip made? That's super dope

    • alexanderperrin 5 months ago

      To put it simply, I hand drew the whole thing and then scanned it all in! Took about 2-3 years of (learning) programming, illustration and general R&D.

      • pasta 5 months ago

        My kids love it!

        "Waah stop the traain there is a station coming up!"

      • nickthemagicman 5 months ago

        Your work is really enjoyable, interesting, and unique. :) Please keep it up.

saagarjha 5 months ago

Pretty! There's a lot of little details I appreciated, like the little boats and piers, as well as the fact that the birds would move to avoid you if you tried to collide with them.

  • alexanderperrin 5 months ago

    Thank you! I really wanted to add a bunch of other objects to decorate the landscape but it was a massive pain to get new models in. Glad you like what's there :)

    • saagarjha 5 months ago

      Honestly, I'm not sure that's a loss; there's something very pleasing about the minimal aesthetic.

technotarek 5 months ago

Wow, things have come a long way.

When CSS3 and jQuery first started gaining some traction (<8 years ago?), I tried a bunch of animations using layered images and image transformations. One of these "dreams" was of some hot air balloons as well. Desktop only: (first balloon appears at ~10s)

My favorite was a simple tail wag (

Edit: noted desktop only

  • alexanderperrin 5 months ago

    This is really effective! Nice work. Indeed though there are some astonishing capabilities for the web out there now.

atum47 5 months ago

if you change the canvas-container css to display:block you will get rid of those nasty scroll bars

  • alexanderperrin 5 months ago

    Haha a fine contributor already made a PR fixing this! Good stuff

Pfhreak 5 months ago

I love this low poly aesthetic, and it's been a dream of mine to work on a little side project that uses it. You might have given me the inspiration to go out and mess around a bit and see what I can come up with.

I'm curious about your background. I've built games (and hacked SNES games), but always leaned heavily on others for art and audio, and I'm curious if those were skills you had coming into your projects.

Epskampie 5 months ago

Hey Alexander, this game looks like so much fun!

Aren't you going to finish it?

  • alexanderperrin 5 months ago

    Hey! If funding came our way we'd definitely look into it! Alas, the project's been put on a pretty indefinite hiatus. I'm starting to come around to the idea of just releasing all my unfinished things as open source projects, so maybe we'll end up doing the same with that one?

    Glad you like the look of it though! Perhaps it'll start up again some day...

citeguised 5 months ago

Cool! This is nice to just run locally and play around with the parameters. I know the feeling of rediscovering abandoned sketches and projects, and thinking that they're not so bad after all.

  • alexanderperrin 5 months ago

    Glad you got it running ok! There should be heaps to play with.

    Yeah! I compare this to a lot of the work I'm doing currently and I start to wonder what on earth I'm doing... Gotta get back to pointless Three.js experiments! They were good days.

cr0sh 5 months ago

This was amazing; thanks for posting it. Also, I love "Short Trip"!

2019ideas 5 months ago

My buddy is developing a fireworks Sim in js + embedded systems to coordinate with a fireworks show.

The embedded work is basically done, but he was considering using JS and three.js, any suggestions/advice?

  • alexanderperrin 5 months ago

    Ooh cool! That sounds fascinating. It would be valuable to know the context for which the simulation would be displayed (ie. where, for how long, does it have user interaction etc.) to make suggestions, but hey if you're just looking for a good recommendation for a JS rendering/scene-graph/animation framework then I couldn't recommend Three.js more.

    I personally love it for the reason that it doesn't automagically do everything for you, and in that way if you've got any sort of experience with computer graphics and game engines then it's got a really gentle and intuitive learning curve. This said, if you're looking to get up-and-running with something really quickly or rapid prototype then you might want to look at something like

    I also wonder, if you're looking to do physical or live performance work then maybe it would be worth looking into something battle-tested and robust like Touch Designer? Not free like JS of course, but could be much more suited to a high-stakes live performance scenario as it sounds like he's putting together.

  • acdanger 5 months ago

    sounds interesting, any links?

imazurenko 5 months ago

Не работает на Firefox 65.0 + linux

lcfcjs2 5 months ago

This is very cool.

denniskane2 5 months ago

'Tis a fluid piece of work! I got Three.js and the ammo/bullet physics engine working together in Linux on the Web. You can go to, and then open the Applications app from the application launcher on the bottom of the page. Then scroll down to the webgl apps. The one called "Swinger" is a soft body physics simulation. You can use the "q" and "a" keys to control the arm. The app was taken from the examples of the threejs website. The system works best in Chrome. My last account "denniskane" seems to have gotten shadowbanned, lmao...

rplnt 5 months ago

Sim is short for simulation. Generally you strip down some elements, but keep some true to reality. Steerable hot air balloon moving seemingly on its own is not that. So this is more of an arcade.