Hacker Newsnew | comments | ask | jobs | submitlogin
Notch's 48-hour game: Prelude of the Chambered (amazonaws.com)
177 points by Raphael 969 days ago | comments

pygy_ 969 days ago | link

For those who didn't watch the stream:

The game is a Zelda-inspired, first person, 2.5D dungeon crawler written in Java.

__Modus operandi:__

1) He first built a robust engine, very powerful from a game developing standpoint. Building the various types of blocks (walls/grounds/objects) and entities (player/ennemies/bullets/boulders) needed remarkably little code afterwards.

2) He used Paint.NET as a level editor, and color-coded the blocks and entities. He used the alpha channel to identify the switches, the doors, the ladders and the ennemies (from 255 downwards). Doors and switches are automatically linked by id. This allows to put all the level design logic on the map.

3) The most important: short iterations. He spent more time play testing the game than writing it, systematically retesting the old stuff when he introduced a new feature, or even after changing a detail.

4) He's sharp, knows his tools, edits the code very fast and makes few mistakes. He also has a lot of experience, which allowed him to make good initial decisions that facilitated the development process.

__The platform:__

Java+Eclipse turns out to be an excellent platform for writing games.

While it doesn't have a REPL, its debugger allows to patch the code while it is running, offering a very dynamic environment, especially to tweak the gameplay. It felt very lightweight. I wonder if the other JVM languages have similar debugging facilities.

The simplicity of the language makes the code easy to read and modify (provided you have a sound initial code base). Once you get used to it, the boilerplate becomes transparent (like the parentheses in Lisp).

The refactoring abilities of Eclipse are excellent.

The speed of the JVM allows to write fast low level code, and its object system make it straightforward to organise the high level logic.

__Some tricks/hacks:__

All textures are drawn in 4 shades of gray, then colored when they are loaded. It allows to reuse the wall textures for all levels, and to differentiate the bosses from the normal ennemies, at no cost, etc.

His playsound function creates a new thread every time it is run.

If I counted properly, there is at most one level of inheritance, even where more would have made sense from an orthodox OO design standpoint. There's some code duplication, but he only duplicated robust, well tested code.

The low resolution and limited palette allows the rudimentary graphics to look good (old school). The animations have only two frames.



On a side note: Did someone save fist few hours of the stream, when he wrote the 3D engine? I couldn't watch the process, and his Livestream account has been deleted.


DamagedProperty 969 days ago | link

I saw it from the beginning and watched the whole weekend.

He started out with some basic swing component/boiler plate code.

This is the third time I have watched him make a game like this. The last time he made a dungeon crawler but did it in a really novel way.

Just like last time he had the pov moving back and forth while he tweaked the walls and floors while in debug mode. This allowed him to tweak each part and get them looking correct. He spoke a lot more about what he was doing in the beginning and spoke less as the weekend went on.

The resolution on livestream was not as good for me as it was on justintv so I could not see what he was writing to get that affect. I assume it was nothing more than sin times some fraction over the x axis.

The time before that was metagun. A fantastic 2d platform game.

The thing that impresses me is that he doesn't stop to think too much. He just goes for it. I think I need to employ more courage to writing code like that when it comes to competitions.

I always get inspired watching these. I learned a ton.


DamagedProperty 969 days ago | link

The cool thing also was in the beginning before he started he was writing down ideas of what game to make. He spoke about Link's awakening being an inspiration for this game.

He also had another great idea about being on a sinking ship. I kinda wish he would have chosen that one. But what he did was cool.


mrspeaker 969 days ago | link

It was fascinating to watch: I watched at least 20 hours of it in fullscreen! I love the trick of adding colour on the fly - the "look and feel" changed so much just by modifying the colours.

The thing I couldn't believe was the guy's intensity. He NEVER stopped. He was relentless. Very very inspirational.


clistctrl 969 days ago | link

You are exactly right about the intensity. He completed a weeks worth of work in less than 2 days. He worked for nearly 40 of the 48 hours he had.


tydok 969 days ago | link

(I can't access YouTube at the moment to verify the link)

Notch coding "Escape" - 20.8.2011 livestream



jannes 968 days ago | link

  Unfortunately, this video is not available in Germany
  because it may contain music for which GEMA has
  not granted the respective music rights.
I hate these music industry pricks. Why did they block this? Because he's listening to some web radio in the background? That's ridiculous.


pygy_ 968 days ago | link

What about this?


It works in Firefox here (HTML5 video)

Edit: you may have to be signed in and enable the HTML5 beta. I'm saving it and will upload it later.

Edit2: It's uploading right now. It is a 720P screen capture of the live coding being played fullscreen at a higher resolution. The text is blurry but readable.

Edit3: Here you are!



tydok 968 days ago | link

Worth its bytes in gold :) Thanks.


jmcejuela 967 days ago | link



jmcejuela 968 days ago | link

Same problem :(, in Germany too.

Do you know any other source? Could somebody post it on another page?


weaksauce 968 days ago | link

American VPN to tunnel all your traffic would work in this instance.


DamagedProperty 969 days ago | link

Awesome! Glad someone was thinking and recorded it.


pygy_ 969 days ago | link

Awesome :-)

Thanks a bunch!


mbrzuzy 968 days ago | link

Thanks for the link!


ordinary 969 days ago | link

He wrote that while on Livestream, so it's not on Justin.tv or Twitch.tv. Unless he also wrote to a local file, there's a good chance that part is gone for good.


Zolomon 969 days ago | link

His livestream account seems to have been deleted, did anyone download the streams? I didn't get a chance to watch the first few hours of making his engine.


angrycoder 969 days ago | link

Source code is here:



Breefield 969 days ago | link

Notch's game appears to be a reinterpretation of "Chip's Challenge".



PerryCox 969 days ago | link

Easily the best game to ever be included with Windows.


johnfn 969 days ago | link

May as well plug my game too:

Escape Artist: http://www.ludumdare.com/compo/ludum-dare-21/?action=preview...

Right now the only way to run it is to run main.py through python. I'm working on standalones.


dave84 969 days ago | link

Here's my entry: 'Harvest' - On g+ as ludumdare.com seems to be down. https://plus.google.com/117952639955495935037/posts/DyEXjhmF...

Edit: Notch's entry keeps saying "Click to focus" for me. Even when I click to focus... hmmm.


ugh 969 days ago | link

Reloading helped for me.

— edit: That’s a great little game you made there. A lot of fun!


kennywinker 969 days ago | link

Nice game!


Raphael 969 days ago | link

Hint: At the beginning punch through the wall with the space bar.


aeontech 969 days ago | link

It was definitely fascinating to watch for a while. I would actually love to watch live coding with commentary of some good programmers, I imagine you could learn a lot from it.


JustAGeek 969 days ago | link

On peepcode.com you can find several screencasts where you can watch experienced developers working on a mini-project while thinking out loud The series is called "Play by play". Here's the one with Zed Shaw: http://peepcode.com/products/play-by-play-zed-shaw

The others can be found here: http://peepcode.com/screencasts

Furthermore, there's http://www.cleancoders.com/ by Bob Martin. For several of the available episodes there are screencasts available in which he TDDs on some task, e.g. here: http://www.cleancoders.com/codecast/clean-code-episode-3/sho... Those screencasts are bonus material, so to speak, the actual episodes are well worth the watch, too.

All those screencasts cost money - but imho they're very well worth it!


aeontech 967 days ago | link

Thanks for the links, I'll definitely check them out.


Newky 969 days ago | link

I agree with this, and have seen a massive amount of similar comments on this topic.

It seems like a rather niche area which could easily be exploited, to complement a live stream, It would be nice to have a live code display as well.

Something like a tail -f for the web.


terhechte 969 days ago | link

I know one could watch the complete livestream, but I wonder if the source is also available somewhere. I'd love to dive in and understand some of the complexities without time constraints. Great game.


davecardwell 969 days ago | link

So you don’t miss it, http://news.ycombinator.com/item?id=2911794


Androsynth 969 days ago | link

I wish more people would have joined the competiton than just watch Notch, but I guess thats just how things go. This was my first Ludum Dare competition and I had a lot of fun.


newobj 969 days ago | link

eh? there's usually several hundred completed entries in any LD48.


Androsynth 969 days ago | link

And there was tens of thousands of people who watched notch at some point.


jakelear 969 days ago | link

Tens of thousands of non-programmers. A few minutes spent in the livestream chat feed was enough to drive a sane man to madness. 50% of comments were asking if the stream was minecraft 1.8, the other 50% were rude comments about Notch's marriage/weight/work ethic/etc.


walrus 969 days ago | link

Many of the people asking if it was Minecraft 1.8 were just doing it to bother others.


runevault 968 days ago | link

The MC 1.8 people were, but a LOT of people were also "what compiler is he using?" and other similar questions that showed the one asking had little to no knowledge of programming. I'd bet at LEAST 60% and probably more like 80 had minimal to no knowledge of how to write real code.


kingatomic 968 days ago | link

Including this guy right here. While I'm a programmer, I've never done any games programming, and most certainly have never done anything in 3D -- it was a learning experience for me to watch him. It was also inspiring, such that I may eventually enter an LD event myself.


crowbar 969 days ago | link

I ran out of time to do my game this weekend (Other insanities were going on, unfortunately. I managed to only spend about 5-6 hours on it all in all), but I might as well show what I did make for those curious. It's more of a concept than anything else, but I did make a couple of things that I can carry on to my other FlashPunk project, so it's all good in the end! It was a lot of fun and I wish I could have done something more, or at least relinquish myself to a simpler idea.

http://crowbar.ripsystem.com/projects/ld21/ - Arrows Move, A shoots.


seclorum 969 days ago | link

Chromium 13.0.782.107 (Developer Build 94237 Linux) Ubuntu 11.04 user here.. just want to report that Arrows don't move, A doesn't shoot. Looks interesting though!


crowbar 968 days ago | link

Noted! I'll have to check that out. I didn't do a whole lot of testing outside of the flash player/in firefox, so it may be a bug inside Flashpunk for all I know. If so, gives me a chance to do a little bug fixing for the community. :D Thanks!


citricsquid 968 days ago | link

FYI Chrome and Flash have a bug with Action script 2. So if you're using AS2 for that game that's why his controls don't work. http://www.newgrounds.com/bbs/topic/1265535 second paragraph.


uvTwitch 969 days ago | link

Trust Notch to make a low-fi 3D game about punching bricks. Pretty awesome though!


exit 969 days ago | link

can anyone actually get their browser to give the applet focus?


walrus 969 days ago | link

Yes. Firefox on Linux with OpenJDK works for me. You could try downloading https://s3.amazonaws.com/ld48/index.html and https://s3.amazonaws.com/ld48/PoC.jar?v=9, then running it with `appletviewer index.html` from a terminal.

The controls are WASD+QE (or arrow keys), space, and the number keys to switch items.


Lists | RSS | Bookmarklet | Guidelines | FAQ | DMCA | News News | Feature Requests | Bugs | Y Combinator | Apply | Library