Immediate-mode Level Generation
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:00Recap and set the stage for the day working on level generation
🗩
0:00Recap and set the stage for the day working on level generation
🗩
0:00Recap and set the stage for the day working on level generation
🗩
1:33wassimulator Overlay didn't appear, by the way, Casey
🗪
1:33wassimulator Overlay didn't appear, by the way, Casey
🗪
1:33wassimulator Overlay didn't appear, by the way, Casey
🗪
1:48Turn on ctray
🗹
1:48Turn on ctray
🗹
1:48Turn on ctray
🗹
2:31Reacquaint ourselves with our declarative Verilog-style level generator
📖
2:31Reacquaint ourselves with our declarative Verilog-style level generator
📖
2:31Reacquaint ourselves with our declarative Verilog-style level generator
📖
4:44Consider switching to a more direct, hand-coded level generation scheme, with lessened procedural generation
📖
4:44Consider switching to a more direct, hand-coded level generation scheme, with lessened procedural generation
📖
4:44Consider switching to a more direct, hand-coded level generation scheme, with lessened procedural generation
📖
9:21Prepare to work on CreateWorld()
📖
9:21Prepare to work on CreateWorld()
📖
9:21Prepare to work on CreateWorld()
📖
10:20Thoughts on getting better by productively reorganising systems
🗩
10:20Thoughts on getting better by productively reorganising systems
🗩
10:20Thoughts on getting better by productively reorganising systems
🗩
11:56Prepare to work on CreateWorld() (cont.)
📖
11:56Prepare to work on CreateWorld() (cont.)
📖
11:56Prepare to work on CreateWorld() (cont.)
📖
13:08Comment out the GenerateWorld() part of CreateWorld()
13:08Comment out the GenerateWorld() part of CreateWorld()
13:08Comment out the GenerateWorld() part of CreateWorld()
13:57Contextualise our world design thought process with the Legend of Zelda map1
📖
13:57Contextualise our world design thought process with the Legend of Zelda map1
📖
13:57Contextualise our world design thought process with the Legend of Zelda map1
📖
21:58Consider gated world exploration2
📖
21:58Consider gated world exploration2
📖
21:58Consider gated world exploration2
📖
26:55hukutoss Stairs
🗪
26:55hukutoss Stairs
🗪
26:55hukutoss Stairs
🗪
27:00Consider gated world exploration (cont.)3
📖
27:00Consider gated world exploration (cont.)3
📖
27:00Consider gated world exploration (cont.)3
📖
28:57tk_dev Yeah, it drains the water
🗪
28:57tk_dev Yeah, it drains the water
🗪
28:57tk_dev Yeah, it drains the water
🗪
29:09Aim for a world structure similar to The Legend of Zelda4
29:09Aim for a world structure similar to The Legend of Zelda4
29:09Aim for a world structure similar to The Legend of Zelda4
29:35What does the whistle do in The Legend of Zelda?
📖
29:35What does the whistle do in The Legend of Zelda?
📖
29:35What does the whistle do in The Legend of Zelda?
📖
32:19The whistle in The Legend of Zelda drains the lake5
📖
32:19The whistle in The Legend of Zelda drains the lake5
📖
32:19The whistle in The Legend of Zelda drains the lake5
📖
33:03skeletonstickbug The flute dries up the lake to open 7, and warps you to completed dungeons from other screens. There's an invisible wall to get to the upper-right corner of the map
🗪
33:03skeletonstickbug The flute dries up the lake to open 7, and warps you to completed dungeons from other screens. There's an invisible wall to get to the upper-right corner of the map
🗪
33:03skeletonstickbug The flute dries up the lake to open 7, and warps you to completed dungeons from other screens. There's an invisible wall to get to the upper-right corner of the map
🗪
33:09kaffebaronen Oh, Link to the Past has the wind thing in front of the bird statue
🗪
33:09kaffebaronen Oh, Link to the Past has the wind thing in front of the bird statue
🗪
33:09kaffebaronen Oh, Link to the Past has the wind thing in front of the bird statue
🗪
33:14Initial thoughts for us on gated access based on item possession
📖
33:14Initial thoughts for us on gated access based on item possession
📖
33:14Initial thoughts for us on gated access based on item possession
📖
34:39Consider placing tougher dungeons more distant from the start
📖
34:39Consider placing tougher dungeons more distant from the start
📖
34:39Consider placing tougher dungeons more distant from the start
📖
36:01Determine to place dungeons using a tunable blue noise distribution
📖
36:01Determine to place dungeons using a tunable blue noise distribution
📖
36:01Determine to place dungeons using a tunable blue noise distribution
📖
38:19Set up CreateWorld() to generate six dungeons
38:19Set up CreateWorld() to generate six dungeons
38:19Set up CreateWorld() to generate six dungeons
42:10Thoughts on floating difficulty of rogue-like games
📖
42:10Thoughts on floating difficulty of rogue-like games
📖
42:10Thoughts on floating difficulty of rogue-like games
📖
44:29Rocket: Hi
🐱
44:29Rocket: Hi
🐱
44:29Rocket: Hi
🐱
45:37mr427 You could have hints at the dungeon entrance that lets the player know how difficult it is, so they could show up anywhere
🗪
45:37mr427 You could have hints at the dungeon entrance that lets the player know how difficult it is, so they could show up anywhere
🗪
45:37mr427 You could have hints at the dungeon entrance that lets the player know how difficult it is, so they could show up anywhere
🗪
46:57Consider making dungeon exploration less about difficulty between dungeons, but more about how deep you want to go
📖
46:57Consider making dungeon exploration less about difficulty between dungeons, but more about how deep you want to go
📖
46:57Consider making dungeon exploration less about difficulty between dungeons, but more about how deep you want to go
📖
48:13corpusc Angband
🗪
48:13corpusc Angband
🗪
48:13corpusc Angband
🗪
48:21Depth-choice dungeon exploration in Angband
📖
48:21Depth-choice dungeon exploration in Angband
📖
48:21Depth-choice dungeon exploration in Angband
📖
49:54Consider increasing the difficulty per floor, not per dungeon
📖
49:54Consider increasing the difficulty per floor, not per dungeon
📖
49:54Consider increasing the difficulty per floor, not per dungeon
📖
50:20ablindorphan Could you make it so that completing dungeons makes future dungeons harder?
🗪
📖
50:20ablindorphan Could you make it so that completing dungeons makes future dungeons harder?
🗪
📖
50:20ablindorphan Could you make it so that completing dungeons makes future dungeons harder?
🗪
📖
50:49phildo3 Won't intro floors become grating by the end of the game, then?
🗪
📖
50:49phildo3 Won't intro floors become grating by the end of the game, then?
🗪
📖
50:49phildo3 Won't intro floors become grating by the end of the game, then?
🗪
📖
51:25Let CreateWorld() possibly generate up to nine dungeons
51:25Let CreateWorld() possibly generate up to nine dungeons
51:25Let CreateWorld() possibly generate up to nine dungeons
51:39j_blow If intro floors are too long they would be boring, but you want people to have a chance to feel like they actually got more powerful, rather than just ramping difficulty to meet them all the time
🗪
51:39j_blow If intro floors are too long they would be boring, but you want people to have a chance to feel like they actually got more powerful, rather than just ramping difficulty to meet them all the time
🗪
51:39j_blow If intro floors are too long they would be boring, but you want people to have a chance to feel like they actually got more powerful, rather than just ramping difficulty to meet them all the time
🗪
52:22gijlf If there is any different gameplay based on items / weapons the difficulties can be linked to them. Like you have the sword of fire so the ice dungeon is easier, but the fire one would be harder but never impossible
🗪
52:22gijlf If there is any different gameplay based on items / weapons the difficulties can be linked to them. Like you have the sword of fire so the ice dungeon is easier, but the fire one would be harder but never impossible
🗪
52:22gijlf If there is any different gameplay based on items / weapons the difficulties can be linked to them. Like you have the sword of fire so the ice dungeon is easier, but the fire one would be harder but never impossible
🗪
52:29Set up CreateWorld() to generate its dungeons, the forest and orphanage
52:29Set up CreateWorld() to generate its dungeons, the forest and orphanage
52:29Set up CreateWorld() to generate its dungeons, the forest and orphanage
55:14doesntmeananything I just want the Awesome Button. You press the Button, something Awesome happens. Button -> Awesome
🗪
55:14doesntmeananything I just want the Awesome Button. You press the Button, something Awesome happens. Button -> Awesome
🗪
55:14doesntmeananything I just want the Awesome Button. You press the Button, something Awesome happens. Button -> Awesome
🗪
55:24Story time: The Million Dollar Button in Gabriel Knight 3
🗩
55:24Story time: The Million Dollar Button in Gabriel Knight 3
🗩
55:24Story time: The Million Dollar Button in Gabriel Knight 3
🗩
58:34Augment world_generator with DungeonLocations for CreateWorld() to set
58:34Augment world_generator with DungeonLocations for CreateWorld() to set
58:34Augment world_generator with DungeonLocations for CreateWorld() to set
59:56Consider how to space out dungeons6
📖
59:56Consider how to space out dungeons6
📖
59:56Consider how to space out dungeons6
📖
1:01:17Make CreateWorld() space out dungeons7
1:01:17Make CreateWorld() space out dungeons7
1:01:17Make CreateWorld() space out dungeons7
1:09:27sagian2005 I got tired of saying "distance squared" all the time and discovered that it's called a quadrance8
🗪
1:09:27sagian2005 I got tired of saying "distance squared" all the time and discovered that it's called a quadrance8
🗪
1:09:27sagian2005 I got tired of saying "distance squared" all the time and discovered that it's called a quadrance8
🗪
1:12:41dustingadal Google ngram search hasn't heard of it9
🗪
1:12:41dustingadal Google ngram search hasn't heard of it9
🗪
1:12:41dustingadal Google ngram search hasn't heard of it9
🗪
1:12:52Make CreateWorld() space out dungeons (cont.)
1:12:52Make CreateWorld() space out dungeons (cont.)
1:12:52Make CreateWorld() space out dungeons (cont.)
1:15:00Reflect on our annulus-shaped dungeon placement10
1:15:00Reflect on our annulus-shaped dungeon placement10
1:15:00Reflect on our annulus-shaped dungeon placement10
1:15:55Note our need to visualise the dungeon generation
📖
1:15:55Note our need to visualise the dungeon generation
📖
1:15:55Note our need to visualise the dungeon generation
📖
1:19:25Toggle on the procedural generation drawing in UpdateAndRenderWorld()
1:19:25Toggle on the procedural generation drawing in UpdateAndRenderWorld()
1:19:25Toggle on the procedural generation drawing in UpdateAndRenderWorld()
1:20:08Stub out CreateDungeon(), CreateDungeons(), CreateForest() and CreateOrphanage(), augmenting world_generator with OrphanageLocation and DungeonCount
1:20:08Stub out CreateDungeon(), CreateDungeons(), CreateForest() and CreateOrphanage(), augmenting world_generator with OrphanageLocation and DungeonCount
1:20:08Stub out CreateDungeon(), CreateDungeons(), CreateForest() and CreateOrphanage(), augmenting world_generator with OrphanageLocation and DungeonCount
1:24:14Determine to get a debug map going
📖
1:24:14Determine to get a debug map going
📖
1:24:14Determine to get a debug map going
📖
1:24:47Stretch to infinity, just like Sausage Dog Tends To Infinity11
📖
1:24:47Stretch to infinity, just like Sausage Dog Tends To Infinity11
📖
1:24:47Stretch to infinity, just like Sausage Dog Tends To Infinity11
📖
1:27:34Implement CreateDungeon(), introducing PlaceDebugMarker()
1:27:34Implement CreateDungeon(), introducing PlaceDebugMarker()
1:27:34Implement CreateDungeon(), introducing PlaceDebugMarker()
1:34:58dedknd Casey has Bobby McFerrin car vibes today
🗪
1:34:58dedknd Casey has Bobby McFerrin car vibes today
🗪
1:34:58dedknd Casey has Bobby McFerrin car vibes today
🗪
1:37:03snoxs49 What is that internal keyword for?
🗪
1:37:03snoxs49 What is that internal keyword for?
🗪
1:37:03snoxs49 What is that internal keyword for?
🗪
1:37:47nilsonragee #define internal static
🗪
1:37:47nilsonragee #define internal static
🗪
1:37:47nilsonragee #define internal static
🗪
1:38:02Anticipate the next Bobby McFerrin craze
🗩
1:38:02Anticipate the next Bobby McFerrin craze
🗩
1:38:02Anticipate the next Bobby McFerrin craze
🗩
1:38:42Toggle off the camera placement in CreateWorld()
1:38:42Toggle off the camera placement in CreateWorld()
1:38:42Toggle off the camera placement in CreateWorld()
1:39:16Run straight into the cutscene, because there's no world
🏃
1:39:16Run straight into the cutscene, because there's no world
🏃
1:39:16Run straight into the cutscene, because there's no world
🏃
1:40:01Determine to vaporise GenRoom()
📖
1:40:01Determine to vaporise GenRoom()
📖
1:40:01Determine to vaporise GenRoom()
📖
1:40:25j_blow I did just show up again
🗪
1:40:25j_blow I did just show up again
🗪
1:40:25j_blow I did just show up again
🗪
1:40:28What is happening with Sausage Dog Tends To Infinity?
1:40:28What is happening with Sausage Dog Tends To Infinity?
1:40:28What is happening with Sausage Dog Tends To Infinity?
1:41:16j_blow I played an early version of it like 3–4 years ago
🗪
1:41:16j_blow I played an early version of it like 3–4 years ago
🗪
1:41:16j_blow I played an early version of it like 3–4 years ago
🗪
1:42:24j_blow Release Date Tends to Infinity
🗪
1:42:24j_blow Release Date Tends to Infinity
🗪
1:42:24j_blow Release Date Tends to Infinity
🗪
1:42:44snoxs49 Maybe we get Half-Life 3 first
🗪
1:42:44snoxs49 Maybe we get Half-Life 3 first
🗪
1:42:44snoxs49 Maybe we get Half-Life 3 first
🗪
1:43:00Simplify GenerateRoom() for our new generator to call procedurally, delete GenerateWorld() and let CreateWorld() set the camera position
1:43:00Simplify GenerateRoom() for our new generator to call procedurally, delete GenerateWorld() and let CreateWorld() set the camera position
1:43:00Simplify GenerateRoom() for our new generator to call procedurally, delete GenerateWorld() and let CreateWorld() set the camera position
1:46:53colax It's so interesting to see both j_blow and Casey use no autocomplete. For some reason it looks like it's faster than actually having autocomplete. Maybe just typing what we want is faster than the process of our eyes seeing what we want then responding
🗪
1:46:53colax It's so interesting to see both j_blow and Casey use no autocomplete. For some reason it looks like it's faster than actually having autocomplete. Maybe just typing what we want is faster than the process of our eyes seeing what we want then responding
🗪
1:46:53colax It's so interesting to see both j_blow and Casey use no autocomplete. For some reason it looks like it's faster than actually having autocomplete. Maybe just typing what we want is faster than the process of our eyes seeing what we want then responding
🗪
1:48:40slava_radko Visual Studio changes text what I typed instead of suggesting. That's even worse
🗪
1:48:40slava_radko Visual Studio changes text what I typed instead of suggesting. That's even worse
🗪
1:48:40slava_radko Visual Studio changes text what I typed instead of suggesting. That's even worse
🗪
1:49:10Augment world_generator with StartingRoom for CreateWorld() to set
1:49:10Augment world_generator with StartingRoom for CreateWorld() to set
1:49:10Augment world_generator with StartingRoom for CreateWorld() to set
1:50:05Set up CreateOrphanage() to call GenerateRoom()
1:50:05Set up CreateOrphanage() to call GenerateRoom()
1:50:05Set up CreateOrphanage() to call GenerateRoom()
1:51:17j_blow Almost nobody designs autocomplete any more so that you can just type and not look
🗪
1:51:17j_blow Almost nobody designs autocomplete any more so that you can just type and not look
🗪
1:51:17j_blow Almost nobody designs autocomplete any more so that you can just type and not look
🗪
1:53:03Make CreateOrphanage() initialise a RoomSpec, removing the gen_apron_spec * from gen_room_spec, and GenRoom()
1:53:03Make CreateOrphanage() initialise a RoomSpec, removing the gen_apron_spec * from gen_room_spec, and GenRoom()
1:53:03Make CreateOrphanage() initialise a RoomSpec, removing the gen_apron_spec * from gen_room_spec, and GenRoom()
1:55:30Thoughts on forward-declarations in C / C++
💢
🗩
1:55:30Thoughts on forward-declarations in C / C++
💢
🗩
1:55:30Thoughts on forward-declarations in C / C++
💢
🗩
1:56:30jesobuild They "fixed it" with C++ 20 and modules
🗪
1:56:30jesobuild They "fixed it" with C++ 20 and modules
🗪
1:56:30jesobuild They "fixed it" with C++ 20 and modules
🗪
1:56:49slava_radko But what would you ship with the library then?
🗪
1:56:49slava_radko But what would you ship with the library then?
🗪
1:56:49slava_radko But what would you ship with the library then?
🗪
1:59:16Fix compile errors in GenerateRoom()
1:59:16Fix compile errors in GenerateRoom()
1:59:16Fix compile errors in GenerateRoom()
2:00:05valxntinebxtt That rant on forward-declarations was enough for a sub
🗪
2:00:05valxntinebxtt That rant on forward-declarations was enough for a sub
🗪
2:00:05valxntinebxtt That rant on forward-declarations was enough for a sub
🗪
2:01:38Make CreateOrphanage() set the RoomVol
2:01:38Make CreateOrphanage() set the RoomVol
2:01:38Make CreateOrphanage() set the RoomVol
2:03:00kaibutsi Regarding autocomplete / IntelliSense I think there's a place for it, most likely not in the environment you're currently working in, but it's definitely useful for discoverability when using 3rd-party libraries in languages with stronger type systems
🗪
2:03:00kaibutsi Regarding autocomplete / IntelliSense I think there's a place for it, most likely not in the environment you're currently working in, but it's definitely useful for discoverability when using 3rd-party libraries in languages with stronger type systems
🗪
2:03:00kaibutsi Regarding autocomplete / IntelliSense I think there's a place for it, most likely not in the environment you're currently working in, but it's definitely useful for discoverability when using 3rd-party libraries in languages with stronger type systems
🗪
2:04:20Make CreateOrphanage() set the RoomVol (cont.)
2:04:20Make CreateOrphanage() set the RoomVol (cont.)
2:04:20Make CreateOrphanage() set the RoomVol (cont.)
2:04:37Launch into our newly-generated room
🏃
2:04:37Launch into our newly-generated room
🏃
2:04:37Launch into our newly-generated room
🏃
2:04:58Toggle off CollisionVolume drawing in UpdateAndRenderEntities()
2:04:58Toggle off CollisionVolume drawing in UpdateAndRenderEntities()
2:04:58Toggle off CollisionVolume drawing in UpdateAndRenderEntities()
2:05:34Check out our generated world
🏃
2:05:34Check out our generated world
🏃
2:05:34Check out our generated world
🏃
2:06:04Disable GRID_RAY_CAST_DEBUGGING
2:06:04Disable GRID_RAY_CAST_DEBUGGING
2:06:04Disable GRID_RAY_CAST_DEBUGGING
2:06:13Our dungeons are too close together
🏃
2:06:13Our dungeons are too close together
🏃
2:06:13Our dungeons are too close together
🏃
2:06:45Make CreateDungeons() further separate out the dungeons
2:06:45Make CreateDungeons() further separate out the dungeons
2:06:45Make CreateDungeons() further separate out the dungeons
2:07:09Fall into an infinite loop with our random dungeon placement
🏃
2:07:09Fall into an infinite loop with our random dungeon placement
🏃
2:07:09Fall into an infinite loop with our random dungeon placement
🏃
2:07:27Decrease MinDungeonSeparationDistance from 100 to 10 in CreateDungeons()
2:07:27Decrease MinDungeonSeparationDistance from 100 to 10 in CreateDungeons()
2:07:27Decrease MinDungeonSeparationDistance from 100 to 10 in CreateDungeons()
2:07:47Dungeons are not distributed evenly
🏃
2:07:47Dungeons are not distributed evenly
🏃
2:07:47Dungeons are not distributed evenly
🏃
2:08:08Tweak the distance values in CreateDungeons()
2:08:08Tweak the distance values in CreateDungeons()
2:08:08Tweak the distance values in CreateDungeons()
2:09:36Our dungeons may now be too far away
🏃
2:09:36Our dungeons may now be too far away
🏃
2:09:36Our dungeons may now be too far away
🏃
2:10:02Decrease the distance values in CreateDungeons()
2:10:02Decrease the distance values in CreateDungeons()
2:10:02Decrease the distance values in CreateDungeons()
2:10:32Our dungeon placement seems not terrible
🏃
2:10:32Our dungeon placement seems not terrible
🏃
2:10:32Our dungeon placement seems not terrible
🏃
2:12:05Determine to let CreateWorld() use a random seed
📖
2:12:05Determine to let CreateWorld() use a random seed
📖
2:12:05Determine to let CreateWorld() use a random seed
📖
2:13:44graemephi That was Banjo-Kazooie, I'm sure of it
🗪
2:13:44graemephi That was Banjo-Kazooie, I'm sure of it
🗪
2:13:44graemephi That was Banjo-Kazooie, I'm sure of it
🗪
2:14:22Make CreateWorld() take an InitialSeed, augmenting game_input with Entropy and EntropyRequested
2:14:22Make CreateWorld() take an InitialSeed, augmenting game_input with Entropy and EntropyRequested
2:14:22Make CreateWorld() take an InitialSeed, augmenting game_input with Entropy and EntropyRequested
2:18:37Judicially requesting entropy
🗩
2:18:37Judicially requesting entropy
🗩
2:18:37Judicially requesting entropy
🗩
2:21:14Make WinMainCRTStartup() request Entropy, introducing Win32GetEntropy() using BCryptGenRandom()12
2:21:14Make WinMainCRTStartup() request Entropy, introducing Win32GetEntropy() using BCryptGenRandom()12
2:21:14Make WinMainCRTStartup() request Entropy, introducing Win32GetEntropy() using BCryptGenRandom()12
2:27:18Step in to Win32GetEntropy()
🏃
2:27:18Step in to Win32GetEntropy()
🏃
2:27:18Step in to Win32GetEntropy()
🏃
2:27:42Our procedural generation passes now differ
🏃
2:27:42Our procedural generation passes now differ
🏃
2:27:42Our procedural generation passes now differ
🏃
2:29:00That's good enough for now, with a glimpse into the future
🗩
2:29:00That's good enough for now, with a glimpse into the future
🗩
2:29:00That's good enough for now, with a glimpse into the future
🗩