Filling Areas Around Rooms
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
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 and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

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:01Set up to start something new: tag system clean-up, ground cover, lighting and world fill generation
🗩
0:01Set up to start something new: tag system clean-up, ground cover, lighting and world fill generation
🗩
0:01Set up to start something new: tag system clean-up, ground cover, lighting and world fill generation
🗩
3:02Demonstrate the need to surround the world with an apron of non-dead space
🏃
3:02Demonstrate the need to surround the world with an apron of non-dead space
🏃
3:02Demonstrate the need to surround the world with an apron of non-dead space
🏃
8:36Reacquaint ourselves with the world generation code
📖
8:36Reacquaint ourselves with the world generation code
📖
8:36Reacquaint ourselves with the world generation code
📖
11:42Introduce gen_apron and gen_apron_spec structs, for the world_generator to contain
11:42Introduce gen_apron and gen_apron_spec structs, for the world_generator to contain
11:42Introduce gen_apron and gen_apron_spec structs, for the world_generator to contain
14:47Reacquaint ourselves with the GenRoom() function
📖
14:47Reacquaint ourselves with the GenRoom() function
📖
14:47Reacquaint ourselves with the GenRoom() function
📖
17:13Introduce GenApron() based on GenRoom(), for GenerateRoom() to call
17:13Introduce GenApron() based on GenRoom(), for GenerateRoom() to call
17:13Introduce GenApron() based on GenRoom(), for GenerateRoom() to call
18:31Consider associating aprons with rooms
📖
18:31Consider associating aprons with rooms
📖
18:31Consider associating aprons with rooms
📖
20:32Augment get_room_spec with a gen_apron_spec, for GenerateRoom() to set
20:32Augment get_room_spec with a gen_apron_spec, for GenerateRoom() to set
20:32Augment get_room_spec with a gen_apron_spec, for GenerateRoom() to set
24:57Run the game with no adverse effects
🏃
24:57Run the game with no adverse effects
🏃
24:57Run the game with no adverse effects
🏃
25:15Introduce GenerateApron() loosely based on GenerateRoom()
25:15Introduce GenerateApron() loosely based on GenerateRoom()
25:15Introduce GenerateApron() loosely based on GenerateRoom()
28:47Determine to perform a spacial query of entities, to prevent GenerateApron() from clashing with existing entities
📖
28:47Determine to perform a spacial query of entities, to prevent GenerateApron() from clashing with existing entities
📖
28:47Determine to perform a spacial query of entities, to prevent GenerateApron() from clashing with existing entities
📖
31:10Set up GenerateApron() to generate a piece of apron where OverlappingEntitiesExist() returns false
31:10Set up GenerateApron() to generate a piece of apron where OverlappingEntitiesExist() returns false
31:10Set up GenerateApron() to generate a piece of apron where OverlappingEntitiesExist() returns false
44:25Implement OverlappingEntitiesExist()
44:25Implement OverlappingEntitiesExist()
44:25Implement OverlappingEntitiesExist()
48:11Consider removing all the world_position nonsense
📖
48:11Consider removing all the world_position nonsense
📖
48:11Consider removing all the world_position nonsense
📖
50:15Finish implementing GenerateApron(), and make CreateOrphanage() initialise an ApronSpec, introducing GenApronSpec()
50:15Finish implementing GenerateApron(), and make CreateOrphanage() initialise an ApronSpec, introducing GenApronSpec()
50:15Finish implementing GenerateApron(), and make CreateOrphanage() initialise an ApronSpec, introducing GenApronSpec()
54:38Check out our world's above-ground apron, to find that it is being over-generated
🏃
54:38Check out our world's above-ground apron, to find that it is being over-generated
🏃
54:38Check out our world's above-ground apron, to find that it is being over-generated
🏃
57:13Make GenerateApron() set collision volumes to facilitate the prevention of collisions
57:13Make GenerateApron() set collision volumes to facilitate the prevention of collisions
57:13Make GenerateApron() set collision volumes to facilitate the prevention of collisions
59:39Find that the apron is being less over-generated, but that we are not seeing its collision volume outlines
🏃
59:39Find that the apron is being less over-generated, but that we are not seeing its collision volume outlines
🏃
59:39Find that the apron is being less over-generated, but that we are not seeing its collision volume outlines
🏃
1:01:46Temporarily toggle of PushCube() in UpdateAndRenderEntities()
1:01:46Temporarily toggle of PushCube() in UpdateAndRenderEntities()
1:01:46Temporarily toggle of PushCube() in UpdateAndRenderEntities()
1:02:12Check out our apron's collision volumes
🏃
1:02:12Check out our apron's collision volumes
🏃
1:02:12Check out our apron's collision volumes
🏃
1:02:50Enable GenerateApron() to expand the Z-depth of its query regions, relative to the collision volumes
1:02:50Enable GenerateApron() to expand the Z-depth of its query regions, relative to the collision volumes
1:02:50Enable GenerateApron() to expand the Z-depth of its query regions, relative to the collision volumes
1:03:51Find that our expanded query region failed to prevent over-generation
🏃
1:03:51Find that our expanded query region failed to prevent over-generation
🏃
1:03:51Find that our expanded query region failed to prevent over-generation
🏃
1:04:26Toggle on PushCube() in UpdateAndRenderEntities()
🏃
🖮
1:04:26Toggle on PushCube() in UpdateAndRenderEntities()
🏃
🖮
1:04:26Toggle on PushCube() in UpdateAndRenderEntities()
🏃
🖮
1:05:10Temporarily make GenerateApron() use the expanded QueryRegion as the CollisionVolume
1:05:10Temporarily make GenerateApron() use the expanded QueryRegion as the CollisionVolume
1:05:10Temporarily make GenerateApron() use the expanded QueryRegion as the CollisionVolume
1:05:22Find that our expanded collision volume seems to prevent over-generation
🏃
1:05:22Find that our expanded collision volume seems to prevent over-generation
🏃
1:05:22Find that our expanded collision volume seems to prevent over-generation
🏃
1:06:32Let GenerateApron() set the CollisionVolume as normal and expand the QueryRegion's Z-depth in both directions
1:06:32Let GenerateApron() set the CollisionVolume as normal and expand the QueryRegion's Z-depth in both directions
1:06:32Let GenerateApron() set the CollisionVolume as normal and expand the QueryRegion's Z-depth in both directions
1:07:44Find that the apron is no longer being over-generated, but that we are colliding with the room volumes
🏃
1:07:44Find that the apron is no longer being over-generated, but that we are colliding with the room volumes
🏃
1:07:44Find that the apron is no longer being over-generated, but that we are colliding with the room volumes
🏃
1:10:26Prevent OverlappingEntitiesExist() from considering the room volumes, introducing IsRoom()
1:10:26Prevent OverlappingEntitiesExist() from considering the room volumes, introducing IsRoom()
1:10:26Prevent OverlappingEntitiesExist() from considering the room volumes, introducing IsRoom()
1:11:54Find that GenerateApron() is now generating pieces within rooms
🏃
1:11:54Find that GenerateApron() is now generating pieces within rooms
🏃
1:11:54Find that GenerateApron() is now generating pieces within rooms
🏃
1:12:38Let OverlappingEntitiesExist() consider the room volumes
1:12:38Let OverlappingEntitiesExist() consider the room volumes
1:12:38Let OverlappingEntitiesExist() consider the room volumes
1:13:15Hit and investigate the VI == BaseIndex assertion in PushQuad()
🏃
1:13:15Hit and investigate the VI == BaseIndex assertion in PushQuad()
🏃
1:13:15Hit and investigate the VI == BaseIndex assertion in PushQuad()
🏃
1:15:33Step in to PushQuad() in a debug build
🏃
1:15:33Step in to PushQuad() in a debug build
🏃
1:15:33Step in to PushQuad() in a debug build
🏃
1:16:53Fix PushVolumeOutline() to reserve enough space for the twelve line segments
1:16:53Fix PushVolumeOutline() to reserve enough space for the twelve line segments
1:16:53Fix PushVolumeOutline() to reserve enough space for the twelve line segments
1:17:14Find that we no longer hit that assertion
🏃
1:17:14Find that we no longer hit that assertion
🏃
1:17:14Find that we no longer hit that assertion
🏃
1:17:44Make GenerateApron() produce a flat, i.e. non-varying, apron
1:17:44Make GenerateApron() produce a flat, i.e. non-varying, apron
1:17:44Make GenerateApron() produce a flat, i.e. non-varying, apron
1:18:49Find that our apron resides just below floor level, where it should have collided with the floor
🏃
1:18:49Find that our apron resides just below floor level, where it should have collided with the floor
🏃
1:18:49Find that our apron resides just below floor level, where it should have collided with the floor
🏃
1:19:24Try to make GenerateApron() elevate the apron pieces upwards by half the wall height
1:19:24Try to make GenerateApron() elevate the apron pieces upwards by half the wall height
1:19:24Try to make GenerateApron() elevate the apron pieces upwards by half the wall height
1:20:06Find that our apron still resides below floor level
🏃
1:20:06Find that our apron still resides below floor level
🏃
1:20:06Find that our apron still resides below floor level
🏃
1:20:25Investigate our room-relative placement of the apron
📖
1:20:25Investigate our room-relative placement of the apron
📖
1:20:25Investigate our room-relative placement of the apron
📖
1:22:47Determine to respecify Z == 0 as the lowermost part of the room volume
🏃
1:22:47Determine to respecify Z == 0 as the lowermost part of the room volume
🏃
1:22:47Determine to respecify Z == 0 as the lowermost part of the room volume
🏃
1:24:01Make GenerateRoom() set the MinRoomP.Z to 0
1:24:01Make GenerateRoom() set the MinRoomP.Z to 0
1:24:01Make GenerateRoom() set the MinRoomP.Z to 0
1:24:45Find that the world still seems to be generated plausibly
🏃
1:24:45Find that the world still seems to be generated plausibly
🏃
1:24:45Find that the world still seems to be generated plausibly
🏃
1:25:39Change GenerateRoom() to position the rooms' min corner at 0, 0, 0
1:25:39Change GenerateRoom() to position the rooms' min corner at 0, 0, 0
1:25:39Change GenerateRoom() to position the rooms' min corner at 0, 0, 0
1:34:59Find that the walls remain centred
🏃
1:34:59Find that the walls remain centred
🏃
1:34:59Find that the walls remain centred
🏃
1:35:23Replace the MinRoomWP and MaxRoomWP in GenerateRoom()
1:35:23Replace the MinRoomWP and MaxRoomWP in GenerateRoom()
1:35:23Replace the MinRoomWP and MaxRoomWP in GenerateRoom()
1:37:26Find that all is fine
🏃
1:37:26Find that all is fine
🏃
1:37:26Find that all is fine
🏃
1:37:32Make GenerateRoom() factor in the -HalfTileDim to the ChangeBaseP
1:37:32Make GenerateRoom() factor in the -HalfTileDim to the ChangeBaseP
1:37:32Make GenerateRoom() factor in the -HalfTileDim to the ChangeBaseP
1:38:00Find that our rooms are tightly bounded
🏃
1:38:00Find that our rooms are tightly bounded
🏃
1:38:00Find that our rooms are tightly bounded
🏃
1:38:09Simplify the positioning of entities in GenerateRoom(), removing and replacing all calls to PlaceEntity()
1:38:09Simplify the positioning of entities in GenerateRoom(), removing and replacing all calls to PlaceEntity()
1:38:09Simplify the positioning of entities in GenerateRoom(), removing and replacing all calls to PlaceEntity()
1:46:06Find that we have reintroduced the half-tile offset for the walls
🏃
1:46:06Find that we have reintroduced the half-tile offset for the walls
🏃
1:46:06Find that we have reintroduced the half-tile offset for the walls
🏃
1:46:45Change GenerateRoom() to offset the room boundaries, and not the entities, by the HalfTileDim
1:46:45Change GenerateRoom() to offset the room boundaries, and not the entities, by the HalfTileDim
1:46:45Change GenerateRoom() to offset the room boundaries, and not the entities, by the HalfTileDim
1:51:01Find that our rooms and entities are positioned as desired
🏃
1:51:01Find that our rooms and entities are positioned as desired
🏃
1:51:01Find that our rooms and entities are positioned as desired
🏃
1:51:11Further simplify GenerateRoom(), removing variables and introducing GetTotalVolume() for it to call
1:51:11Further simplify GenerateRoom(), removing variables and introducing GetTotalVolume() for it to call
1:51:11Further simplify GenerateRoom(), removing variables and introducing GetTotalVolume() for it to call
1:56:58Find that we are still okay
🏃
1:56:58Find that we are still okay
🏃
1:56:58Find that we are still okay
🏃
1:57:18Simplify GenerateRoom() further still, introducing a version of ChunkPositionFromTilePosition() that takes a gen_v3
1:57:18Simplify GenerateRoom() further still, introducing a version of ChunkPositionFromTilePosition() that takes a gen_v3
1:57:18Simplify GenerateRoom() further still, introducing a version of ChunkPositionFromTilePosition() that takes a gen_v3
2:00:29Traverse the world with the determination to continue with the apron tomorrow
🏃
2:00:29Traverse the world with the determination to continue with the apron tomorrow
🏃
2:00:29Traverse the world with the determination to continue with the apron tomorrow
🏃
2:01:40Q&A
🗩
2:01:40Q&A
🗩
2:01:40Q&A
🗩
2:02:04vapenir Q: Why have a separate "apron" concept instead of just generating "rooms" on the sides?
🗪
2:02:04vapenir Q: Why have a separate "apron" concept instead of just generating "rooms" on the sides?
🗪
2:02:04vapenir Q: Why have a separate "apron" concept instead of just generating "rooms" on the sides?
🗪
2:03:58longboolean Q: Will aprons be underground and ground level only, or will you also have sky aprons for upper levels like in the case of a tall tower? You could have clouds, or birds or something. Might look neat with multiple layers, thicker clouds as you climb, etc.
🗪
2:03:58longboolean Q: Will aprons be underground and ground level only, or will you also have sky aprons for upper levels like in the case of a tall tower? You could have clouds, or birds or something. Might look neat with multiple layers, thicker clouds as you climb, etc.
🗪
2:03:58longboolean Q: Will aprons be underground and ground level only, or will you also have sky aprons for upper levels like in the case of a tall tower? You could have clouds, or birds or something. Might look neat with multiple layers, thicker clouds as you climb, etc.
🗪
2:04:51xdunex Q: How to link a third party library like glfw3.lib, any suggestions on where to read about it?1
🗪
2:04:51xdunex Q: How to link a third party library like glfw3.lib, any suggestions on where to read about it?1
🗪
2:04:51xdunex Q: How to link a third party library like glfw3.lib, any suggestions on where to read about it?1
🗪
2:07:03roam00010011 Q: Environment is very sterile because all placed static entities seem to be snapped to grid. Maybe vary the offset randomly from the tile center? Also the random height difference between floor tile could be severely reduced (who made that flooring, it's a hazard)
🗪
2:07:03roam00010011 Q: Environment is very sterile because all placed static entities seem to be snapped to grid. Maybe vary the offset randomly from the tile center? Also the random height difference between floor tile could be severely reduced (who made that flooring, it's a hazard)
🗪
2:07:03roam00010011 Q: Environment is very sterile because all placed static entities seem to be snapped to grid. Maybe vary the offset randomly from the tile center? Also the random height difference between floor tile could be severely reduced (who made that flooring, it's a hazard)
🗪
2:07:54centhusiast Q: Will you also replace XCount with Dim.x in the GenerateApron() function as you did with Tilecount.x and y?
🗪
2:07:54centhusiast Q: Will you also replace XCount with Dim.x in the GenerateApron() function as you did with Tilecount.x and y?
🗪
2:07:54centhusiast Q: Will you also replace XCount with Dim.x in the GenerateApron() function as you did with Tilecount.x and y?
🗪
2:08:22vapenir Q: Have you ever used Sony's (SN Systems) debugger for PS3? Someone on Handmade Network called it the best debugger they'd ever used, but didn't really go into detail about what it did right
🗪
2:08:22vapenir Q: Have you ever used Sony's (SN Systems) debugger for PS3? Someone on Handmade Network called it the best debugger they'd ever used, but didn't really go into detail about what it did right
🗪
2:08:22vapenir Q: Have you ever used Sony's (SN Systems) debugger for PS3? Someone on Handmade Network called it the best debugger they'd ever used, but didn't really go into detail about what it did right
🗪
2:09:47centhusiast Q: Have you had any unpleasant experience with the debugging on Linux?
🗪
2:09:47centhusiast Q: Have you had any unpleasant experience with the debugging on Linux?
🗪
2:09:47centhusiast Q: Have you had any unpleasant experience with the debugging on Linux?
🗪
2:10:03xdunex Q: Was the old Dune 2 game made using GDI or OpenGL?2,3,4,5
🗪
2:10:03xdunex Q: Was the old Dune 2 game made using GDI or OpenGL?2,3,4,5
🗪
2:10:03xdunex Q: Was the old Dune 2 game made using GDI or OpenGL?2,3,4,5
🗪
2:17:45Peruse the code for FLIER.CPP and PARTICLE.C from the Bonus Pack, drilling down into double buffering in DOS Mode 13h from XMAIN.ASM6,7
📖
2:17:45Peruse the code for FLIER.CPP and PARTICLE.C from the Bonus Pack, drilling down into double buffering in DOS Mode 13h from XMAIN.ASM6,7
📖
2:17:45Peruse the code for FLIER.CPP and PARTICLE.C from the Bonus Pack, drilling down into double buffering in DOS Mode 13h from XMAIN.ASM6,7
📖
2:29:36abarishu Q: You are surprisingly correct on those DOS VGA programming topics. "Vanilla" mode 13h was not double buffered
🗪
2:29:36abarishu Q: You are surprisingly correct on those DOS VGA programming topics. "Vanilla" mode 13h was not double buffered
🗪
2:29:36abarishu Q: You are surprisingly correct on those DOS VGA programming topics. "Vanilla" mode 13h was not double buffered
🗪
2:30:12Wrap it up
🗩
2:30:12Wrap it up
🗩
2:30:12Wrap it up
🗩