Handmade Hero»Episode Guide
Adding Interesting Tile Patterns
?
?

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:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
0:01Recap and set the stage for the day
🗩
2:19Balancing random and hand-coded procedural generation
🗩
2:19Balancing random and hand-coded procedural generation
🗩
2:19Balancing random and hand-coded procedural generation
🗩
6:00Demo the door pressure plates
🏃
6:00Demo the door pressure plates
🏃
6:00Demo the door pressure plates
🏃
7:21Describe our entity pattern generator
📖
7:21Describe our entity pattern generator
📖
7:21Describe our entity pattern generator
📖
10:03Augment gen_entity_pattern with a Difficulty for TileSwitchPattern() to use
10:03Augment gen_entity_pattern with a Difficulty for TileSwitchPattern() to use
10:03Augment gen_entity_pattern with a Difficulty for TileSwitchPattern() to use
14:09Discover 4coder's Index (Project)
🗹
14:09Discover 4coder's Index (Project)
🗹
14:09Discover 4coder's Index (Project)
🗹
16:38Set up TileSwitchPattern() to generate difficulty-based patterns
16:38Set up TileSwitchPattern() to generate difficulty-based patterns
16:38Set up TileSwitchPattern() to generate difficulty-based patterns
20:02Introduce tile_pattern for TileSwitchPattern() to use
20:02Introduce tile_pattern for TileSwitchPattern() to use
20:02Introduce tile_pattern for TileSwitchPattern() to use
22:41Separate game design from engine programming
🗩
22:41Separate game design from engine programming
🗩
22:41Separate game design from engine programming
🗩
24:17Introduce TileAlreadyExists()
24:17Introduce TileAlreadyExists()
24:17Introduce TileAlreadyExists()
24:594coder's indentation and f4_search_for_definition__project_wide
🗹
24:594coder's indentation and f4_search_for_definition__project_wide
🗹
24:594coder's indentation and f4_search_for_definition__project_wide
🗹
27:33Finish implementing TileAlreadyExists()
27:33Finish implementing TileAlreadyExists()
27:33Finish implementing TileAlreadyExists()
29:15Make TileSwitchPattern() generate a pattern that avoids existing tiles
29:15Make TileSwitchPattern() generate a pattern that avoids existing tiles
29:15Make TileSwitchPattern() generate a pattern that avoids existing tiles
35:34Introduce AppendTile()
35:34Introduce AppendTile()
35:34Introduce AppendTile()
36:41We have no tiles
🏃
36:41We have no tiles
🏃
36:41We have no tiles
🏃
36:59Fix the TileAlreadyExists() test in TileSwitchPattern()
36:59Fix the TileAlreadyExists() test in TileSwitchPattern()
36:59Fix the TileAlreadyExists() test in TileSwitchPattern()
37:07We still only get one tile
🏃
37:07We still only get one tile
🏃
37:07We still only get one tile
🏃
37:18Fix TileSwitchPattern() to pass random numbers to FindRandomOpenTile()
37:18Fix TileSwitchPattern() to pass random numbers to FindRandomOpenTile()
37:18Fix TileSwitchPattern() to pass random numbers to FindRandomOpenTile()
37:35We still only get one tile
🏃
37:35We still only get one tile
🏃
37:35We still only get one tile
🏃
37:48Double-check FindRandomOpenTile()
📖
37:48Double-check FindRandomOpenTile()
📖
37:48Double-check FindRandomOpenTile()
📖
39:21Slightly rewrite TileAlreadyExists() for consistency and clarity
39:21Slightly rewrite TileAlreadyExists() for consistency and clarity
39:21Slightly rewrite TileAlreadyExists() for consistency and clarity
40:28We're still only placing one tile
🏃
40:28We're still only placing one tile
🏃
40:28We're still only placing one tile
🏃
40:59Make TileSwitchPattern() generate exactly four tiles in the lowest Difficulty case
40:59Make TileSwitchPattern() generate exactly four tiles in the lowest Difficulty case
40:59Make TileSwitchPattern() generate exactly four tiles in the lowest Difficulty case
41:11We generated four tiles
🏃
41:11We generated four tiles
🏃
41:11We generated four tiles
🏃
41:52Check our random number generator
📖
41:52Check our random number generator
📖
41:52Check our random number generator
📖
42:35Test our random number generator in TileSwitchPattern()
42:35Test our random number generator in TileSwitchPattern()
42:35Test our random number generator in TileSwitchPattern()
46:14Our random number generator seems well distributed
🏃
46:14Our random number generator seems well distributed
🏃
46:14Our random number generator seems well distributed
🏃
46:34Decrease our random number generator test's sample count from 1000000 to 100
46:34Decrease our random number generator test's sample count from 1000000 to 100
46:34Decrease our random number generator test's sample count from 1000000 to 100
46:43Our random number generator has a touch of bias towards the second quadrant
🏃
46:43Our random number generator has a touch of bias towards the second quadrant
🏃
46:43Our random number generator has a touch of bias towards the second quadrant
🏃
47:29Increase our random number generator test's sample count from 100 to 1000
47:29Increase our random number generator test's sample count from 100 to 1000
47:29Increase our random number generator test's sample count from 100 to 1000
47:34Our random number generator seems well distributed
🏃
47:34Our random number generator seems well distributed
🏃
47:34Our random number generator seems well distributed
🏃
47:48Test _mm_aesdec_si128()1 in TileSwitchPattern()
47:48Test _mm_aesdec_si128()1 in TileSwitchPattern()
47:48Test _mm_aesdec_si128()1 in TileSwitchPattern()
52:36_mm_aesdec_si128() has a similar distribution to our generator
🏃
52:36_mm_aesdec_si128() has a similar distribution to our generator
🏃
52:36_mm_aesdec_si128() has a similar distribution to our generator
🏃
52:57Add a mixing step to our _mm_aesdec_si128() test
52:57Add a mixing step to our _mm_aesdec_si128() test
52:57Add a mixing step to our _mm_aesdec_si128() test
53:04_mm_aesdec_si128()'s distribution remains similar
🏃
53:04_mm_aesdec_si128()'s distribution remains similar
🏃
53:04_mm_aesdec_si128()'s distribution remains similar
🏃
53:16Decrease our _mm_aesdec_si128() test's sample count from 1000 to 100
53:16Decrease our _mm_aesdec_si128() test's sample count from 1000 to 100
53:16Decrease our _mm_aesdec_si128() test's sample count from 1000 to 100
53:28_mm_aesdec_si128() has a similar distribution to our generator
🏃
53:28_mm_aesdec_si128() has a similar distribution to our generator
🏃
53:28_mm_aesdec_si128() has a similar distribution to our generator
🏃
53:40Increase our _mm_aesdec_si128() test's sample count from 100 to 1000000
53:40Increase our _mm_aesdec_si128() test's sample count from 100 to 1000000
53:40Increase our _mm_aesdec_si128() test's sample count from 100 to 1000000
53:46_mm_aesdec_si128() remains well distributed
🏃
53:46_mm_aesdec_si128() remains well distributed
🏃
53:46_mm_aesdec_si128() remains well distributed
🏃
53:59Remove our prng test
53:59Remove our prng test
53:59Remove our prng test
54:54Set up TileSwitchPattern() to generate specified patterns
54:54Set up TileSwitchPattern() to generate specified patterns
54:54Set up TileSwitchPattern() to generate specified patterns
59:04krrsplat Q: After stream, you should mirror webcam so you are looking at the code
🗪
59:04krrsplat Q: After stream, you should mirror webcam so you are looking at the code
🗪
59:04krrsplat Q: After stream, you should mirror webcam so you are looking at the code
🗪
1:00:08an0nymal Q: Casey, I don't know if it's local to me, but I'm getting a lot of pixel flickering on the 4coder capture. Cam is fine
🗪
1:00:08an0nymal Q: Casey, I don't know if it's local to me, but I'm getting a lot of pixel flickering on the 4coder capture. Cam is fine
🗪
1:00:08an0nymal Q: Casey, I don't know if it's local to me, but I'm getting a lot of pixel flickering on the 4coder capture. Cam is fine
🗪
1:01:44binarium On source, it's very subtle, not an issue
🗪
1:01:44binarium On source, it's very subtle, not an issue
🗪
1:01:44binarium On source, it's very subtle, not an issue
🗪
1:03:27Spec out the pattern rules in TileSwitchPattern()
1:03:27Spec out the pattern rules in TileSwitchPattern()
1:03:27Spec out the pattern rules in TileSwitchPattern()
1:10:17Create an overloaded v3s version of +=
1:10:17Create an overloaded v3s version of +=
1:10:17Create an overloaded v3s version of +=
1:11:30We have horizontal patterns
🏃
1:11:30We have horizontal patterns
🏃
1:11:30We have horizontal patterns
🏃
1:12:11Implement the TilePattern_Scatter case in TileSwitchPattern()
1:12:11Implement the TilePattern_Scatter case in TileSwitchPattern()
1:12:11Implement the TilePattern_Scatter case in TileSwitchPattern()
1:13:59Split out the pattern computation and generation in TileSwitchPattern()
1:13:59Split out the pattern computation and generation in TileSwitchPattern()
1:13:59Split out the pattern computation and generation in TileSwitchPattern()
1:15:39We have vertical patterns
🏃
1:15:39We have vertical patterns
🏃
1:15:39We have vertical patterns
🏃
1:16:42Pick the TilePattern_Snake in TileSwitchPattern()
1:16:42Pick the TilePattern_Snake in TileSwitchPattern()
1:16:42Pick the TilePattern_Snake in TileSwitchPattern()
1:16:59We have snake patterns
🏃
1:16:59We have snake patterns
🏃
1:16:59We have snake patterns
🏃
1:17:30Increase our Tiles.MaxCount from 4 to 8 in TileSwitchPattern()
1:17:30Increase our Tiles.MaxCount from 4 to 8 in TileSwitchPattern()
1:17:30Increase our Tiles.MaxCount from 4 to 8 in TileSwitchPattern()
1:17:40We have longer snake patterns
🏃
1:17:40We have longer snake patterns
🏃
1:17:40We have longer snake patterns
🏃
1:18:39Increase our Tiles.MaxCount from 8 to 16 in TileSwitchPattern()
1:18:39Increase our Tiles.MaxCount from 8 to 16 in TileSwitchPattern()
1:18:39Increase our Tiles.MaxCount from 8 to 16 in TileSwitchPattern()
1:18:51Hit our out-of-bounds assertion in RegisterEntity()
🏃
1:18:51Hit our out-of-bounds assertion in RegisterEntity()
🏃
1:18:51Hit our out-of-bounds assertion in RegisterEntity()
🏃
1:19:23Enlarge the Tiles array from 12 to 16 in brain_switches
1:19:23Enlarge the Tiles array from 12 to 16 in brain_switches
1:19:23Enlarge the Tiles array from 12 to 16 in brain_switches
1:19:47We have even longer snake patterns
🏃
1:19:47We have even longer snake patterns
🏃
1:19:47We have even longer snake patterns
🏃
1:20:13Augment tile_pattern with a RequiredEmptyNeighborCount, for TileSwitchPattern() to use in the TilePattern_Snake case
1:20:13Augment tile_pattern with a RequiredEmptyNeighborCount, for TileSwitchPattern() to use in the TilePattern_Snake case
1:20:13Augment tile_pattern with a RequiredEmptyNeighborCount, for TileSwitchPattern() to use in the TilePattern_Snake case
1:24:56Our snake patterns work beautifully
🏃
1:24:56Our snake patterns work beautifully
🏃
1:24:56Our snake patterns work beautifully
🏃
1:26:00Pick the TilePattern_Branching in TileSwitchPattern()
1:26:00Pick the TilePattern_Branching in TileSwitchPattern()
1:26:00Pick the TilePattern_Branching in TileSwitchPattern()
1:26:11We have branching patterns
🏃
1:26:11We have branching patterns
🏃
1:26:11We have branching patterns
🏃
1:26:30++SwearCount
🗩
1:26:30++SwearCount
🗩
1:26:30++SwearCount
🗩
1:26:51We need a cuss word counter in the Episode Guide
🗩
1:26:51We need a cuss word counter in the Episode Guide
🗩
1:26:51We need a cuss word counter in the Episode Guide
🗩
1:27:39Pick the TilePattern_Scatter in TileSwitchPattern()
1:27:39Pick the TilePattern_Scatter in TileSwitchPattern()
1:27:39Pick the TilePattern_Scatter in TileSwitchPattern()
1:27:54We have scatter patterns
🏃
1:27:54We have scatter patterns
🏃
1:27:54We have scatter patterns
🏃
1:28:02Increase the Tiles.RequiredEmptyNeighborCount from 3 to 4 in TileSwitchPattern()
1:28:02Increase the Tiles.RequiredEmptyNeighborCount from 3 to 4 in TileSwitchPattern()
1:28:02Increase the Tiles.RequiredEmptyNeighborCount from 3 to 4 in TileSwitchPattern()
1:28:08We have disconnected scatter patterns
🏃
1:28:08We have disconnected scatter patterns
🏃
1:28:08We have disconnected scatter patterns
🏃
1:28:52Determine to fix the stairs-to-nowhere problem, and add a light to pressure plates
🏃
1:28:52Determine to fix the stairs-to-nowhere problem, and add a light to pressure plates
🏃
1:28:52Determine to fix the stairs-to-nowhere problem, and add a light to pressure plates
🏃
1:29:42Make TileSwitchPattern() add a light to the pressure plates
1:29:42Make TileSwitchPattern() add a light to the pressure plates
1:29:42Make TileSwitchPattern() add a light to the pressure plates
1:30:51We cannot see our lights
🏃
1:30:51We cannot see our lights
🏃
1:30:51We cannot see our lights
🏃
1:31:12Make UpdateAndRenderEntities() draw the light outlines
1:31:12Make UpdateAndRenderEntities() draw the light outlines
1:31:12Make UpdateAndRenderEntities() draw the light outlines
1:31:29See our lights
🏃
1:31:29See our lights
🏃
1:31:29See our lights
🏃
1:31:40Make TileSwitchPattern() elevate the lights
1:31:40Make TileSwitchPattern() elevate the lights
1:31:40Make TileSwitchPattern() elevate the lights
1:31:46Our lights sit above our pressure plates
🏃
1:31:46Our lights sit above our pressure plates
🏃
1:31:46Our lights sit above our pressure plates
🏃
1:32:11Make our pressure plates light up when pressed
1:32:11Make our pressure plates light up when pressed
1:32:11Make our pressure plates light up when pressed
1:33:35Our lights are no longer there
🏃
1:33:35Our lights are no longer there
🏃
1:33:35Our lights are no longer there
🏃
1:35:21Double-check our pressure plate light code
📖
1:35:21Double-check our pressure plate light code
📖
1:35:21Double-check our pressure plate light code
📖
1:37:10Make TileSwitchPattern() initialise the light with 5.0f Emission
1:37:10Make TileSwitchPattern() initialise the light with 5.0f Emission
1:37:10Make TileSwitchPattern() initialise the light with 5.0f Emission
1:37:37Our lights are back
🏃
1:37:37Our lights are back
🏃
1:37:37Our lights are back
🏃
1:38:30Make UpdateAndRenderEntities() keep the light Color's fourth component at 1.0f
1:38:30Make UpdateAndRenderEntities() keep the light Color's fourth component at 1.0f
1:38:30Make UpdateAndRenderEntities() keep the light Color's fourth component at 1.0f
1:39:48Our lights remain
🏃
1:39:48Our lights remain
🏃
1:39:48Our lights remain
🏃
1:39:52Try increasing the pressed light intensity from 5 to 10 in ExecuteBrainSwitches()
1:39:52Try increasing the pressed light intensity from 5 to 10 in ExecuteBrainSwitches()
1:39:52Try increasing the pressed light intensity from 5 to 10 in ExecuteBrainSwitches()
1:40:27Our pressure plates never light up
🏃
1:40:27Our pressure plates never light up
🏃
1:40:27Our pressure plates never light up
🏃
1:41:17Try making ExecuteBrainSwitches() operate on Pieces[2]
1:41:17Try making ExecuteBrainSwitches() operate on Pieces[2]
1:41:17Try making ExecuteBrainSwitches() operate on Pieces[2]
1:42:25Our pressure plates remain unlit
🏃
1:42:25Our pressure plates remain unlit
🏃
1:42:25Our pressure plates remain unlit
🏃
1:42:50Step on to the AddPieceLight() call in TileSwitchPattern()
🏃
1:42:50Step on to the AddPieceLight() call in TileSwitchPattern()
🏃
1:42:50Step on to the AddPieceLight() call in TileSwitchPattern()
🏃
1:44:49GenerateRoom() places occluders in the environment
📖
1:44:49GenerateRoom() places occluders in the environment
📖
1:44:49GenerateRoom() places occluders in the environment
📖
1:46:11Fix GenerateRoom() to place occluders more sensibly
1:46:11Fix GenerateRoom() to place occluders more sensibly
1:46:11Fix GenerateRoom() to place occluders more sensibly
1:46:59Make ExecuteBrainSwitches() loop through the pressure plate pieces to find its light
1:46:59Make ExecuteBrainSwitches() loop through the pressure plate pieces to find its light
1:46:59Make ExecuteBrainSwitches() loop through the pressure plate pieces to find its light
1:49:02Molly Hello there
🗪
🗩
1:49:02Molly Hello there
🗪
🗩
1:49:02Molly Hello there
🗪
🗩
1:50:27Our pressure plates light up
🏃
1:50:27Our pressure plates light up
🏃
1:50:27Our pressure plates light up
🏃
1:51:10Comment out AddPattern() in CreateDungeon()
1:51:10Comment out AddPattern() in CreateDungeon()
1:51:10Comment out AddPattern() in CreateDungeon()
1:51:28Molly I'm back
🗪
🗩
1:51:28Molly I'm back
🗪
🗩
1:51:28Molly I'm back
🗪
🗩
1:51:51Our dungeon is more brightly lit than expected
🏃
1:51:51Our dungeon is more brightly lit than expected
🏃
1:51:51Our dungeon is more brightly lit than expected
🏃
1:52:15Double-check our pressure plate lights
📖
1:52:15Double-check our pressure plate lights
📖
1:52:15Double-check our pressure plate lights
📖
1:52:38Our dungeon is not dark
🏃
1:52:38Our dungeon is not dark
🏃
1:52:38Our dungeon is not dark
🏃
1:53:40Restrict GenerateRoom() to generate a stairwell from a Lower to Upper floor (and not also the other way)
1:53:40Restrict GenerateRoom() to generate a stairwell from a Lower to Upper floor (and not also the other way)
1:53:40Restrict GenerateRoom() to generate a stairwell from a Lower to Upper floor (and not also the other way)
1:55:25Our stairwells are better placed
🏃
1:55:25Our stairwells are better placed
🏃
1:55:25Our stairwells are better placed
🏃
1:55:32Make GenerateRoom() prevent traversal under staircases
1:55:32Make GenerateRoom() prevent traversal under staircases
1:55:32Make GenerateRoom() prevent traversal under staircases
1:58:18We can't go under the stairs
🏃
1:58:18We can't go under the stairs
🏃
1:58:18We can't go under the stairs
🏃
1:59:12Q&A
🗩
1:59:12Q&A
🗩
1:59:12Q&A
🗩
2:00:25frozenzerker Audio was good
🗪
2:00:25frozenzerker Audio was good
🗪
2:00:25frozenzerker Audio was good
🗪
2:01:10mindmark42 Q: Any idea how to stop the snakes from getting stuck?
🗪
2:01:10mindmark42 Q: Any idea how to stop the snakes from getting stuck?
🗪
2:01:10mindmark42 Q: Any idea how to stop the snakes from getting stuck?
🗪
2:04:03i_love_codes Q: Following up on the question I asked you before… I thought about what you said, and I'm not sure I understand. I'm sending this now just so you know I'm writing the question right now
🗪
2:04:03i_love_codes Q: Following up on the question I asked you before… I thought about what you said, and I'm not sure I understand. I'm sending this now just so you know I'm writing the question right now
🗪
2:04:03i_love_codes Q: Following up on the question I asked you before… I thought about what you said, and I'm not sure I understand. I'm sending this now just so you know I'm writing the question right now
🗪
2:04:34an0nymal Q: Ouroboros! How about taking the thing we want to prevent and creating a unique game feature that emerges from it, i.e. Let the snake eat itself to become unstuck, etc?
🗪
2:04:34an0nymal Q: Ouroboros! How about taking the thing we want to prevent and creating a unique game feature that emerges from it, i.e. Let the snake eat itself to become unstuck, etc?
🗪
2:04:34an0nymal Q: Ouroboros! How about taking the thing we want to prevent and creating a unique game feature that emerges from it, i.e. Let the snake eat itself to become unstuck, etc?
🗪
2:05:02bulmanator Q: I've seen things about having a fixed update clock for the game (60Hz etc) but rendering at a higher frame rate requires you to interpolate between states. To do this would you just duplicate your game state each time and interpolate between the current and previous for every entity etc? That seems quite expensive
🗪
2:05:02bulmanator Q: I've seen things about having a fixed update clock for the game (60Hz etc) but rendering at a higher frame rate requires you to interpolate between states. To do this would you just duplicate your game state each time and interpolate between the current and previous for every entity etc? That seems quite expensive
🗪
2:05:02bulmanator Q: I've seen things about having a fixed update clock for the game (60Hz etc) but rendering at a higher frame rate requires you to interpolate between states. To do this would you just duplicate your game state each time and interpolate between the current and previous for every entity etc? That seems quite expensive
🗪
2:06:06mattiamanzati Q: I am looking up for a lightweight way to traverse 3D voxels along a ray and accumulate a color in OpenGL. Any suggestion about algorithms that are mostly branchless (if I remember correctly this was covered in Handmade Hero only on CPU)?2
🗪
2:06:06mattiamanzati Q: I am looking up for a lightweight way to traverse 3D voxels along a ray and accumulate a color in OpenGL. Any suggestion about algorithms that are mostly branchless (if I remember correctly this was covered in Handmade Hero only on CPU)?2
🗪
2:06:06mattiamanzati Q: I am looking up for a lightweight way to traverse 3D voxels along a ray and accumulate a color in OpenGL. Any suggestion about algorithms that are mostly branchless (if I remember correctly this was covered in Handmade Hero only on CPU)?2
🗪
2:07:47incodegames Q: I want to get deeper into C / assembly, but I already have three projects ongoing in C# and running my business. How do / did you manage learning new topics while inundated with other work?
🗪
2:07:47incodegames Q: I want to get deeper into C / assembly, but I already have three projects ongoing in C# and running my business. How do / did you manage learning new topics while inundated with other work?
🗪
2:07:47incodegames Q: I want to get deeper into C / assembly, but I already have three projects ongoing in C# and running my business. How do / did you manage learning new topics while inundated with other work?
🗪
2:10:08s0llygaming Q: One thing that always gets me: How do you stop yourself from over-complicating things? I always seem to try be "clever" and it almost always seems to be a bad idea
🗪
2:10:08s0llygaming Q: One thing that always gets me: How do you stop yourself from over-complicating things? I always seem to try be "clever" and it almost always seems to be a bad idea
🗪
2:10:08s0llygaming Q: One thing that always gets me: How do you stop yourself from over-complicating things? I always seem to try be "clever" and it almost always seems to be a bad idea
🗪
2:13:26combicombi Q: Would it be possible to have two switch tiles in very distant rooms that you have to hop on to open a door or unlock something?
🗪
2:13:26combicombi Q: Would it be possible to have two switch tiles in very distant rooms that you have to hop on to open a door or unlock something?
🗪
2:13:26combicombi Q: Would it be possible to have two switch tiles in very distant rooms that you have to hop on to open a door or unlock something?
🗪
2:15:18yungkev_ Hi Casey, you are looking very handsome today
🗪
2:15:18yungkev_ Hi Casey, you are looking very handsome today
🗪
2:15:18yungkev_ Hi Casey, you are looking very handsome today
🗪
2:15:44maliusarth That cat hair floating around
🗪
2:15:44maliusarth That cat hair floating around
🗪
2:15:44maliusarth That cat hair floating around
🗪
2:16:24i_love_codes Q: From what I understand, you started Handmade Hero because you thought people didn't know what it took to make a real game and it would be good if they did, so it seems that you do care about influencing people to do things a certain way. Don't you think that teaching is more than just giving people the facts? You also need to show them why they should care and that takes convincing
🗪
2:16:24i_love_codes Q: From what I understand, you started Handmade Hero because you thought people didn't know what it took to make a real game and it would be good if they did, so it seems that you do care about influencing people to do things a certain way. Don't you think that teaching is more than just giving people the facts? You also need to show them why they should care and that takes convincing
🗪
2:16:24i_love_codes Q: From what I understand, you started Handmade Hero because you thought people didn't know what it took to make a real game and it would be good if they did, so it seems that you do care about influencing people to do things a certain way. Don't you think that teaching is more than just giving people the facts? You also need to show them why they should care and that takes convincing
🗪
2:23:18mvargasmoran handmade_hero I still enjoy your rants. There's truth to them
🗪
2:23:18mvargasmoran handmade_hero I still enjoy your rants. There's truth to them
🗪
2:23:18mvargasmoran handmade_hero I still enjoy your rants. There's truth to them
🗪
2:24:13longboolean Q: Do you find value in checking out other parts of the computing space, even those you disagree with? Without interfering, of course
🗪
2:24:13longboolean Q: Do you find value in checking out other parts of the computing space, even those you disagree with? Without interfering, of course
🗪
2:24:13longboolean Q: Do you find value in checking out other parts of the computing space, even those you disagree with? Without interfering, of course
🗪
2:26:45i_love_codes Q: Hope it's okay to ask one last question. If tomorrow everyone started using JavaScript for everything, you wouldn't care at all? Like, you will probably always use software written by other people. Wouldn't it be better that software was of good quality and, if you agree with that, shouldn't you try to influence people to care about software being high quality?
🗪
2:26:45i_love_codes Q: Hope it's okay to ask one last question. If tomorrow everyone started using JavaScript for everything, you wouldn't care at all? Like, you will probably always use software written by other people. Wouldn't it be better that software was of good quality and, if you agree with that, shouldn't you try to influence people to care about software being high quality?
🗪
2:26:45i_love_codes Q: Hope it's okay to ask one last question. If tomorrow everyone started using JavaScript for everything, you wouldn't care at all? Like, you will probably always use software written by other people. Wouldn't it be better that software was of good quality and, if you agree with that, shouldn't you try to influence people to care about software being high quality?
🗪
2:30:56filmore3 Why does JavaScript suck? Modern JavaScript is pretty nice
🗪
2:30:56filmore3 Why does JavaScript suck? Modern JavaScript is pretty nice
🗪
2:30:56filmore3 Why does JavaScript suck? Modern JavaScript is pretty nice
🗪
2:32:47Wrap it up
🗩
2:32:47Wrap it up
🗩
2:32:47Wrap it up
🗩