Hacker News new | comments | ask | show | jobs | submit login
The Making of Underrun – A WebGL Shooter in 13kb of JavaScript (phoboslab.org)
434 points by phoboslab 4 months ago | hide | past | web | favorite | 37 comments

Awesome to see the stupid trick to abbreviate object properties that I came up with in 2010 [1] is still a living part of the mini JS demo scene.

[1]: http://marijnhaverbeke.nl/js1k/

> the stupid trick

Funny how "stupid" can be interpreted in multiple ways here. One entirely appropriate, the other very much not so. I certainly am not smart enough come up with a trick like that!

don't sell yourself short stranger

Thanks for the article! Very interesting read. All of these challenges make me want to try something myself.

Great idea! I will definitely be using that trick for my next js1k attempt. I have previously defined shorter names but had to write out the original name once.

Also from the same year of the contest, Wander[0] is a 3D explorable world complete with grappling hook and save points!

[0] https://js13kgames.com/entries/wander

wander is awesome - i spent over an hour playing this great game... very nice!

Reminds me of 64k shooter kkreiger: https://en.wikipedia.org/wiki/.kkrieger

This one is a hybrid with some predefined (tiny!) assets and some procedural generation (instruments, texture placement).

kkreiger was by Farbrausch who make some of the most incredible demos out there eg Quantum Mysterium from last year - https://www.youtube.com/watch?v=DAyQeX8a-Bw - that's done in 48Kb of code.

A recent 8 kB intro "One Of Those Days" by Loonies is pretty funny and impressive: https://www.youtube.com/watch?v=fp0t2jCMGZE

That's so awesome! Especially because it's inspired by Candide Thovex's One of those days. Link for those who aren't familiar(he also used CGI for some of the things that would be super dangerous, he skied the line, but people weren't actually there): https://www.youtube.com/watch?v=ygxufRprWpY

Also a parody of https://www.youtube.com/watch?v=jB0vBmiTr6o

And probably there are more things it parodies.

Woah. Not seen that before. That's brilliant.

Good game, but unfortunately I was able to get stuck on an edge. Player's upper left edge caught on wall's lower right corner. Perhaps the problem is in the collision checking: https://github.com/phoboslab/underrun/blob/master/source/ent...

If there's a collision in either X or Z, both should be rolled back to their last positions. I think there is possibly an edge case hidden in there otherwise.

P.S. Nice code by the way.

Should be fixed with https://github.com/phoboslab/underrun/commit/2477c5a45f5be4d...

Rolling back X and Z when any collision occurs would prevent you from "hugging" (i.e. sliding along) walls. The problem was that a near corner collision wasn't correctly detected when the player didn't collide in X direction in the last frame (last_x) but does collide in the current frame (t.x), allowing the player to move into the corner in Y direction.


> I was able to get stuck on an edge. Player's upper left edge caught on wall's lower right corner

Same here.

Incredible casual game in 13k, fun to play, looks lovely, challenging enough and runs smoothly on 4k full screen.


Fantastic project!

A fun alternative for the players model that also takes little space is to slice up the model into horizontal layers. See http://www.like100bears.com/writing/2d-3d-in-gamemaker-studi... for example.

>>> The game never needs to rotate any geometry

Fixed geometry was the first thing I noticed ;)

Could probably even increase level size manyfold and would still run quite smoothly. For large generated mazes. With this phenomenal skin-crawling sound design. Would make a very immersive "escape" labyrinth game!

I love the idea of low resolution of "virtual screen", moreover it's reduced to 256 colors! It allows to use low-resolution textures, simple cubes and "billboard" sprites. I think this idea can be useful not only in demoscene, but in commercial indie games too. Usually indie developers avoid 3D altogether, not because of complexity of 3d engines, but because of complexity of 3d assets. With low-res "screen" you can hand-draw small textures, use sprites instead of 3d models, use rough 3d models and so on, so you can build a game without having large team of artists.

Games seeking this property of low-cost art through pixelated graphics generally choose not to have a retro virtual screen though - which frees them to have different pixel sizes between different parts of the UI, place things precisely (even sub-actual-pixel positions!). I'd prefer they didn't do those things, but I'd also rather have these games get made than not get made.

Nice :)

But I kinda hate you right now, because now you inspired me to develop games in 3D again, just when I'm in the making of 2D pixel-game ;)

(Love the retro-3D feeling, very good work!)

This is amazing, both in process and in result. Very well done, and a pleasant reminder that great things can come in small filesizes.

Wow this is phenomenal.

Very cool. Has a guantlet vibe

I wonder if this could be brought to the web in 97kb https://en.wikipedia.org/wiki/.kkrieger

Really good writing style. So much info in such short, simple sentences.

Amazing work.. Love the lightsource following the projectile. Was the large pixels a compromize to keep the fps up? Anyway, amazing what you can do with 13k!

Hmm.. Seems to freeze on Chrome for me after the click to initiate deployment, and the console shows a javascript error.

Wow this is one of the cooler projects I have seen for that little amount of code.

nice game, beautiful audio... this guy helped with that http://no-fate.net/

I wish for non qwerty support. Otherwise its genius

I just needed directional keys + mouse clicks

Nice Game & Code. Keep the great work up

Love it, the audio is great.

kb != kB

Why is your post about your Coinhive authorship [0] gone?

[0]: https://phoboslab.org/log/2018/03/about-coinhive

Applications are open for YC Summer 2019

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