Edit: Notch's entry keeps saying "Click to focus" for me. Even when I click to focus... hmmm.
— edit: That’s a great little game you made there. A lot of fun!
The game is a Zelda-inspired, first person, 2.5D dungeon crawler written in Java.
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.
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.
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.
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.
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.
The thing I couldn't believe was the guy's intensity. He NEVER stopped. He was relentless. Very very inspirational.
Notch coding "Escape" - 20.8.2011 livestream
Unfortunately, this video is not available in Germany
because it may contain music for which GEMA has
not granted the respective music rights.
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!
Do you know any other source? Could somebody post it on another page?
Thanks a bunch!
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.
http://crowbar.ripsystem.com/projects/ld21/ - Arrows Move, A shoots.
The others can be found here:
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:
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!
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.
The controls are WASD+QE (or arrow keys), space, and the number keys to switch items.