Notch on film: the livestream videos

Since having a chat about what I learned from watchin' Notch, I've received buckets of emails 'n' tweets asking for links to the videos... After an epic google search of 5 minutes I've collected them all and aggregated them in this one happy place.

Notch coded Prelude of the Chambered for the Lundum Dare #21 game competition over 48 hours of August 19th-22nd 2011. I think most of it is here - and I've started annotating some of the good bits. Started. I'll fill out this post as I go...

It's well worth a study if you've got a couple of days to spare!

Part 1: The setup (3h 15m)

And so the game begins - on Saturday the 20th of August, some time in the afternoon...

Part 1 direct link (on YouTube - text in fullscreen is readable, but only just!)

  • Sketches out some possible ideas in notepad
  • Sets up Eclipse and his paint program
  • Creates blank Java project and Swing component
  • Creates display frame and boiler plate stuff
  • (0:27) Sets up main loop "tick" and game screen
  • Draws some random pixels with clipping
  • Pixels with perspective
  • (1:14) Maps a roof and floor texture
  • Adds up-down camera movement
  • Adds a wall-as-some-pixels
  • Spends ages getting wall to work properly
  • Conquers the wall maths!
  • (2:19) Adds wall texture
  • Adds spinning camera
  • Tweets progress...
  • Adds input handler
  • Creates player and binds camera to the keys
  • Adds "z" movement
  • Make random cube generation for testing
  • (3:09)Adds player/wall collision detection
  • Fix rendering direction: "Let's flip the Y. Y not?"
  • Realises the video stream for 3 hours costs $4000. Changes vendors.

Part 2: Adding engine features (2h 00m)

Part 2 direct link

  • Re-sets up video streaming crap
  • Adds sprite class
  • Sprite drawing and clipping
  • Renders sprite textures
  • (0:28) Adds dynamic colouring (greys coloured at render time)
  • Dynamic colouring for floor and sprites
  • Switches to 16x16 sprites (double res!)
  • Messes around with walls and floors designs
  • Tests screen sizes and scaling
  • (1:00) Tests performance and lots-of-sprites
  • Tweaks the shading a bit
  • Added dithering
  • Added a "post-process" step for rendering tweaks
  • Added per-block colouring
  • Added per-level floor and roof colouring
  • (1:35) Drew a custom font
  • Created a font renderer

Part 2b: "Getting so tired now" (2h 00)

Part 2b direct link

  • Snack time!
  • Created a "level" png file
  • Added level loader from png
  • Added cache for loaded levels
  • Started crashing everything with texture bug
  • (0:24) Spawn a player from a colour on png
  • Fixed rendering directions (things were rendered mirrored)
  • Tested adding sprites via pixels on png
  • Started adding game design elements (iron bars)
  • (0:44) Made blocking sprites: first room!
  • Interactable blocks: push-button wall
  • Fixed artwork manager
  • Created "switch" block class
  • Added particle-like smashing to block
  • (1:20) Minecraft-esque smash-a-thon
  • Bit of level design
  • Add popup message system
  • "Freedom is temporary and unsatisfying"
  • Add "Click to focus" when screen unfocused

Part 2c: The end of day one (0h 40m)

Part 2c direct link

  • Refactored/cleaned up "blocks with entities" handling
  • Added boulder entity
  • Added entity collision detection
  • Added rolling boulders
  • Added floor holes
  • Off to bed

Part 3: Early the next day (1h 13m)

After a smashing first day of fierce programming, we now rejoin the action on Sunday morning, 8am.
Part 3a direct link

  • Good morning!
  • Added chest block
  • Draw some pick up items
  • Made game panel GUI (life and pickups)
  • Rendered currently held item
  • Added water texture
  • (1:04) Added head bobbing when moving

{Footage missing: adding using pickup items}

Part 3b (0h 37m)

Part 3b direct link

Part 4: A plan comes together (2h 00m)

14 hours: 8 parts.
Part 4a direct link

  • Adds a torch entity
  • Creating a dynamic lighting system
  • Bails on lighting system and removes added code

Part 4: The rest...

Part 4h: I will go to sleep now (0h 43m)

The final part... Part 4h direct link

The End

Well well well... what a rollercoaster ride that was... highs, lows, chicken, dub step: we had it all, and at the end of the day the game was the real winner. That's all from us here at Lundum Dare #21, until next time - happy coding.