33 comments

[ 3.8 ms ] story [ 87.2 ms ] thread
The creator wrote up a blog post on his entry:

http://birdgames.nl/2014/04/js1k-post-mortem-minecraft/

Lots of very interesting details, but surprised to see setInterval instead of requestAnimationFrame

(comment deleted)
maybe because it saves a few bytes? I don't think performance advantages were the reason.
Impressive!

I can't help but love things like this, if for no reason other than that it makes programmers look like bona fide magicians (and thus justifies exorbitant day-rates).

Sort of. Every field has its wizards and it’s usually easy to tell them apart from the apprentices.
Doesn't work in FF 33.1.1 on windows 8 -- each line of the image/video is shifted so the result looks \\\\\\\",
It's working for me in FF 33.1.1 on Windows 7.
it also works for in in FF 3.1.1 in Arch Linux
Working for me on FF 33.1 win 8

EDIT: and FF 33.1.1

Same for me on Iceweasel 31.2.0 on Debian
Very nice! The texturing and lighting are what really makes this demo. Unfortunately, it only displays correctly for me in Firefox Developer Edition, not FF 33.0, in which the picture is skewed: http://i.imgur.com/7i74m36.jpg.

If you're into tiny cube-based 3D engines also have a look at this demo for the Lobster programming language (http://strlen.com/lobster): http://i.imgur.com/ZZWFkXn.jpg. Its entire source code fits in the screenshot.

FWIW,

Firefox 33.1 (Mac) seems to work fine....

Dagnabbit. 33.1.1 not working for me. Chrome works. (OSX 10.9.5)
FF 33.1.1 on OSX 10.10.1 works fine for me.
Both 33.1 and 33.1.1 (noticed updated when I went to about) on OSX 10.10.1 were skewed for me
FF 33.1 on Windows 8.1 isn't working for me either.
"tiny cube-based" -- is that the same as "voxel based"?
I'd say it depends on context. Historically, voxels have been analogous to pixels. This has been somewhat blurred by Minecraft, and the widespread reporting on and discussion of it.

At first, the cubes in Minecraft are analogous to tiles (as in the tiled backgrounds or maps of 2D games), but when you use them to build models and things, then they become like large voxels.

If I remember correctly the lava is the hardest thing to efficiently render, correct? Cool regardless.
Why would it be any more difficult than rendering the water?
Light comes off of it. So it moves, flows and such like the water but it also has to render the lighting effects relative to all that. I could be wrong though, I know the water is difficult to render as well.
I haven't looked at the code of this demo but it seems there's no dynamic lighting at all, the "lighting" of the face of each cube depends only on which side it's facing as far as I can tell.

You can see that the underside of trees is pretty luminous for instance.

Nice - though I must say this kind of graphics (with music..) was done in similarly sized 1k/4k assembly demos -- https://www.youtube.com/watch?v=G1Q9LtnnE4w
Formally speaking, both Descent and Minecraft (inspirations for each respective intro) are based on cubes, but I don't think there are many more similarities. In any case, thanks for that blast from the past!
This one in Lobster, roughly the same amount of code, no textures, but is interactive (you can actually mine & build): http://i.imgur.com/ZZWFkXn.jpg
What are the sizes of `vec.lobster` and `3dhelpers.lobster` though...
I wonder if a few bytes could be saved by encoding the source in 7bit ascii, decoding and running through eval. Not sure if that makes sense.
I don't think 7-bit ASCII behaves the way you think. It's typically the same 8-bit bytes but with the most significant bit clear. So, there's no saving to be had, it doesn't "contract" the bits across neighboring bytes.
Yes but that's exactly what I meant. ASCII wastes 1 bit by character (the 8th bit isn't used). What if the source was encoded in such a way that it is "contracted" (the unused bit of the first character is the first bit of the second character, etc). Sorry for the 3 days late reply. The decoding function would have to be very small to make it worth it though.
I don't think I've ever seen this site before. It's fantastic