Jonathan Blow
This is the main discussion part. Q&A follows at youtube.com/watch?v=lcF-HzlFYKE .
updated 4 years ago
Why are there puzzle pieces in the game? Where did the idea of the slow-down ring come from? How did Paula Abdul inspire the game?
Braid, Anniversary Edition has launched! You can pick it up on Steam (store.steampowered.com/app/499180/Braid_Anniversary_Edition ), PlayStation (playstation.com/en-us/games/braid-anniversary-edition ), Nintendo Switch (nintendo.com/us/store/products/braid-anniversary-edition-switch ), Xbox (xbox.com/en-US/games/store/braid-anniversary-edition/BXR1FQZPCDMV ), or play it via Netflix on iOS (apps.apple.com/ph/app/braid-anniversary-edition/id6450126747 ) or Android (play.google.com/store/apps/details?id=com.netflix.NGP.BraidAnniversaryEdition )!
Host: Jonathan Blow
Guest: Casey Muratori
Producer: Jason Brisson
Editor: Will Torbett
Intro Song: "Downstream" by Shira Kammen (based on "O son do ar" by Bieito Romero and "Borrela d'Aragon" by Eric Montbel)
Chapters:
00:00 - Cold open
00:39 - Intro
01:14 - World 5 concept
07:58 - World 6 concept
15:04 - Endgame
21:29 - Framing the story
24:16 - Opening screen
26:37 - Design of the house
29:59 - Individualizing collectibles
34:43 - Breaking the pattern
37:28 - Epilogue
39:02 - World 2's puzzle
44:47 - Biggest mistake
48:40 - Pattern break analogies
57:51 - Outro/credits
Braid, Anniversary Edition is out now! Buy it on platforms of your choice: Steam, PlayStation 4 and 5, Nintendo Switch, Xbox One and Xbox Series, iOS (for Netflix subscribers), Android (for Netflix subscribers).
00:00 - Open
00:35 - Intro
02:02 - Project management
03:31 - Braid's indirect storytelling
07:41 - Bidirectional time
16:24 - Experimental gameplay
20:40 - Breadth vs. depth
29:51 - Exploration process
39:41 - Minimalism
43:43 - Original "The Pit" design
50:19 - Combining mechanics
58:32 - Awkwardness of designing World 2
01:02:23 - Why puzzle pieces?
01:09:26 - Phase as a mathematical concept
01:13:38 - Pausing time completely
Braid, Anniversary Edition has launched! You can pick it up on Steam, PlayStation, Nintendo Switch, Xbox, or play it via Netflix on mobile devices—maybe the one you're using now!
Host: Jonathan Blow
Guest: Casey Muratori
Producer: Jason Brisson
Editor: Will Torbett
Intro Song: "Downstream" by Shira Kammen (based on "O son do ar" by Bieito Romero and "Borrela d'Aragon" by Eric Montbel)
00:00 - Cold Open
00:43 - Intro
02:08 - Designing the back half of Braid
06:07 - Getting done on time
12:13 - Regularity of design
14:59 - T = Y
19:49 - Turn-based Braid
23:38 - Potential to kinetic energy
27:30 - The "a-ha" moment
33:36 - A matrix of mechanics
39:23 - Screenwriting analogy
46:42 - The subconscious mind
52:00 - Competing with AAA
01:03:42 - Jump parameters
01:09:35 - Ease of execution
01:15:59 - "A priori" design
01:22:54 - Not an action game
01:29:32 - Outro/credits
Braid, Anniversary Edition releases on May 14, 2024. Pre-order it now on Steam (store.steampowered.com/app/499180/Braid_Anniversary_Edition), or stay tuned to play it via Netflix on mobile devices—maybe the one you're using now!
0:00 - Cold Open
00:37 - Jon Intro
01:47 - David's Discomfort with Success
05:18 - The Webcomic "A Lesson Is Learned..."
10:45 - An Act of Creation
13:42 - Visual Themes
17:58 - Designing the Cloud Cannons
19:49 - Prototype Designs
21:45 - Defining Tim
25:40 - Rabbits
26:35 - The "Messy Process" of Art
31:09 - Personal Games
34:48 - First Impressions of Braid
38:11 - Painting Technique
40:35 - Outro/Credits
00:00 - Cold Open
00:25 - Intro
02:35 - Booting Up Cold
11:45 - Programmer Art
21:11 - Rewind as a Cornerstone
23:37 - Leap of Faith
29:05 - A Rough Prototype Test
33:33 - Original World 1
37:03 - Programming Rewind
45:22 - Story vs. Game
51:21 - Defining "Art Game"
01:04:08 - "Trinity" as an Influence
01:12:05 - Fan Fiction
01:14:47 - Things Left Unsaid
01:31:46 - Outro/Credits
00:00 - Cold Open
00:22 - Intro
01:15 - Literary Inspirations
08:34 - Translating from Prose to Code
12:45 - Mailing List Conversation
16:43 - Brian Moriarty's Lecture
18:59 - Vacation Brainstorm
20:08 - Why a 2D Platformer?
21:22 - Developer Secrecy
25:43 - Seriously, Why a 2D Platformer?
33:10 - Outro/Credits
http://braid-game.com
http://braid-game.com
00:00:00 Beginning.
3:19:48 The Bug Slog
3:50:55 Chat Noticed the Dumb Bug (Finally!)
3:53:22 It Works!
2:20 Roadmap for the next few Beta releases
3:30 Upcoming module handling improvements
18:53 Upcoming default metaprogram improvements
23:40 Start of the Beta user Q&A
25:50 I can see that you can change the allocator on a context by changing an allocator (a function) and allocation_data. For allocators that allow individual allocations to be returned how do you specify the equivalent of free() to the context? Or don't you?
31:14 How do you configure the compiler to build a Jai library for use on Android/ARM64?
33:53 What made you shrink the compiler team back to just yourself?
43:46 How are you feeling about how the beta is progressing? Do you have an idea of how many more times you want to expand the closed beta, or roughly when it might go into open?
46:43 Would you prefer us to report bugs asap, or wait and bundle up a few at a time?
47:46 I like the monorepo/project approach for modularity, does it conflict with your earlier statement that compilers/languages are underspecified in many regards? Should metaprogramming fill all those gaps?
50:09 Why not closures? What are the alternatives to closures? What can we do in the language that is equivalent to what closures provide?
56:34 You often talk about how syntax is not definite right now, is there anything that you are seriously considering changing in the future?
58:58 As with standard modules, could there be standard metaprogram modules, which could be included to enhance build processes and such, for instance to impose common house rules
1:01:31 The question of what is standard library vs external stuff keeps coming up; how are you aiming to delineate it? Would a "batteries included" approach covering most of the everyday stuff not provide a reasonable amount of value? Relatedly, "Basic" is a bad name for a module, as it's fairly arbitrary and different from one person to another what counts as "Basic"
1:05:56 Are there plans to add build-in support for code hotloading for running executable?
1:07:24 I have a big change for the built-in hotloader module that fixes its totally broken linux part but these fixes need to change the API slightly. Do you want such bigger changes for built-in modules?
1:15:00 You mentioned that struct literals are new which explains some of my issue but what are your current thoughts on allowing non-constant values for struct literals?
1:19:00 I couldn't find classic C-style for loops anywhere in the docs, did I miss something?
1:19:43 Have you thought at all about array-programming?
1:20:11 Currently, a 'for' loop over an explicit range (e.g. 0..3) disallows use of 'it_index'. Would you consider allowing this in the future? This would reduce friction when, upon code maintenance, the explicit range is replaced with an array whose index needs to be tracked
1:20:57 Can we get a `sockets` (or `Networking` module)? Seems like it should be in standard library
1:21:32 Currently, the single underscore, _, can be used as a variable (like in C). Do you intend for this behavior to endure, or are there plans to change it to function as a blank identifier like in Go?
1:22:40 Are minor contributions to the existing documentation (like typo fixes and small content additions) welcome?
1:23:59 To align a big team on a project it proved useful to me to restrict certain features of the language. I understand that I should write a meta-program to fail on features I want to restrict.
1:24:55 Patrick had a question a couple days ago about trying to modify parameters to functions in a function, in external libraries this is possible but within a Jai program it's not. This confused me a lot early on as well. Perhaps this could be clarified in the how_to's (pass in a pointer...)
1:27:28 Something slightly confusing is dependencies between metaprograms. When two metaprograms share common namespace that they might both want to change you might get a dependency that doesn't really exist.
1:29:56 Are there any long-term plans about documentation, in terms of format and scope? I really like the current how_tos. But I imagine there is a large amount of work to do with documenting the distributed modules and language features. Maybe more people could help out with that?
1:33:14 What plans do you have for extending the procedure/declaration notes stuff? Specifically, I work on a team of ~20 people and issue tracking/project management tools like Jira which are separate to the code are a pain, maybe there's a way the language/metaprogram can help?
1:37:59 Do you see any places in the type system where things could be added to make robust parallel programming easier?
1:40:05 Any plans to move the temporary allocator to the context so we can change the way it works if we want to?
(YouTube won't let us paste the rest of this index, short version may come later).
At some point I referred to Frank Lantz's "Immersive Fallacy" rant, which you can find here: youtube.com/watch?v=6JzNt1bSk_U
The volume is a little wacky since Casey was quiet on the recording; I went in and hand-boosted his volume in many places, but not everywhere.