Fix some incorrectly converted annotations

Also apply some :speech categorisation
This commit is contained in:
Matt Mascarenhas 2018-03-07 21:48:09 +00:00
parent 73ff53a766
commit 5f50109993
411 changed files with 846 additions and 843 deletions

View File

@ -14,8 +14,8 @@
[38:31][CreateDIBSection() usage and explanation] [38:31][CreateDIBSection() usage and explanation]
[48:19][About freeing and creating a new DIBSection] [48:19][About freeing and creating a new DIBSection]
[53:42][Device context and Win32ResizeDIBSection()] [53:42][Device context and Win32ResizeDIBSection()]
[1:03:23][Q&A] [1:03:23][Q&A][:speech]
[1:03:37][ssylvan: Remark on not needing to use CreateDIBSection/CreateCompatibleDC and just allocating the array ourselves] [1:03:37][@ssylvan][Remark on not needing to use CreateDIBSection/CreateCompatibleDC and just allocating the array ourselves]
[1:06:47][Remark on the change to the archiving of Q&A sessions (they are now combined with the main day video)] [1:06:47][Remark on the change to the archiving of Q&A sessions (they are now combined with the main day video)]
[1:08:37][Will you be using sleep()?] [1:08:37][Will you be using sleep()?]
[1:08:59][Could you go back through how you got Visual Studio to cooperate?] [1:08:59][Could you go back through how you got Visual Studio to cooperate?]
@ -23,10 +23,10 @@
[1:12:20][Are you going to do a more detailed Intro To C series alongside this one?] [1:12:20][Are you going to do a more detailed Intro To C series alongside this one?]
[1:13:40][Can you explain what exactly a void* is? A pointer to nothing?] [1:13:40][Can you explain what exactly a void* is? A pointer to nothing?]
[1:20:03][Any new thoughts on IMGUI since you made that video a few years ago?] [1:20:03][Any new thoughts on IMGUI since you made that video a few years ago?]
[1:21:15][ssylvan: Follow up on the previous remark about StretchDIBits, it can take a custom array as long as it is DWORD aligned] [1:21:15][@ssylvan][Follow up on the previous remark about StretchDIBits, it can take a custom array as long as it is DWORD aligned]
[1:23:13][When will the source be available?] [1:23:13][When will the source be available?]
[1:23:30][When using emacs, I find it hard to use meta key with F and B to skip words, how do you do it so fast?] [1:23:30][When using emacs, I find it hard to use meta key with F and B to skip words, how do you do it so fast?]
[1:23:48][How come !=0 is true in C, and return values of main and functions is 0 if everything is okay?] [1:23:48][How come !=0 is true in C, and return values of main and functions is 0 if everything is okay?]
[1:26:18][Sean Barrett: Remark on functions with multiple return values "Pre ANSI C didn't allow return structs"] [1:26:18][@nothings2][Remark on functions with multiple return values "Pre ANSI C didn't allow return structs"]
[1:28:24][Any reason you put the type in a line above the function name?] [1:28:24][Any reason you put the type in a line above the function name?]
[/video] [/video]

View File

@ -29,7 +29,7 @@
[54:25][Changing DrawWeirdGradient() to use a 32-bit pointer and write each pixel in one call using bitwise operations] [54:25][Changing DrawWeirdGradient() to use a 32-bit pointer and write each pixel in one call using bitwise operations]
[58:38][Verification of lack of memory leaks] [58:38][Verification of lack of memory leaks]
[59:44][TOTAL SYSTEM MELTDOWN] [59:44][TOTAL SYSTEM MELTDOWN]
[1:02:07][Q&A] [1:02:07][Q&A][:speech]
[1:02:10][Is there a reason you prefer using 0 instead of NULL?] [1:02:10][Is there a reason you prefer using 0 instead of NULL?]
[1:03:18][Clarification about sized typedefs] [1:03:18][Clarification about sized typedefs]
[1:04:58][What would happen if you called malloc() instead of VirtualAlloc()?] [1:04:58][What would happen if you called malloc() instead of VirtualAlloc()?]

View File

@ -17,7 +17,7 @@
[52:44][Deep dive on the size of the stack] [52:44][Deep dive on the size of the stack]
[55:50][STACK OVERFLOW ACHIEVED] [55:50][STACK OVERFLOW ACHIEVED]
[1:01:45][Step-through resumed] [1:01:45][Step-through resumed]
[1:23:35][Q&A] [1:23:35][Q&A][:speech]
[1:24:06][Would it be a good or bad idea to get one DeviceContext at the beginning of the program and use that for every iteration of the main loop?] [1:24:06][Would it be a good or bad idea to get one DeviceContext at the beginning of the program and use that for every iteration of the main loop?]
[1:26:06][Chihuahua on speed confirmed] [1:26:06][Chihuahua on speed confirmed]
[1:26:22][Why do you tell Windows you handle messages you don't really handle?] [1:26:22][Why do you tell Windows you handle messages you don't really handle?]

View File

@ -14,7 +14,7 @@
[51:36][Creating and Configuring the Secondary Buffer] [51:36][Creating and Configuring the Secondary Buffer]
[56:38][Let's try it] [56:38][Let's try it]
[1:00:46][Final Thoughts] [1:00:46][Final Thoughts]
[1:02:05][Q&A] [1:02:05][Q&A][:speech]
[1:04:05][Fixing WaveFormat order] [1:04:05][Fixing WaveFormat order]
[1:06:07][Do you use data-structures like linked-list, binary trees..?] [1:06:07][Do you use data-structures like linked-list, binary trees..?]
[1:06:34][Can you explain again why you need two buffers instead of just doing everything in one?] [1:06:34][Can you explain again why you need two buffers instead of just doing everything in one?]

View File

@ -18,7 +18,7 @@
[59:22][Don't forget to Unlock the buffer] [59:22][Don't forget to Unlock the buffer]
[1:00:58][Final Thoughts] [1:00:58][Final Thoughts]
[1:02:17][Review of mod operation and how we used it] [1:02:17][Review of mod operation and how we used it]
[1:10:30][Q&A] [1:10:30][Q&A][:speech]
[1:11:09][Will future broacasts use this Europe-friendly time?] [1:11:09][Will future broacasts use this Europe-friendly time?]
[1:11:21][Why not XAudio2?] [1:11:21][Why not XAudio2?]
[1:12:43][Are we going to factor sound playing to a seperate function?] [1:12:43][Are we going to factor sound playing to a seperate function?]

View File

@ -18,7 +18,7 @@
[1:03:46][Where did it go?] [1:03:46][Where did it go?]
[1:04:08][Eureka!] [1:04:08][Eureka!]
[1:05:22][Victory] [1:05:22][Victory]
[1:09:52][Q&A] [1:09:52][Q&A][:speech]
[1:10:07][In D this bug couldn't have happened. D always initializes variables.] [1:10:07][In D this bug couldn't have happened. D always initializes variables.]
[1:13:36][How do you know that ByteToLock is far enough ahead of the PlayCursor?] [1:13:36][How do you know that ByteToLock is far enough ahead of the PlayCursor?]
[1:15:40][Try \[compiling with\] -W3 or -W4] [1:15:40][Try \[compiling with\] -W3 or -W4]
@ -46,5 +46,5 @@
[1:50:47][Can we do an episode on emacs?] [1:50:47][Can we do an episode on emacs?]
[1:51:33][Fix: XInput - missing dependencies] [1:51:33][Fix: XInput - missing dependencies]
[1:53:45][Fix: Arithmetic for stick values] [1:53:45][Fix: Arithmetic for stick values]
[2:01:55][Sign off] [2:01:55][Sign off][:speech]
[/video] [/video]

View File

@ -15,7 +15,7 @@
[56:43][Use wsprintf() to print our timings as floats] [56:43][Use wsprintf() to print our timings as floats]
[59:18][A bit more about wsprintf()] [59:18][A bit more about wsprintf()]
[1:02:05][Final Thoughts] [1:02:05][Final Thoughts]
[1:04:32][Q&A] [1:04:32][Q&A][:speech]
[1:04:46][RDTSC returns unsigned int] [1:04:46][RDTSC returns unsigned int]
[1:05:28][Explanation of how C handles division based on type] [1:05:28][Explanation of how C handles division based on type]
[1:07:34][How compiler optimizations affect the execution time] [1:07:34][How compiler optimizations affect the execution time]

View File

@ -13,7 +13,7 @@
[44:31][Game as a service to the OS (architecture style 2)] [44:31][Game as a service to the OS (architecture style 2)]
[47:15][Implementing style 2] [47:15][Implementing style 2]
[51:30][GameUpdateAndRender() - moving RenderWeirdGradient to game code] [51:30][GameUpdateAndRender() - moving RenderWeirdGradient to game code]
[1:01:00][Q&A] [1:01:00][Q&A][:speech]
[1:01:23][Seems 'unsafe' to include the platform independent code after including the platform specific headers] [1:01:23][Seems 'unsafe' to include the platform independent code after including the platform specific headers]
[1:03:22][Would you always orchestrate how you do threading in the platform layer or does it make sense for the platform layer to also provide a more generic threading job service?] [1:03:22][Would you always orchestrate how you do threading in the platform layer or does it make sense for the platform layer to also provide a more generic threading job service?]
[1:05:12][You said last stream you didn't really like showing the FPS because you didn't find it useful. Can you explain that?] [1:05:12][You said last stream you didn't really like showing the FPS because you didn't find it useful. Can you explain that?]

View File

@ -18,7 +18,7 @@
[53:54][The remaining jank] [53:54][The remaining jank]
[57:27][Tweak the build.bat] [57:27][Tweak the build.bat]
[58:47][Final Thoughts] [58:47][Final Thoughts]
[59:30][Q&A] [59:30][Q&A][:speech]
[1:00:16][Will we use alloca to store pointers to game objects that are local to the player?] [1:00:16][Will we use alloca to store pointers to game objects that are local to the player?]
[1:04:29][If the DirectSound Lock fails, you'll pass garbage pointers to the game logic.] [1:04:29][If the DirectSound Lock fails, you'll pass garbage pointers to the game logic.]
[1:05:31][When you say 60fps may not be feasible do you mean on non-PC platforms?] [1:05:31][When you say 60fps may not be feasible do you mean on non-PC platforms?]
@ -39,5 +39,5 @@
[1:31:11][I've heard the brain treats sounds within 10ms as in-sync?] [1:31:11][I've heard the brain treats sounds within 10ms as in-sync?]
[1:31:39][When you work with temporary memory are there dangers? How do we protect against them?] [1:31:39][When you work with temporary memory are there dangers? How do we protect against them?]
[1:33:21][As a rhythm game player, I can notice audio sync off as little as 10ms...] [1:33:21][As a rhythm game player, I can notice audio sync off as little as 10ms...]
[1:35:03][Sign Off] [1:35:03][Sign Off][:speech]
[/video] [/video]

View File

@ -23,7 +23,7 @@
[58:50][But Casey, what about the stick?] [58:50][But Casey, what about the stick?]
[1:00:11][Normalizing our stick values] [1:00:11][Normalizing our stick values]
[1:04:54][Wrap up and Final Thoughts] [1:04:54][Wrap up and Final Thoughts]
[1:06:55][Q&A] [1:06:55][Q&A][:speech]
[1:07:05][When normalizing the thumbstick value, is it worse to just add 32768 then multiply it by 2/65535 then subtract 1? I don't like the necessary if statement personally.] [1:07:05][When normalizing the thumbstick value, is it worse to just add 32768 then multiply it by 2/65535 then subtract 1? I don't like the necessary if statement personally.]
[1:08:45][Nitpick, but is it a bit misleading that the half transition count is zero or one, rather than an actual count?] [1:08:45][Nitpick, but is it a bit misleading that the half transition count is zero or one, rather than an actual count?]
[1:09:17][Will we be completely ignoring platform code for most of the rest of the series?] [1:09:17][Will we be completely ignoring platform code for most of the rest of the series?]
@ -45,5 +45,5 @@
[1:28:25][Would you be fine with people using the platform as a base for making their own games, with attribution?] [1:28:25][Would you be fine with people using the platform as a base for making their own games, with attribution?]
[1:29:49][How much will you need to explore other platforms before knowing what the abstraction API will look like?] [1:29:49][How much will you need to explore other platforms before knowing what the abstraction API will look like?]
[1:30:26][What kinds of numerical methods are used in game physics?] [1:30:26][What kinds of numerical methods are used in game physics?]
[1:31:26][Final Wrap Up] [1:31:26][Final Wrap Up][:speech]
[/video] [/video]

View File

@ -23,7 +23,7 @@
[51:30][Debugging] [51:30][Debugging]
[55:07][Mission accomplished.] [55:07][Mission accomplished.]
[56:24][TODO: Pass timing info to game] [56:24][TODO: Pass timing info to game]
[58:24][Q&A] [58:24][Q&A][:speech]
[59:20][Reasoning behind Main Memory Pool vs Dynamic Allocation?] [59:20][Reasoning behind Main Memory Pool vs Dynamic Allocation?]
[1:03:31][Why use the void* in game_memory?] [1:03:31][Why use the void* in game_memory?]
[1:04:13][Elaborate on Permanent vs Transient storage?] [1:04:13][Elaborate on Permanent vs Transient storage?]
@ -50,5 +50,5 @@
[1:29:27][Did you pass different flags to VirtualAlloc for permanent and transient storage?] [1:29:27][Did you pass different flags to VirtualAlloc for permanent and transient storage?]
[1:29:54][What are the 'other reasons' for specifying a BaseAddress.] [1:29:54][What are the 'other reasons' for specifying a BaseAddress.]
[1:31:01][Is it possible the pool will be fragmented?] [1:31:01][Is it possible the pool will be fragmented?]
[1:33:10][Sign Off] [1:33:10][Sign Off][:speech]
[/video] [/video]

View File

@ -17,7 +17,7 @@
[56:40][Editing the .emacs file] [56:40][Editing the .emacs file]
[58:27][Breaking the .emacs file] [58:27][Breaking the .emacs file]
[1:00:19][An IMPORTANT note on the safety of file I/O code] [1:00:19][An IMPORTANT note on the safety of file I/O code]
[1:02:15][Q&A] [1:02:15][Q&A][:speech]
[1:02:54][Will the game be able to carry on in spite of some big time failure, like a graphics device reset. And does software rendering make that easier to deal with?] [1:02:54][Will the game be able to carry on in spite of some big time failure, like a graphics device reset. And does software rendering make that easier to deal with?]
[1:04:28][Would it make sense to call normal GetFileSize() and then assert that the high 32-bit value is zero?] [1:04:28][Would it make sense to call normal GetFileSize() and then assert that the high 32-bit value is zero?]
[1:06:00][Would it be useful for us to write our own allocation function that specifically allocates sections of our already-reserved temporary memory? I am having trouble understanding why we are doing separate allocations.] [1:06:00][Would it be useful for us to write our own allocation function that specifically allocates sections of our already-reserved temporary memory? I am having trouble understanding why we are doing separate allocations.]

View File

@ -11,7 +11,7 @@
[41:25][-Fm <map file path> Creating a map file and looking at it] [41:25][-Fm <map file path> Creating a map file and looking at it]
[46:10][Why the names are mangled in the .map file produced with the compiler switch of -Fm] [46:10][Why the names are mangled in the .map file produced with the compiler switch of -Fm]
[50:10][Start moving keyboard input into the non-platform code] [50:10][Start moving keyboard input into the non-platform code]
[1:02:52][Q&A] [1:02:52][Q&A][:speech]
[1:04:33][Question: -Oi , Why would anyone not want it active] [1:04:33][Question: -Oi , Why would anyone not want it active]
[1:06:02][Question: How do we add -Wx -W4 to the commandline switches if developing in VisualStudio] [1:06:02][Question: How do we add -Wx -W4 to the commandline switches if developing in VisualStudio]
[1:07:07][Question: Would turning on -Od be a good idea to use in the normal build] [1:07:07][Question: Would turning on -Od be a good idea to use in the normal build]

View File

@ -21,7 +21,7 @@
[56:44][Why did we overrun the buffer?] [56:44][Why did we overrun the buffer?]
[59:26][Adding some last minute keyboard inputs] [59:26][Adding some last minute keyboard inputs]
[1:00:06][Final Thoughts] [1:00:06][Final Thoughts]
[1:02:28][Q&A] [1:02:28][Q&A][:speech]
[1:02:50][Check the array in the Buttons union, you might want 12 now that you've added start and back] [1:02:50][Check the array in the Buttons union, you might want 12 now that you've added start and back]
[1:08:54][Is that some copypasta, or is it really supposed to be all MoveLefts?] [1:08:54][Is that some copypasta, or is it really supposed to be all MoveLefts?]
[1:11:24][Could it be good to apply some integration on the keys, so we don't just set the value to binary -1/1?] [1:11:24][Could it be good to apply some integration on the keys, so we don't just set the value to binary -1/1?]
@ -38,5 +38,5 @@
[1:33:17][You deleted the Min/Max macro TODO...] [1:33:17][You deleted the Min/Max macro TODO...]
[1:34:03][So when you use the ZeroController, why not just go *NewKeyboardController = {}?] [1:34:03][So when you use the ZeroController, why not just go *NewKeyboardController = {}?]
[1:35:29][stddef should include offsetof(), you can use that to make your assert a little simpler.] [1:35:29][stddef should include offsetof(), you can use that to make your assert a little simpler.]
[1:37:56][Final Wrap-Up] [1:37:56][Final Wrap-Up][:speech]
[/video] [/video]

View File

@ -11,7 +11,7 @@
[40:41][Compressing/Refactoring Clocking stats] [40:41][Compressing/Refactoring Clocking stats]
[49:05][Implementing sleep to not melt our CPU] [49:05][Implementing sleep to not melt our CPU]
[53:20][Setting the Windows scheduler granularity with timeBeginPeriod()] [53:20][Setting the Windows scheduler granularity with timeBeginPeriod()]
[1:00:30][Q&A] [1:00:30][Q&A][:speech]
[1:01:08][Question: If we are locking the frame rate. Would that not mean that someone with a lower end computer, would have a slower game speed to others] [1:01:08][Question: If we are locking the frame rate. Would that not mean that someone with a lower end computer, would have a slower game speed to others]
[1:02:41][Question: Even if you could get the refresh rate of the monitor, how do you sync with it on the vertical blink] [1:02:41][Question: Even if you could get the refresh rate of the monitor, how do you sync with it on the vertical blink]
[1:03:52][Question: Doesn't the sleep function go in the surrounding IF instead of the WHILE loop] [1:03:52][Question: Doesn't the sleep function go in the surrounding IF instead of the WHILE loop]

View File

@ -22,7 +22,7 @@
[1:12:00][How much granularity we have] [1:12:00][How much granularity we have]
[1:16:20][Audio latency issue found] [1:16:20][Audio latency issue found]
[1:19:50][Closing remarks] [1:19:50][Closing remarks]
[1:20:28][Q&A] [1:20:28][Q&A][:speech]
[1:21:13][Are you setup to use ASI Sound Drivers?] [1:21:13][Are you setup to use ASI Sound Drivers?]
[1:22:05][Is your audio pointer code calculating independently of the variable-fixed visual frames per second?] [1:22:05][Is your audio pointer code calculating independently of the variable-fixed visual frames per second?]
[1:24:35][What sort of problems can high audio latency introduce?] [1:24:35][What sort of problems can high audio latency introduce?]
@ -35,5 +35,5 @@
[1:40:14][Would rendering at 60 FPS help with the audio latency?] [1:40:14][Would rendering at 60 FPS help with the audio latency?]
[1:41:16][Could you change latency values?] [1:41:16][Could you change latency values?]
[1:41:33][Is it possible that OBS is affecting the audio latency?] [1:41:33][Is it possible that OBS is affecting the audio latency?]
[1:42:02][Closing remarks] [1:42:02][Closing remarks][:speech]
[/video] [/video]

View File

@ -43,7 +43,7 @@
[2:10:53][Improving our estimate of the PlayCursor position to reduce latency] [2:10:53][Improving our estimate of the PlayCursor position to reduce latency]
[2:17:59][Taking a look at how our estimate lines up] [2:17:59][Taking a look at how our estimate lines up]
[2:19:13][Drawing our 480 sample jitter window] [2:19:13][Drawing our 480 sample jitter window]
[2:22:15][Q&A] [2:22:15][Q&A][:speech]
[2:22:58][Did you try the audio without OBS?] [2:22:58][Did you try the audio without OBS?]
[2:24:15][Is it inexpensive to query for the play cursor and the write cursor?] [2:24:15][Is it inexpensive to query for the play cursor and the write cursor?]
[2:25:03][Audio seems to be the most complex part until now, which will be the next most complicated thing?] [2:25:03][Audio seems to be the most complex part until now, which will be the next most complicated thing?]
@ -58,5 +58,5 @@
[2:39:55][Callback to earlier half of question: (I'm sorry if I'm being slow, but I don't truly understand why the audio is skipping.) The original audio skipped when we moved the latency to be inside of three frames.] [2:39:55][Callback to earlier half of question: (I'm sorry if I'm being slow, but I don't truly understand why the audio is skipping.) The original audio skipped when we moved the latency to be inside of three frames.]
[2:42:25][If it's not too much of an issue, can we have line numbers on the side when you are coding so we can get a grip of where you are.] [2:42:25][If it's not too much of an issue, can we have line numbers on the side when you are coding so we can get a grip of where you are.]
[2:43:08][It's more likely to be the accumulation of a small value onto a larger value that is a numerical problem. Mantissas not lining up.] [2:43:08][It's more likely to be the accumulation of a small value onto a larger value that is a numerical problem. Mantissas not lining up.]
[2:44:03][Wrap-up] [2:44:03][Wrap-up][:speech]
[/video] [/video]

View File

@ -13,7 +13,7 @@
[50:17][Moving local persist variables from the dll to game_state] [50:17][Moving local persist variables from the dll to game_state]
[52:31][Avoid locking the dll to allow rewriting] [52:31][Avoid locking the dll to allow rewriting]
[1:02:00][Episode recap] [1:02:00][Episode recap]
[1:03:37][Q&A] [1:03:37][Q&A][:speech]
[1:03:51][-LD to build a dll and removing incremental building] [1:03:51][-LD to build a dll and removing incremental building]
[1:06:23][Question: We have small code right now. How does dynamic linking and compiling to an exe work with huge games that are multiple gigs?] [1:06:23][Question: We have small code right now. How does dynamic linking and compiling to an exe work with huge games that are multiple gigs?]
[1:07:39][Casey spoils tomorrows stream by telling people not to spoil it] [1:07:39][Casey spoils tomorrows stream by telling people not to spoil it]

View File

@ -8,7 +8,7 @@
[35:00][Compare File Times] [35:00][Compare File Times]
[39:49][Finding the the dir of the executable so we can find the .dll] [39:49][Finding the the dir of the executable so we can find the .dll]
[50:25][String Processing Code] [50:25][String Processing Code]
[1:01:25][Q&A] [1:01:25][Q&A][:speech]
[1:02:24][Question: How do you manage to time your coding so perfectly] [1:02:24][Question: How do you manage to time your coding so perfectly]
[1:02:34][Question: You mentioned yesterday you had something from a previous days but never did] [1:02:34][Question: You mentioned yesterday you had something from a previous days but never did]
[1:03:31][Question: Will this capability be in the shipping game or will it only be for debuging] [1:03:31][Question: Will this capability be in the shipping game or will it only be for debuging]

View File

@ -26,7 +26,7 @@
[59:47][Transparent Window! And Access Violation!] [59:47][Transparent Window! And Access Violation!]
[1:01:56][Improvements to transparent window.] [1:01:56][Improvements to transparent window.]
[1:03:47][Final Thoughts] [1:03:47][Final Thoughts]
[1:06:24][Q&A] [1:06:24][Q&A][:speech]
[1:06:50][Does Win32PlayBackInput need to return status in case the file read fails and/or reaches the end, since in those cases the function output data structures will be stale or invalid?] [1:06:50][Does Win32PlayBackInput need to return status in case the file read fails and/or reaches the end, since in those cases the function output data structures will be stale or invalid?]
[1:08:36][Will this break when you make changes to the game_state structure?] [1:08:36][Will this break when you make changes to the game_state structure?]
[1:11:30][Why didn't you use a switch for all the VKCode stuff?] [1:11:30][Why didn't you use a switch for all the VKCode stuff?]
@ -53,5 +53,5 @@
[1:38:43][Couldn't you create an offset pointer struct which overloads the unary * operator?] [1:38:43][Couldn't you create an offset pointer struct which overloads the unary * operator?]
[1:40:43][Have you got some good explanation on how you architect code, is that in the text you wrote about your work on the Witness?] [1:40:43][Have you got some good explanation on how you architect code, is that in the text you wrote about your work on the Witness?]
[1:42:06][I have to spend a lot of time unlearning what I was taught just to get to features which should be easy, but were made hard by the kind of programming I learned in school. Have you had a similar painful unlearning process?] [1:42:06][I have to spend a lot of time unlearning what I was taught just to get to features which should be easy, but were made hard by the kind of programming I learned in school. Have you had a similar painful unlearning process?]
[1:44:51][Wrap-up] [1:44:51][Wrap-up][:speech]
[/video] [/video]

View File

@ -24,7 +24,7 @@
[1:04:06][So what are large pages?] [1:04:06][So what are large pages?]
[1:05:26][Changing VirtualAlloc() to use large pages] [1:05:26][Changing VirtualAlloc() to use large pages]
[1:07:18][Putting aside the large page support for later] [1:07:18][Putting aside the large page support for later]
[1:08:26][Q&A] [1:08:26][Q&A][:speech]
[1:09:50][Can we go over really fast an overview of the game recording code?] [1:09:50][Can we go over really fast an overview of the game recording code?]
[1:14:16][When you're saving the game_state snapshot, how big is the file?] [1:14:16][When you're saving the game_state snapshot, how big is the file?]
[1:15:25][Can you check if the StringLength() needs a win32 prefix, or is this game code?] [1:15:25][Can you check if the StringLength() needs a win32 prefix, or is this game code?]
@ -49,5 +49,5 @@
[1:34:21][Do you think the recording technique will run into problems if we have multiple threads using the game_state?] [1:34:21][Do you think the recording technique will run into problems if we have multiple threads using the game_state?]
[1:35:07][If VirtualAlloc() does not guarantee contiguous memory, could this pose a hindrance to cache optimizations?] [1:35:07][If VirtualAlloc() does not guarantee contiguous memory, could this pose a hindrance to cache optimizations?]
[1:36:45][Where can I get earlier versions of the code? The link only gives me the latest version.] [1:36:45][Where can I get earlier versions of the code? The link only gives me the latest version.]
[1:37:15][Wrap-up] [1:37:15][Wrap-up][:speech]
[/video] [/video]

View File

@ -28,7 +28,7 @@
[1:25:16][Looking at multiple sequential records] [1:25:16][Looking at multiple sequential records]
[1:28:16][Removing/disabling some debug code for now] [1:28:16][Removing/disabling some debug code for now]
[1:30:29][Final Thoughts] [1:30:29][Final Thoughts]
[1:31:47][Q&A] [1:31:47][Q&A][:speech]
[1:32:47][Maybe first copy is causing alloc and zero on fault, maybe a second copy would be fast] [1:32:47][Maybe first copy is causing alloc and zero on fault, maybe a second copy would be fast]
[1:35:28][An interesting part of this project is that you're implementing all the compenents yourself that you'd take as given in an existing game engine. That said, do you intend for these components to be reusable in future projects?] [1:35:28][An interesting part of this project is that you're implementing all the compenents yourself that you'd take as given in an existing game engine. That said, do you intend for these components to be reusable in future projects?]
[1:36:32][Why the pig hat?] [1:36:32][Why the pig hat?]

View File

@ -44,5 +44,5 @@
[1:24:20][Whennn willl youuu worrrkkk onnn theee gammmeeee?!?!?!?!?!11!!] [1:24:20][Whennn willl youuu worrrkkk onnn theee gammmeeee?!?!?!?!?!11!!]
[1:24:53][Will we make a physics engine?] [1:24:53][Will we make a physics engine?]
[1:25:17][Is it okay to post a js/html5 port on my github?] [1:25:17][Is it okay to post a js/html5 port on my github?]
[1:26:54][Thanks / Next time on... / Holiday Hours] [1:26:54][Thanks / Next time on... / Holiday Hours][:speech]
[/video] [/video]

View File

@ -62,5 +62,5 @@
[1:39:01][What if MinX and MaxX are both less than 0?] [1:39:01][What if MinX and MaxX are both less than 0?]
[1:40:05][In a perfect world... Pokemans? \[no\]] [1:40:05][In a perfect world... Pokemans? \[no\]]
[1:40:29][Moral message? Hired a writer?] [1:40:29][Moral message? Hired a writer?]
[1:40:47][Handy Links / Holiday Hours / Happy Coding] [1:40:47][Handy Links / Holiday Hours / Happy Coding][:speech]
[/video] [/video]

View File

@ -8,7 +8,7 @@
[37:32][Getting a player to the screen] [37:32][Getting a player to the screen]
[46:26][Basic character movement] [46:26][Basic character movement]
[48:00][Debugging slow player movement] [48:00][Debugging slow player movement]
[58:34][Q&A] [58:34][Q&A][:speech]
[59:00][Question: Is Sleep() still making us miscalculate the fps] [59:00][Question: Is Sleep() still making us miscalculate the fps]
[1:01:15][Question: dtForFrame is only in one of the inputs] [1:01:15][Question: dtForFrame is only in one of the inputs]
[1:03:07][Question: Maybe we should sync our frames with vsync due to it dropping our frames] [1:03:07][Question: Maybe we should sync our frames with vsync due to it dropping our frames]

View File

@ -11,7 +11,7 @@
[43:56][About storing all tilemaps in one big structure] [43:56][About storing all tilemaps in one big structure]
[50:28][Start on storing and accessing multiple tilemaps and the world struct] [50:28][Start on storing and accessing multiple tilemaps and the world struct]
[1:01:00][Short recap on where we are] [1:01:00][Short recap on where we are]
[1:02:16][Q&A] [1:02:16][Q&A][:speech]
[1:03:10][John Blow points out we haven't initialised the world struct members] [1:03:10][John Blow points out we haven't initialised the world struct members]
[1:03:43][Question: Why does player sometimes stop a pixel before the wall?] [1:03:43][Question: Why does player sometimes stop a pixel before the wall?]
[1:14:36][Question: Are your variables for tilemaps too similar to each other or am I just easily confused?] [1:14:36][Question: Are your variables for tilemaps too similar to each other or am I just easily confused?]

View File

@ -8,7 +8,7 @@
[42:55][Storing X and Y positions relative to the tile] [42:55][Storing X and Y positions relative to the tile]
[56:07][Moving the player on to the new tilemap] [56:07][Moving the player on to the new tilemap]
[1:00:49][Floor instead of truncate] [1:00:49][Floor instead of truncate]
[1:10:48][Q&A] [1:10:48][Q&A][:speech]
[1:11:52][Question: Can you talk about the inline keyword? Do you apply any strategies to make sure the compiler does not ignore the request?] [1:11:52][Question: Can you talk about the inline keyword? Do you apply any strategies to make sure the compiler does not ignore the request?]
[1:13:13][Question: Are we using C or C++?] [1:13:13][Question: Are we using C or C++?]
[1:14:47][Question: How did we start the code for the game?] [1:14:47][Question: How did we start the code for the game?]

View File

@ -13,7 +13,7 @@
[40:04][Defining size in pixels and meters] [40:04][Defining size in pixels and meters]
[48:00][TODO: Packing our tilemap indexes] [48:00][TODO: Packing our tilemap indexes]
[57:34][TODO: Resolution-independent tile-relative position] [57:34][TODO: Resolution-independent tile-relative position]
[59:28][Q&A] [59:28][Q&A][:speech]
[1:00:04][Will we be making a map editor?] [1:00:04][Will we be making a map editor?]
[1:00:25][What were you talking about in terms of fast floor?] [1:00:25][What were you talking about in terms of fast floor?]
[1:01:09][Do enough people have SSE4? (n.b. steam hardware survey: ~77% have SSE4, ~99.8% SSE3)] [1:01:09][Do enough people have SSE4? (n.b. steam hardware survey: ~77% have SSE4, ~99.8% SSE3)]
@ -30,5 +30,5 @@
[1:27:14][Line-drawing suggestion] [1:27:14][Line-drawing suggestion]
[1:28:03][Will you be able to find ARM equivalents to your intel-specific instructions?] [1:28:03][Will you be able to find ARM equivalents to your intel-specific instructions?]
[1:29:36][How are we going to deal with different types of tiles?] [1:29:36][How are we going to deal with different types of tiles?]
[1:30:35][Week Roadmap / Outro] [1:30:35][Week Roadmap / Outro][:speech]
[/video] [/video]

View File

@ -8,7 +8,7 @@
[50:04][Back to changing movement units] [50:04][Back to changing movement units]
[53:40][Casey enjoying the little things] [53:40][Casey enjoying the little things]
[57:41][Debugging player position] [57:41][Debugging player position]
[1:03:42][Q&A] [1:03:42][Q&A][:speech]
[1:04:19][Would this be the time to put on screen text for debug info?] [1:04:19][Would this be the time to put on screen text for debug info?]
[1:05:15][What is the variable called 'Gray'?] [1:05:15][What is the variable called 'Gray'?]
[1:05:55][How does the difficulty of conceptualising this type of code compare to say coding the backend to a web application?] [1:05:55][How does the difficulty of conceptualising this type of code compare to say coding the backend to a web application?]

View File

@ -19,7 +19,7 @@
[1:00:48][success] [1:00:48][success]
[1:01:20][greed: simple scrolling] [1:01:20][greed: simple scrolling]
[1:07:39][success again... finally] [1:07:39][success again... finally]
[1:08:24][Q&A] [1:08:24][Q&A][:speech]
[1:09:06][Why not compute the chunk mask from the chunk shift?] [1:09:06][Why not compute the chunk mask from the chunk shift?]
[1:14:04][How did you generate the map? (A: he hasn't yet, it was typed in)] [1:14:04][How did you generate the map? (A: he hasn't yet, it was typed in)]
[1:14:26][How will you do a third dimension in the new coordinate system?] [1:14:26][How will you do a third dimension in the new coordinate system?]
@ -35,5 +35,5 @@
[1:27:03][Will you be checking code complexity, introducing smaller functions?] [1:27:03][Will you be checking code complexity, introducing smaller functions?]
[1:27:43][Did you set up a Kickstarter?] [1:27:43][Did you set up a Kickstarter?]
[1:28:08][Wouldn't it be nice if tiles were 1.0m instead of 1.4m?] [1:28:08][Wouldn't it be nice if tiles were 1.0m instead of 1.4m?]
[1:28:53][Closing thoughts] [1:28:53][Closing thoughts][:speech]
[/video] [/video]

View File

@ -15,7 +15,7 @@
[1:04:30][Going for it] [1:04:30][Going for it]
[1:09:10][Fate] [1:09:10][Fate]
[1:11:00][Summary of the day] [1:11:00][Summary of the day]
[1:14:40][Q&A] [1:14:40][Q&A][:speech]
[1:16:05][Garlandobloom says hi.] [1:16:05][Garlandobloom says hi.]
[1:16:18][Can you explain the motivation behind controlling the page granularity.] [1:16:18][Can you explain the motivation behind controlling the page granularity.]
[1:22:35][Is the memory arena for more temporary objects than we're storing in the game state directly?] [1:22:35][Is the memory arena for more temporary objects than we're storing in the game state directly?]
@ -34,5 +34,5 @@
[1:43:28][Is memory access slower than MOV?] [1:43:28][Is memory access slower than MOV?]
[1:44:45][Why are tiles used? What is the real benefit of tile mapping?] [1:44:45][Why are tiles used? What is the real benefit of tile mapping?]
[1:46:02][Remark on x87] [1:46:02][Remark on x87]
[1:46:32][Conclusion] [1:46:32][Conclusion][:speech]
[/video] [/video]

View File

@ -14,7 +14,7 @@
[48:50][Adding the ability to go up and down] [48:50][Adding the ability to go up and down]
[56:50][Continue the madness and add some stairs] [56:50][Continue the madness and add some stairs]
[1:03:50][Up and down] [1:03:50][Up and down]
[1:07:00][Q&A] [1:07:00][Q&A][:speech]
[1:07:42][Would you use DeMorgan's Laws?] [1:07:42][Would you use DeMorgan's Laws?]
[1:10:18][Do you have emacs commands with Visual Studio?] [1:10:18][Do you have emacs commands with Visual Studio?]
[1:10:45][Have you already decided what PRNG algorithm you're going to use?] [1:10:45][Have you already decided what PRNG algorithm you're going to use?]
@ -36,5 +36,5 @@
[1:39:01][Are you worried about memory leaks?] [1:39:01][Are you worried about memory leaks?]
[1:39:31][Are ternaries bad?] [1:39:31][Are ternaries bad?]
[1:40:02][Why is not possible to save the full map?] [1:40:02][Why is not possible to save the full map?]
[1:40:25][Conclusion] [1:40:25][Conclusion][:speech]
[/video] [/video]

View File

@ -18,7 +18,7 @@
[49:00][Processing the BMP file header] [49:00][Processing the BMP file header]
[50:43][Packing a struct to avoid padding] [50:43][Packing a struct to avoid padding]
[53:53][Processing the BMP pixels] [53:53][Processing the BMP pixels]
[59:20][Q&A] [59:20][Q&A][:speech]
[59:44][Perfect pitch would sell that!] [59:44][Perfect pitch would sell that!]
[1:00:58][I missed the part where you handled the endianness of the file, or are bitmaps always the same?] [1:00:58][I missed the part where you handled the endianness of the file, or are bitmaps always the same?]
[1:01:56][Do you prefer #pragma pack or gcc-like annotation?] [1:01:56][Do you prefer #pragma pack or gcc-like annotation?]

View File

@ -14,7 +14,7 @@
[45:07][Displaying hero bitmaps] [45:07][Displaying hero bitmaps]
[46:10][Debugging busted hero bitmaps] [46:10][Debugging busted hero bitmaps]
[1:03:08][Getting more info from the bitmap headers] [1:03:08][Getting more info from the bitmap headers]
[1:07:37][Q&A] [1:07:37][Q&A][:speech]
[1:08:10][Stream spots a typo] [1:08:10][Stream spots a typo]
[1:08:40][Stream spots another typo] [1:08:40][Stream spots another typo]
[1:09:09][Will we stick to using bitmaps for the duration of handmade hero, or delve into the lands of PNG?] [1:09:09][Will we stick to using bitmaps for the duration of handmade hero, or delve into the lands of PNG?]

View File

@ -21,7 +21,7 @@
[0:58:45][How the 't' works in the linear blend formula] [0:58:45][How the 't' works in the linear blend formula]
[1:00:35][Implementing the floating point version of linear blend] [1:00:35][Implementing the floating point version of linear blend]
[1:06:55][Drawing the herohead at the location of the player] [1:06:55][Drawing the herohead at the location of the player]
[1:07:23][Q&A] [1:07:23][Q&A][:speech]
[1:08:06][Stream spots a typo!] [1:08:06][Stream spots a typo!]
[1:08:37][Stream suggests to assert the bitmap assertion mode!] [1:08:37][Stream suggests to assert the bitmap assertion mode!]
[1:09:12][You do not need #pragma intrinsic if you include <intrin.h>] [1:09:12][You do not need #pragma intrinsic if you include <intrin.h>]

View File

@ -23,7 +23,7 @@
[0:51:40][Checking the framerate] [0:51:40][Checking the framerate]
[0:52:38][Fixing live code loading] [0:52:38][Fixing live code loading]
[0:59:29][Testing if hotloading is still functioning] [0:59:29][Testing if hotloading is still functioning]
[1:00:35][Q&A] [1:00:35][Q&A][:speech]
[1:01:46][Can you do that live code with a function call? That could just be a poke. -Geneticspecies] [1:01:46][Can you do that live code with a function call? That could just be a poke. -Geneticspecies]
[1:02:05][Enumerations. Am I correct to say you've not used them in Handmade Hero yet? I'm guessing this is simply because it's too early to know what will eventually require enumerations and not some other reason.] [1:02:05][Enumerations. Am I correct to say you've not used them in Handmade Hero yet? I'm guessing this is simply because it's too early to know what will eventually require enumerations and not some other reason.]
[1:02:38][Why not layer the individual bodyparts into a single bitmap that way you only have to draw one image instead of three?] [1:02:38][Why not layer the individual bodyparts into a single bitmap that way you only have to draw one image instead of three?]
@ -44,5 +44,5 @@
[1:24:24][How does this test code help with the future architecture since it all gets dumped?] [1:24:24][How does this test code help with the future architecture since it all gets dumped?]
[1:26:05][I'm not sure if this is true. I'm assuming you're making the guy clip when leaving the screen, but why make it clip if you can just make it follow the yellow box which might clip the guy itself. Again I really..] [1:26:05][I'm not sure if this is true. I'm assuming you're making the guy clip when leaving the screen, but why make it clip if you can just make it follow the yellow box which might clip the guy itself. Again I really..]
[1:26:35][If streaming assets will be required to display all visual information will their be some type of manual limit placed on the procedural generation to ensure that all assets will never be required for a single room?] [1:26:35][If streaming assets will be required to display all visual information will their be some type of manual limit placed on the procedural generation to ensure that all assets will never be required for a single room?]
[1:27:00][End Q&A and closing statements] [1:27:00][End Q&A and closing statements][:speech]
[/video] [/video]

View File

@ -18,7 +18,7 @@
[0:51:09][Discussion on his method of going fullscreen in Windows] [0:51:09][Discussion on his method of going fullscreen in Windows]
[0:54:45][Going over the notes] [0:54:45][Going over the notes]
[0:55:30]['Hackey' way to fill the entire screen with the game] [0:55:30]['Hackey' way to fill the entire screen with the game]
[0:58:50][Q&A] [0:58:50][Q&A][:speech]
[0:59:57][You said you want your artist to leave an alpha apron around your bitmaps. Why is that?] [0:59:57][You said you want your artist to leave an alpha apron around your bitmaps. Why is that?]
[1:02:15][Sour trolli worms or Haribo gummy bears?] [1:02:15][Sour trolli worms or Haribo gummy bears?]
[1:02:36][We've got a fair bit of if statements that clamp values. Would a macro make sense?] [1:02:36][We've got a fair bit of if statements that clamp values. Would a macro make sense?]

View File

@ -20,11 +20,11 @@
[58:32][Operations Research] [58:32][Operations Research]
[59:48][Probability & Statistics] [59:48][Probability & Statistics]
[1:00:10][Discrete mathematics] [1:00:10][Discrete mathematics]
[1:02:33][Q&A] [1:02:33][Q&A][:speech]
[1:03:11][Do you even breathe bro?] [1:03:11][Do you even breathe bro?]
[1:03:20][Doesn't toroidal topology also apply to spheres?] [1:03:20][Doesn't toroidal topology also apply to spheres?]
[1:07:58][Laptop battery dies] [1:07:58][Laptop battery dies]
[1:10:07][Q&A Resumes] [1:10:07][Q&A Resumes][:speech]
[1:10:36][Is it important to clarify many of these subjects can be learned when you need them, not needed as a baseline?] [1:10:36][Is it important to clarify many of these subjects can be learned when you need them, not needed as a baseline?]
[1:11:41][Most of 3D games is in euclidian geometry] [1:11:41][Most of 3D games is in euclidian geometry]
[1:12:25][What happens in partial differential equations if Scott Meyers is in a gorilla suit..] [1:12:25][What happens in partial differential equations if Scott Meyers is in a gorilla suit..]

View File

@ -17,7 +17,7 @@
[37:46][Multiplication in Vector Space] [37:46][Multiplication in Vector Space]
[43:30][Adding vector routines to the code] [43:30][Adding vector routines to the code]
[48:25][Replacing scalar code with vector code.] [48:25][Replacing scalar code with vector code.]
[1:01:53][Q&A] [1:01:53][Q&A][:speech]
[1:02:28][How do union types work in C++ and what are the drawbacks?] [1:02:28][How do union types work in C++ and what are the drawbacks?]
[1:04:42][About vector conventions] [1:04:42][About vector conventions]
[1:05:07][In the first version of vector, weren't you just missing an anonymous struct in the union?] [1:05:07][In the first version of vector, weren't you just missing an anonymous struct in the union?]

View File

@ -16,7 +16,7 @@
[49:13][A look at the game now. We notice player has no friction.] [49:13][A look at the game now. We notice player has no friction.]
[51:22][Implementing some friction.] [51:22][Implementing some friction.]
[58:26][Closing remarks.] [58:26][Closing remarks.]
[1:00:40][Q&A] [1:00:40][Q&A][:speech]
[1:01:23][Why use real physics and not something custom you can handtune?] [1:01:23][Why use real physics and not something custom you can handtune?]
[1:06:59][Why not add an opposite directional deceleration when collisions occur?] [1:06:59][Why not add an opposite directional deceleration when collisions occur?]
[1:07:29][Are you concerned that actual physics will retract from the beauty and elegance of the worlds greatest jump code?] [1:07:29][Are you concerned that actual physics will retract from the beauty and elegance of the worlds greatest jump code?]

View File

@ -16,7 +16,7 @@
[50:25][Challenge to the stream: how do you run along the wall?] [50:25][Challenge to the stream: how do you run along the wall?]
[51:51][Answer to the challenge] [51:51][Answer to the challenge]
[53:28][Discussion on sticky behavior] [53:28][Discussion on sticky behavior]
[58:13][Q&A] [58:13][Q&A][:speech]
[59:31][Can you explain again why the hero was sticking against the wall?] [59:31][Can you explain again why the hero was sticking against the wall?]
[1:02:43][When do we scale down the hero?] [1:02:43][When do we scale down the hero?]
[1:03:11][Have you considered using sin(0) to sin(90) as a non-linear inertia curve?] [1:03:11][Have you considered using sin(0) to sin(90) as a non-linear inertia curve?]

View File

@ -20,7 +20,7 @@
[47:20][How to perform the search] [47:20][How to perform the search]
[56:00][Getting the length of a vector] [56:00][Getting the length of a vector]
[57:40][Cleaning up to finish on day 46] [57:40][Cleaning up to finish on day 46]
[58:47][Q&A] [58:47][Q&A][:speech]
[1:00:01][Why different versions of GetTileValue()?] [1:00:01][Why different versions of GetTileValue()?]
[1:03:57][You start variables uppercase and structs lowercase. Why?] [1:03:57][You start variables uppercase and structs lowercase. Why?]
[1:04:47][When npc's are introduced, will they reuse some of the code shown here?] [1:04:47][When npc's are introduced, will they reuse some of the code shown here?]

View File

@ -27,7 +27,7 @@
[0:52:09][What we're going to do tomorrow] [0:52:09][What we're going to do tomorrow]
[0:53:00][BRB, controller!] [0:53:00][BRB, controller!]
[0:53:59][Demo of mult-player support] [0:53:59][Demo of mult-player support]
[0:54:30][Q&A] [0:54:30][Q&A][:speech]
[0:55:08][On split-screen what kind of resolution were you thinking for each?] [0:55:08][On split-screen what kind of resolution were you thinking for each?]
[0:56:15][You once said visualizing problems is never a wasted effort. Should we use it for collision detection?] [0:56:15][You once said visualizing problems is never a wasted effort. Should we use it for collision detection?]
[0:56:52][Are entities just for players or all game objects?] [0:56:52][Are entities just for players or all game objects?]

View File

@ -17,7 +17,7 @@
[38:30][Implementing the new collision code] [38:30][Implementing the new collision code]
[40:40][How to find the tiles to check] [40:40][How to find the tiles to check]
[45:50][What to do about multiple wall collisions] [45:50][What to do about multiple wall collisions]
[54:13][Q&A] [54:13][Q&A][:speech]
[55:25][Why did you change from search in p to search in t?] [55:25][Why did you change from search in p to search in t?]
[59:32][How does it handle the state of two separate players on different floors?] [59:32][How does it handle the state of two separate players on different floors?]
[1:00:18][Why is the code complexity for p-search so much bigger than t-search?] [1:00:18][Why is the code complexity for p-search so much bigger than t-search?]

View File

@ -15,7 +15,7 @@
[32:50][More collision bugs; time to write a better collision detection system!] [32:50][More collision bugs; time to write a better collision detection system!]
[33:38][Observing the problems with the current collision detection system] [33:38][Observing the problems with the current collision detection system]
[35:25][What we want from the new system] [35:25][What we want from the new system]
[43:26][Q&A] [43:26][Q&A][:speech]
[43:53][Can you change the whiteboard colors?] [43:53][Can you change the whiteboard colors?]
[46:33][Do you plan on getting into calculus to get better collision detection?] [46:33][Do you plan on getting into calculus to get better collision detection?]
[47:05][Do you think any need to prototype some features in some other language?] [47:05][Do you think any need to prototype some features in some other language?]

View File

@ -14,7 +14,7 @@
[45:50][Making the collision detection better using areas instead of points] [45:50][Making the collision detection better using areas instead of points]
[48:00][Fixing canonicalization] [48:00][Fixing canonicalization]
[53:14][Talking about the future of the tile map] [53:14][Talking about the future of the tile map]
[56:50][Q&A] [56:50][Q&A][:speech]
[58:09][Do you use diagrams a lot in your actual work?] [58:09][Do you use diagrams a lot in your actual work?]
[58:26][What do you recommend for learning c++?] [58:26][What do you recommend for learning c++?]
[58:45][Try setting handmade hero start at the midpoint between tiles] [58:45][Try setting handmade hero start at the midpoint between tiles]

View File

@ -23,7 +23,7 @@
[1:04:20][Debugging first loop through the wall collision loop] [1:04:20][Debugging first loop through the wall collision loop]
[1:09:58][Debugging the second loop through the wall collision loop] [1:09:58][Debugging the second loop through the wall collision loop]
[1:18:05][Moment of enlightenment] [1:18:05][Moment of enlightenment]
[1:19:22][Q&A] [1:19:22][Q&A][:speech]
[1:21:05][Why is the heros head 1.5 meters in diameter?] [1:21:05][Why is the heros head 1.5 meters in diameter?]
[1:21:29][How would you handle concave objects with Minkowski?] [1:21:29][How would you handle concave objects with Minkowski?]
[1:22:41][Why isn't the game split up in smaller, more modular files?] [1:22:41][Why isn't the game split up in smaller, more modular files?]

View File

@ -18,7 +18,7 @@
[48:53][Updating InitializePlayer] [48:53][Updating InitializePlayer]
[52:05][Updating AddEntity] [52:05][Updating AddEntity]
[54:25][Getting the code compiling again] [54:25][Getting the code compiling again]
[59:46][Q&A] [59:46][Q&A][:speech]
[1:00:15][How about hot/cold/frozen instead of high/low/dormant?] [1:00:15][How about hot/cold/frozen instead of high/low/dormant?]
[1:01:10][Chat reminds: wrap intrinsic rotations \[code change\]] [1:01:10][Chat reminds: wrap intrinsic rotations \[code change\]]
[1:05:28][Is it a good idea to update the low entities in a separate thread?] [1:05:28][Is it a good idea to update the low entities in a separate thread?]

View File

@ -19,7 +19,7 @@
[42:05][Debugging sticky collisions] [42:05][Debugging sticky collisions]
[44:57][Restoring camera movement] [44:57][Restoring camera movement]
[50:58][Todos for tomorrow] [50:58][Todos for tomorrow]
[53:23][Q&A] [53:23][Q&A][:speech]
[54:13][Why can't infrequent entity updates happen in the entity's update logic?] [54:13][Why can't infrequent entity updates happen in the entity's update logic?]
[56:57][Why do you want to use a 3D vector for position when the Z value is always going to be an integer?] [56:57][Why do you want to use a 3D vector for position when the Z value is always going to be an integer?]
[1:01:25][Does Minkowski collision detection have to be axis-aligned?] [1:01:25][Does Minkowski collision detection have to be axis-aligned?]
@ -45,5 +45,5 @@
[1:37:50][The rectangle box which you have alpha assigned, is that the same box you would assign hit points to in case the character is injured by enemies or obstacles?] [1:37:50][The rectangle box which you have alpha assigned, is that the same box you would assign hit points to in case the character is injured by enemies or obstacles?]
[1:39:05][How common or practical is pixel by pixel collision check vs overall shapes collision check? Which one is more interesting to you?] [1:39:05][How common or practical is pixel by pixel collision check vs overall shapes collision check? Which one is more interesting to you?]
[1:39:50][What are your thoughts on the Allegro library?] [1:39:50][What are your thoughts on the Allegro library?]
[1:40:00][Stream end] [1:40:00][Stream end][:speech]
[/video] [/video]

View File

@ -16,7 +16,7 @@
[50:13][Adding entities to the high entity set that are close to the camera] [50:13][Adding entities to the high entity set that are close to the camera]
[55:09][Calling SetCamera at the start of the game] [55:09][Calling SetCamera at the start of the game]
[58:15][Out of time! Where we'll start tomorrow] [58:15][Out of time! Where we'll start tomorrow]
[59:19][Q&A] [59:19][Q&A][:speech]
[1:00:02][Aren't some of the signs in the MinTileX wrong?] [1:00:02][Aren't some of the signs in the MinTileX wrong?]
[1:01:12][What does “internal” modifier which is applied to the SetCamera function? I mean what is the difference between non-static and static function?] [1:01:12][What does “internal” modifier which is applied to the SetCamera function? I mean what is the difference between non-static and static function?]
[1:07:10][Why do we consider a wall an entity?] [1:07:10][Why do we consider a wall an entity?]
@ -30,5 +30,5 @@
[1:17:15][Have you ever played Path of Exile or heard of it? They have this desync problem that they claim is unfixable because they handle stuff server-side. Just wondering if you have heard of that game and its notorious bugs.] [1:17:15][Have you ever played Path of Exile or heard of it? They have this desync problem that they claim is unfixable because they handle stuff server-side. Just wondering if you have heard of that game and its notorious bugs.]
[1:17:57][Are you using a stylus in Krita or a mouse?] [1:17:57][Are you using a stylus in Krita or a mouse?]
[1:18:18][Does forcing a game to a certain refresh rate introduce lag?] [1:18:18][Does forcing a game to a certain refresh rate introduce lag?]
[1:19:08][End] [1:19:08][End][:speech]
[/video] [/video]

View File

@ -16,7 +16,7 @@
[46:05][Handling controlling entities] [46:05][Handling controlling entities]
[53:54][Debugging crashes] [53:54][Debugging crashes]
[55:50][Debugging missing walls and positioning problems] [55:50][Debugging missing walls and positioning problems]
[1:02:08][Q&A] [1:02:08][Q&A][:speech]
[1:03:12][Is there an advantage of making the size of the LowEntity and HighEntity arrays a power of two?] [1:03:12][Is there an advantage of making the size of the LowEntity and HighEntity arrays a power of two?]
[1:04:22][This is a third-person game right?] [1:04:22][This is a third-person game right?]
[1:04:34][What process would you have gone through for creating the controls and movement if this were a 2D side-scrolling platformer?] [1:04:34][What process would you have gone through for creating the controls and movement if this were a 2D side-scrolling platformer?]
@ -29,5 +29,5 @@
[1:12:57][Will Handmade Hero always be 20 scale feet tall?] [1:12:57][Will Handmade Hero always be 20 scale feet tall?]
[1:13:06][What are you drinking?] [1:13:06][What are you drinking?]
[1:13:16][(follow-up) What I call a slot map is an array that can have arbitrary empty slots and each slot has a version number for self-validation.] [1:13:16][(follow-up) What I call a slot map is an array that can have arbitrary empty slots and each slot has a version number for self-validation.]
[1:15:20][End] [1:15:20][End][:speech]
[/video] [/video]

View File

@ -13,7 +13,7 @@
[47:10][Reviewing the code that has been written] [47:10][Reviewing the code that has been written]
[58:00][Moving the world origin] [58:00][Moving the world origin]
[1:00:45][Debugging missing entities] [1:00:45][Debugging missing entities]
[1:09:50][Q&A] [1:09:50][Q&A][:speech]
[1:10:34][Why not center the world at 0,0,0 and use signed ints for the tile position? \[code change\]] [1:10:34][Why not center the world at 0,0,0 and use signed ints for the tile position? \[code change\]]
[1:15:42][Is a hash map essentially just a creatively shaped tile chunk? If that's the case could you preempt the hash function by contributing more bits from the Z coordinate as opposed to the X and Y for a towery map for example? Am I thinking about this right?] [1:15:42][Is a hash map essentially just a creatively shaped tile chunk? If that's the case could you preempt the hash function by contributing more bits from the Z coordinate as opposed to the X and Y for a towery map for example? Am I thinking about this right?]
[1:19:11][What do you think about, and do you ever do, “free” optimizations in early or late stage development such as \[…\] and instead trying to fail as early as possible? Best case scenario you only did one comparision rather than four.] [1:19:11][What do you think about, and do you ever do, “free” optimizations in early or late stage development such as \[…\] and instead trying to fail as early as possible? Best case scenario you only did one comparision rather than four.]
@ -37,5 +37,5 @@
[1:41:43][Can you visualize the shape of the map so I can understand why a hash table is better than an array?] [1:41:43][Can you visualize the shape of the map so I can understand why a hash table is better than an array?]
[1:44:40][The randomized map only goes up and to the right at the moment. Is it good enough to catch bugs?] [1:44:40][The randomized map only goes up and to the right at the moment. Is it good enough to catch bugs?]
[1:45:07][Will the renderer be a separate piece of code as like the platform player so that it can be substituted with something like OpenGL?] [1:45:07][Will the renderer be a separate piece of code as like the platform player so that it can be substituted with something like OpenGL?]
[1:45:18][End] [1:45:18][End][:speech]
[/video] [/video]

View File

@ -13,7 +13,7 @@
[41:45][Renaming tile_map to world] [41:45][Renaming tile_map to world]
[55:55][Debugging refactoring] [55:55][Debugging refactoring]
[57:00][Recap] [57:00][Recap]
[58:37][Q&A] [58:37][Q&A][:speech]
[58:59][Do you still expect the gameplay to be broadly grid-based even without tiles?] [58:59][Do you still expect the gameplay to be broadly grid-based even without tiles?]
[59:44][Could you use reflection to help handle the entities and world chunks?] [59:44][Could you use reflection to help handle the entities and world chunks?]
[1:00:53][Will everything in the game be an entity even if it does not need collision detection or movement?] [1:00:53][Will everything in the game be an entity even if it does not need collision detection or movement?]
@ -28,5 +28,5 @@
[1:10:38][Seeing that the computer handles 1 million entities without lagging, do we really need to worry about the performance hit coming from one extra pointer dereference?] [1:10:38][Seeing that the computer handles 1 million entities without lagging, do we really need to worry about the performance hit coming from one extra pointer dereference?]
[1:12:30][Will entities be able to transfer from one chunk to another?] [1:12:30][Will entities be able to transfer from one chunk to another?]
[1:12:52][Will we start using the entity system for something other than players/walls soon or will the renderer come first?] [1:12:52][Will we start using the entity system for something other than players/walls soon or will the renderer come first?]
[1:13:58][End] [1:13:58][End][:speech]
[/video] [/video]

View File

@ -24,7 +24,7 @@
[58:34][Write ChunkPositionFromTilePosition] [58:34][Write ChunkPositionFromTilePosition]
[1:02:12][Unplug and plug the keyboard back in] [1:02:12][Unplug and plug the keyboard back in]
[1:03:03][handmade_world.cpp: Finish cleaning up] [1:03:03][handmade_world.cpp: Finish cleaning up]
[1:04:14][Q&A] [1:04:14][Q&A][:speech]
[1:05:39][Q: Can you please go over the lasagne code again that goes through the linked list and moves around the entities? And can you remove the note in RecanonicalizeCoord about toroidal topology?] [1:05:39][Q: Can you please go over the lasagne code again that goes through the linked list and moves around the entities? And can you remove the note in RecanonicalizeCoord about toroidal topology?]
[1:15:22][Q: Are you dropping frames? Things are glitchy] [1:15:22][Q: Are you dropping frames? Things are glitchy]
[1:15:51][Q: Do you use Bink for videos?] [1:15:51][Q: Do you use Bink for videos?]
@ -35,5 +35,5 @@
[1:19:04][Q: Why do you need if(Chunk) after Assert(Chunk)?] [1:19:04][Q: Why do you need if(Chunk) after Assert(Chunk)?]
[1:19:26][Q: Can you please explain, when you comment your code, what's the logic of having less comments on very big chunks of code?] [1:19:26][Q: Can you please explain, when you comment your code, what's the logic of having less comments on very big chunks of code?]
[1:21:37][Q: When you said the code today wasn't that performance critical, I instantly thought about a machine gun - stone thrower battle just across a chunk edge] [1:21:37][Q: When you said the code today wasn't that performance critical, I instantly thought about a machine gun - stone thrower battle just across a chunk edge]
[1:22:01][We are done with questions] [1:22:01][We are done with questions][:speech]
[/video] [/video]

View File

@ -34,7 +34,7 @@
[52:51][Assets: Find the base point for the tree in GIMP] [52:51][Assets: Find the base point for the tree in GIMP]
[53:37][handmade.cpp: Set the tree's alignment and do DrawRectangle as well] [53:37][handmade.cpp: Set the tree's alignment and do DrawRectangle as well]
[54:32][Run the game and observe our new trees in their correct positions] [54:32][Run the game and observe our new trees in their correct positions]
[57:44][Q&A] [57:44][Q&A][:speech]
[58:52][Q: For zooming out, could you somehow modify MetersToPixels to make things smaller as you zoom?] [58:52][Q: For zooming out, could you somehow modify MetersToPixels to make things smaller as you zoom?]
[59:39][Q: What is inline v2?] [59:39][Q: What is inline v2?]
[1:01:04][Q: Why use Emacs versus Visual Studio's IDE?] [1:01:04][Q: Why use Emacs versus Visual Studio's IDE?]
@ -60,5 +60,5 @@
[1:23:15][Q: Do you plan to use some form of logging for debugging purposes?] [1:23:15][Q: Do you plan to use some form of logging for debugging purposes?]
[1:23:48][Q: When you remove a LowEntity from the Chunk list, you swap another into its place. Won't that mess with references?] [1:23:48][Q: When you remove a LowEntity from the Chunk list, you swap another into its place. Won't that mess with references?]
[1:24:15][@happy_vertex][Even for slow frequency entities?] [1:24:15][@happy_vertex][Even for slow frequency entities?]
[1:24:59][We have come to the end of the questions] [1:24:59][We have come to the end of the questions][:speech]
[/video] [/video]

View File

@ -26,7 +26,7 @@
[53:51][Run the game and tweak the Familiar's logic] [53:51][Run the game and tweak the Familiar's logic]
[54:48][Moment of realisation: The player's speed is baked into MoveEntity] [54:48][Moment of realisation: The player's speed is baked into MoveEntity]
[55:04][Make the Familiar move at half the speed of the Hero and check it out in-game] [55:04][Make the Familiar move at half the speed of the Hero and check it out in-game]
[56:41][Q&A] [56:41][Q&A][:speech]
[58:09][Q: Why "Monstar" and not "Monster"?] [58:09][Q: Why "Monstar" and not "Monster"?]
[58:58][Q: If someone rewrites your code using OOP and it runs faster, what would you do?] [58:58][Q: If someone rewrites your code using OOP and it runs faster, what would you do?]
[59:24][Q: Why do you want to be able to outrun your familiar? Doesn't having to stop for him to catch up get annoying?] [59:24][Q: Why do you want to be able to outrun your familiar? Doesn't having to stop for him to catch up get annoying?]
@ -47,5 +47,5 @@
[1:35:25][Q: CameraTileY + OffsetY not OffsetX in AddFamiliar call] [1:35:25][Q: CameraTileY + OffsetY not OffsetX in AddFamiliar call]
[1:36:04][Q: I was very glad to hear that you deem classes to be basically garbage. I spent too much time with C# trying to learn object inter-jugglery between them] [1:36:04][Q: I was very glad to hear that you deem classes to be basically garbage. I spent too much time with C# trying to learn object inter-jugglery between them]
[1:36:19][Q: About the chaining familiars, could each familiar check if the hero has a familiar already and, if it does, then try to follow the familiar instead?] [1:36:19][Q: About the chaining familiars, could each familiar check if the hero has a familiar already and, if it does, then try to follow the familiar instead?]
[1:36:44][We've come to the end of the questions] [1:36:44][We've come to the end of the questions][:speech]
[/video] [/video]

View File

@ -21,7 +21,7 @@
[46:03][Fix jump hitpoints] [46:03][Fix jump hitpoints]
[46:19][Basic v3 and v4] [46:19][Basic v3 and v4]
[51:56][Explain why templates are bad] [51:56][Explain why templates are bad]
[55:14][Q&A] [55:14][Q&A][:speech]
[56:17][Q: Isn't making a struct for HP is preprogramming a little?] [56:17][Q: Isn't making a struct for HP is preprogramming a little?]
[57:48][Q: Why not just use HitPointMax = 12 instead of dividing into 3 hearts and 4 segments?] [57:48][Q: Why not just use HitPointMax = 12 instead of dividing into 3 hearts and 4 segments?]
[58:24][Q: I noticed the floating head was always behind the player. Are you going to go for a depth buffer approach or draw back-to-front to handle this?] [58:24][Q: I noticed the floating head was always behind the player. Are you going to go for a depth buffer approach or draw back-to-front to handle this?]

View File

@ -19,7 +19,7 @@
[1:02:38][Find out that the CameraSpaceP of Sword is completely garbage] [1:02:38][Find out that the CameraSpaceP of Sword is completely garbage]
[1:03:43][Make ChangeEntityLocation update the new world_postion properly] [1:03:43][Make ChangeEntityLocation update the new world_postion properly]
[1:06:53][Run the game to verify whether the bug is fixed or not] [1:06:53][Run the game to verify whether the bug is fixed or not]
[1:08:02][Q&A] [1:08:02][Q&A][:speech]
[1:08:45][@jackkrozzer][What do you mean that Visual Studio is horrible at showing variables, and how are you programming in Emacs and running it in Visual Studio?] [1:08:45][@jackkrozzer][What do you mean that Visual Studio is horrible at showing variables, and how are you programming in Emacs and running it in Visual Studio?]
[1:11:52][@roflraging][When doing exploratory / experimental programming, I find it difficult to decide between seeing things through or switching to a different approach. There have been many times where I start off on a path and things are going great, but eventually I stall due to some unforeseen problem. Often, I spend a crazy amount of time thinking about how to solve / get around the problem, even in simple ways. Analysis paralysis if you will. Any suggestions? Literally, just keep on writing code, no matter how dumb it is?] [1:11:52][@roflraging][When doing exploratory / experimental programming, I find it difficult to decide between seeing things through or switching to a different approach. There have been many times where I start off on a path and things are going great, but eventually I stall due to some unforeseen problem. Often, I spend a crazy amount of time thinking about how to solve / get around the problem, even in simple ways. Analysis paralysis if you will. Any suggestions? Literally, just keep on writing code, no matter how dumb it is?]
[1:20:08][@ttbjm][Will you handle the case where a sword and a monstar would hit each other but are moving toward each other so fast that they pass through each other without colliding in a single frame?] [1:20:08][@ttbjm][Will you handle the case where a sword and a monstar would hit each other but are moving toward each other so fast that they pass through each other without colliding in a single frame?]
@ -33,5 +33,5 @@
[1:35:11][@teh_guppy][Would there have been an easier language to program the game in?] [1:35:11][@teh_guppy][Would there have been an easier language to program the game in?]
[1:37:36][@ezioauditorerevs][To be able to surpass C++ as the defacto language to code games in, what would you have to do as a language that would make you better than C++?] [1:37:36][@ezioauditorerevs][To be able to surpass C++ as the defacto language to code games in, what would you have to do as a language that would make you better than C++?]
[1:38:17][@drtwox][CAN I HAVE A WITNESS BETA KEY!!!] [1:38:17][@drtwox][CAN I HAVE A WITNESS BETA KEY!!!]
[1:38:28][Wrap it up for the day] [1:38:28][Wrap it up for the day][:speech]
[/video] [/video]

View File

@ -19,7 +19,7 @@
[54:59][Realize that the bug is caused by the hacky code Casey just wrote] [54:59][Realize that the bug is caused by the hacky code Casey just wrote]
[56:11][Run the game and do some hookshot things] [56:11][Run the game and do some hookshot things]
[56:51][Explain how these hookshot things happen] [56:51][Explain how these hookshot things happen]
[1:00:24][Q&A] [1:00:24][Q&A][:speech]
[1:01:01][@boondoggle42][Owl of SHAME!!!] [1:01:01][@boondoggle42][Owl of SHAME!!!]
[1:01:40][@senjai][Do you ever use gdb?] [1:01:40][@senjai][Do you ever use gdb?]
[1:01:46][@senjai][Do you test more than just using asserts?] [1:01:46][@senjai][Do you test more than just using asserts?]
@ -37,5 +37,5 @@
[1:13:50][@btngames][What will we do at 3PM PST when this game is finished?] [1:13:50][@btngames][What will we do at 3PM PST when this game is finished?]
[1:15:19][@celibdor][Are you happy with the current progress?] [1:15:19][@celibdor][Are you happy with the current progress?]
[1:15:59][@xxxefwe][More than memory footprint I was thinking about unwanted side effects, i.e. code that deals with the transfer of properties ends up triggering hard to debug shenanigans with the positioning etc.] [1:15:59][@xxxefwe][More than memory footprint I was thinking about unwanted side effects, i.e. code that deals with the transfer of properties ends up triggering hard to debug shenanigans with the positioning etc.]
[1:17:13][Wrap it up] [1:17:13][Wrap it up][:speech]
[/video] [/video]

View File

@ -23,7 +23,7 @@
[51:04][Moving camera position update from main loop to EndSim] [51:04][Moving camera position update from main loop to EndSim]
[51:48][Adjusting rendering for simulation regions] [51:48][Adjusting rendering for simulation regions]
[56:00][Wrapping up for today - fixing compiler errors] [56:00][Wrapping up for today - fixing compiler errors]
[59:10][Q&A] [59:10][Q&A][:speech]
[59:46][Recommendation for names - instead of stored entities you could have stasis_entity and stasis_region; for the high frequency, you would keep the sim_region and sim_entity.] [59:46][Recommendation for names - instead of stored entities you could have stasis_entity and stasis_region; for the high frequency, you would keep the sim_region and sim_entity.]
[1:00:29][Since we know that an entity's speed is bounded, couldn't we calculate a sim_region with bounds such that no entity can move outside of it during the frame? That way anything that the entity could collide with would be pulled into the sim_region?] [1:00:29][Since we know that an entity's speed is bounded, couldn't we calculate a sim_region with bounds such that no entity can move outside of it during the frame? That way anything that the entity could collide with would be pulled into the sim_region?]
[1:02:29][How many TODOs do you have?] [1:02:29][How many TODOs do you have?]

View File

@ -20,7 +20,7 @@
[48:54][Addressing compiler errors] [48:54][Addressing compiler errors]
[50:27][Porting MoveEntity code to work with simulation regions] [50:27][Porting MoveEntity code to work with simulation regions]
[56:29][Leaving notes for remainder of simulation region work] [56:29][Leaving notes for remainder of simulation region work]
[57:03][Q&A] [57:03][Q&A][:speech]
[58:53][Why don't you upload chat logs with videos somehow?] [58:53][Why don't you upload chat logs with videos somehow?]
[1:01:08][There's a bug in your random number table. The numbers are limited to a range.] [1:01:08][There's a bug in your random number table. The numbers are limited to a range.]
[1:02:15][Could explain your naming conventions or explanations behind using them? I've never seen a style similar to yours - it seems inverted.] [1:02:15][Could explain your naming conventions or explanations behind using them? I've never seen a style similar to yours - it seems inverted.]

View File

@ -24,7 +24,7 @@
[1:00:02][Adding epsilon to IsCanonical to prevent assertion] [1:00:02][Adding epsilon to IsCanonical to prevent assertion]
[1:01:35][Debugging camera positioning] [1:01:35][Debugging camera positioning]
[1:04:20][Adding TODOs since we have to stop for today] [1:04:20][Adding TODOs since we have to stop for today]
[1:06:21][Q&A] [1:06:21][Q&A][:speech]
[1:07:13][Assuming we don't go wandering too much on our own, which week has accumulated enough code base for a basic, simple, fully functional game?] [1:07:13][Assuming we don't go wandering too much on our own, which week has accumulated enough code base for a basic, simple, fully functional game?]
[1:09:04][Regarding high and low entities, would the following solution work? Using one entity struct, all entities are stored in one array, and frequently update the entity if the entity is within camera bounds, and use low-frequency updating if it's outside the camera bounds?] [1:09:04][Regarding high and low entities, would the following solution work? Using one entity struct, all entities are stored in one array, and frequently update the entity if the entity is within camera bounds, and use low-frequency updating if it's outside the camera bounds?]
[1:11:45][Can you give a high-level overview of how entities work now? I get it in bits and pieces, but this week has lost me.] [1:11:45][Can you give a high-level overview of how entities work now? I get it in bits and pieces, but this week has lost me.]

View File

@ -18,7 +18,7 @@
[46:39][Why is the sword's shadow so dark? - Multiple swords] [46:39][Why is the sword's shadow so dark? - Multiple swords]
[50:21][Guarding against having multiple entities in sim_region with same storage index] [50:21][Guarding against having multiple entities in sim_region with same storage index]
[57:23][Preventing sword being reset when holding down key] [57:23][Preventing sword being reset when holding down key]
[58:42][Q&A] [58:42][Q&A][:speech]
[1:00:06][Does the current collision code support walls that are not 90 degrees? Say if the wall is at 45 degrees, would the collision code still work?] [1:00:06][Does the current collision code support walls that are not 90 degrees? Say if the wall is at 45 degrees, would the collision code still work?]
[1:03:28][Why not set a boolean value 'to be removed'? It seems like setting the position to an arbitrary position isn't as explicit as setting a flag to say that the entity should be removed on the next update frame.] [1:03:28][Why not set a boolean value 'to be removed'? It seems like setting the position to an arbitrary position isn't as explicit as setting a flag to say that the entity should be removed on the next update frame.]
[1:05:03][The rearranging of code did \[introduce\] some errors into the code. Is this normal for daily coding?] [1:05:03][The rearranging of code did \[introduce\] some errors into the code. Is this normal for daily coding?]

View File

@ -17,7 +17,7 @@
[46:23][Implementing alternative #2] [46:23][Implementing alternative #2]
[51:12][Bug fixing - MoveEntity shouldn't be called for non-moving or non-spatial entities] [51:12][Bug fixing - MoveEntity shouldn't be called for non-moving or non-spatial entities]
[53:27][The sword shouldn't be moving forever...] [53:27][The sword shouldn't be moving forever...]
[55:34][Q&A] [55:34][Q&A][:speech]
[56:42][How will collision be done with moving backgrounds? Such as mazes and moving tiles? Or that won't be in this game?] [56:42][How will collision be done with moving backgrounds? Such as mazes and moving tiles? Or that won't be in this game?]
[59:36][Why don't we use .c instead of .cpp?] [59:36][Why don't we use .c instead of .cpp?]
[1:00:03][When you started with enums, why did you start with (1 << 1) instead of (1 << 0?)] [1:00:03][When you started with enums, why did you start with (1 << 1) instead of (1 << 0?)]

View File

@ -16,7 +16,7 @@
[42:55][Alternative to entity type double dispatch - fundamental quality double dispatch] [42:55][Alternative to entity type double dispatch - fundamental quality double dispatch]
[47:26][Starting to add entity type double dispatch first for collision handling] [47:26][Starting to add entity type double dispatch first for collision handling]
[54:30][Why sword-monstar collision won't work quite yet - need to respond to collisions but not stop movement] [54:30][Why sword-monstar collision won't work quite yet - need to respond to collisions but not stop movement]
[58:26][Q&A] [58:26][Q&A][:speech]
[59:40][How long in your opinion does it take to become fluent on Emacs?] [59:40][How long in your opinion does it take to become fluent on Emacs?]
[1:00:10][Could an entity have multiple fundamental quality property things?] [1:00:10][Could an entity have multiple fundamental quality property things?]
[1:02:11][When are you planning to add depth sorting?] [1:02:11][When are you planning to add depth sorting?]

View File

@ -11,7 +11,7 @@
[43:37][Problem - Don't want to keep on adding new collision rules] [43:37][Problem - Don't want to keep on adding new collision rules]
[47:16][Clearing collision rules for an entity] [47:16][Clearing collision rules for an entity]
[58:15][Debugging collision rule code] [58:15][Debugging collision rule code]
[1:04:05][Q&A] [1:04:05][Q&A][:speech]
[1:05:03][What stops us from programming a game that directly boots into BIOS (hooks up to hardware as low as possible basically)?] [1:05:03][What stops us from programming a game that directly boots into BIOS (hooks up to hardware as low as possible basically)?]
[1:07:11][Do you ever use function pointers?] [1:07:11][Do you ever use function pointers?]
[1:09:07][Should the thrown entity have the player's direction/speed added to its thrown speed/direction so you cannot catch your own throws?] [1:09:07][Should the thrown entity have the player's direction/speed added to its thrown speed/direction so you cannot catch your own throws?]

View File

@ -22,7 +22,7 @@
[50:33][TODO: Rudimentary world gen - Map display] [50:33][TODO: Rudimentary world gen - Map display]
[51:34][Will you be carrying multiple items?] [51:34][Will you be carrying multiple items?]
[52:08][Sorting the TODO lists] [52:08][Sorting the TODO lists]
[56:42][Q&A] [56:42][Q&A][:speech]
[57:22][Isn't doing this list thinking too far ahead or thinking too far according to your compression-oriented programming?] [57:22][Isn't doing this list thinking too far ahead or thinking too far according to your compression-oriented programming?]
[59:15][In the GetHashFromStorageIndex function, you do some bit-twiddling to map hash value into hash index. Is there a reason that you didn't just compute hash index as hash index = hash value MOD array count?] [59:15][In the GetHashFromStorageIndex function, you do some bit-twiddling to map hash value into hash index. Is there a reason that you didn't just compute hash index as hash index = hash value MOD array count?]
[1:03:19][Right now the familiar lags behind since it moves slower than the player. There may be many legitimate situations where the player and familiar may be separated. Have you considered implementing a proportional integral derivative controller for its speed?] [1:03:19][Right now the familiar lags behind since it moves slower than the player. There may be many legitimate situations where the player and familiar may be separated. Have you considered implementing a proportional integral derivative controller for its speed?]

View File

@ -26,7 +26,7 @@
[48:01][Make sure that rectangle bound set up properly] [48:01][Make sure that rectangle bound set up properly]
[48:33][Blackboard: Explain what we want to make sure in more detail] [48:33][Blackboard: Explain what we want to make sure in more detail]
[56:57][The bug might be Casey broke something in terms of how to store things into chunk position] [56:57][The bug might be Casey broke something in terms of how to store things into chunk position]
[58:13][Q&A] [58:13][Q&A][:speech]
[58:51][@plainflavored][Have you considered using macros that take a name and operator to paste in simple vector functions?] [58:51][@plainflavored][Have you considered using macros that take a name and operator to paste in simple vector functions?]
[1:00:02][@llorton][What kind of almond milk are you drinking?] [1:00:02][@llorton][What kind of almond milk are you drinking?]
[1:00:12][@donotputmeonpizza][Do you have any suggestions on how to keep up with your 5 episodes a week, when me and my friend have only started watching your videos from the beginning last week?] [1:00:12][@donotputmeonpizza][Do you have any suggestions on how to keep up with your 5 episodes a week, when me and my friend have only started watching your videos from the beginning last week?]
@ -50,5 +50,5 @@
[1:21:08][@drtwox][Do you think RK4 integration is "overkill" for a 2D game like Handmade Hero?] [1:21:08][@drtwox][Do you think RK4 integration is "overkill" for a 2D game like Handmade Hero?]
[1:24:25][@mymlyreen][Hi, just tuned in so it might have been mentioned before, but why are you using assertions in non-test code?] [1:24:25][@mymlyreen][Hi, just tuned in so it might have been mentioned before, but why are you using assertions in non-test code?]
[1:29:38][@d7samurai][What about having two regions - one outer and one inner, include entities that move into the inner and exclude entities that move out of the outer - so there's a "margin" that allows some moving without ping-ponging right across a hard in / out line?] [1:29:38][@d7samurai][What about having two regions - one outer and one inner, include entities that move into the inner and exclude entities that move out of the outer - so there's a "margin" that allows some moving without ping-ponging right across a hard in / out line?]
[1:31:13][Call it] [1:31:13][Call it][:speech]
[/video] [/video]

View File

@ -16,7 +16,7 @@
[33:30][Diagramming the problem] [33:30][Diagramming the problem]
[36:16][Related problem: finding colliding entities outside the test area] [36:16][Related problem: finding colliding entities outside the test area]
[42:12][Implementation of the simpler option] [42:12][Implementation of the simpler option]
[57:41][Q&A] [57:41][Q&A][:speech]
[59:41][@pseudonym73][We had a bit of a troll problem today. Hang on] [59:41][@pseudonym73][We had a bit of a troll problem today. Hang on]
[1:00:23][@garlandobloom][Pasta was gross] [1:00:23][@garlandobloom][Pasta was gross]
[1:00:37][@bruno51615][What was your grade on APCS?] [1:00:37][@bruno51615][What was your grade on APCS?]
@ -43,5 +43,5 @@
[1:23:59][@d74g0n][Will there be a Handmade Hero Convention annually, after game release?] [1:23:59][@d74g0n][Will there be a Handmade Hero Convention annually, after game release?]
[1:24:25][@erdomina][Are you implementing any advanced data structures and would you recommend learning assembly to aid in optimizing C programs? Any tips on practice?] [1:24:25][@erdomina][Are you implementing any advanced data structures and would you recommend learning assembly to aid in optimizing C programs? Any tips on practice?]
[1:26:09][@ddengster][Is there such a thing as a 'hardware' cursor as compared to a 'software' mouse cursor?] [1:26:09][@ddengster][Is there such a thing as a 'hardware' cursor as compared to a 'software' mouse cursor?]
[1:28:20][We are out of time] [1:28:20][We are out of time][:speech]
[/video] [/video]

View File

@ -23,7 +23,7 @@
[57:27][handmade.cpp: Intrdouce RemoveCollisionRule] [57:27][handmade.cpp: Intrdouce RemoveCollisionRule]
[59:07][handmade.h: Introduce pairwise_collision_rule_flag] [59:07][handmade.h: Introduce pairwise_collision_rule_flag]
[1:00:29][TODO(casey): Transient collision rules! Clear based on flag] [1:00:29][TODO(casey): Transient collision rules! Clear based on flag]
[1:03:04][Q&A] [1:03:04][Q&A][:speech]
[1:04:43][Q: Why did you decide to code at, like, 4?] [1:04:43][Q: Why did you decide to code at, like, 4?]
[1:05:20][Q: Glad to see the A-A B-B collision detection code come up. Took me way too long to figure that one out] [1:05:20][Q: Glad to see the A-A B-B collision detection code come up. Took me way too long to figure that one out]
[1:09:50][Q: You mentioned yesterday about choosing between two ways to solve the problem of large entities that overlap the sim region but are not in the selected chunks. It looked to me like you could use both solutions. If the entity is larger than the max entity size, still allow it and use the add it twice approach. Would this get you all the advantages of both with neither of the disadvantages?] [1:09:50][Q: You mentioned yesterday about choosing between two ways to solve the problem of large entities that overlap the sim region but are not in the selected chunks. It looked to me like you could use both solutions. If the entity is larger than the max entity size, still allow it and use the add it twice approach. Would this get you all the advantages of both with neither of the disadvantages?]
@ -33,5 +33,5 @@
[1:13:57][Q: All of the these algorithms all specify convex shapes. Is there anything usable for concave shapes, or is it usually always the case that it's better to just split up a concave shape into multiple convex shapes?] [1:13:57][Q: All of the these algorithms all specify convex shapes. Is there anything usable for concave shapes, or is it usually always the case that it's better to just split up a concave shape into multiple convex shapes?]
[1:15:11][Q: About the TODO list, you mentioned a while back that you want to code some sort of zooming out that would let you see entities outside the sim region] [1:15:11][Q: About the TODO list, you mentioned a while back that you want to code some sort of zooming out that would let you see entities outside the sim region]
[1:15:30][Q: An episode on metaprogramming, please?] [1:15:30][Q: An episode on metaprogramming, please?]
[1:16:18][We're out of time] [1:16:18][We're out of time][:speech]
[/video] [/video]

View File

@ -48,7 +48,7 @@
[1:04:57][Run the game and find that we're getting closer] [1:04:57][Run the game and find that we're getting closer]
[1:06:40][handmade_sim_region.cpp: Additionally test the entities' Z planes to determine if they CanCollide] [1:06:40][handmade_sim_region.cpp: Additionally test the entities' Z planes to determine if they CanCollide]
[1:07:07][Run the game and find that we're sort of getting there] [1:07:07][Run the game and find that we're sort of getting there]
[1:08:40][Q&A] [1:08:40][Q&A][:speech]
[1:09:11][@duroate][Is the familiar going to be programmed to be able to go through the stairwell or instantly teleported to the floor?] [1:09:11][@duroate][Is the familiar going to be programmed to be able to go through the stairwell or instantly teleported to the floor?]
[1:10:04][@jackkrozzer][When are we going to do priority for which sprite is in front and in the background? (I don't know what that is called)] [1:10:04][@jackkrozzer][When are we going to do priority for which sprite is in front and in the background? (I don't know what that is called)]
[1:12:02][@duroate][You mentioned that you'll be able to attack from below / above. Will you be able to do that on the stairwell?] [1:12:02][@duroate][You mentioned that you'll be able to attack from below / above. Will you be able to do that on the stairwell?]
@ -68,5 +68,5 @@
[1:26:54][@jackkrozzer][Okay, so you know how we have the camera space and then there's a space outside that we can't see but entities are still moving? Will we need to edit that code to make it work on "Vertical" floors? It's okay if you don't get it. I may be thinking too far in] [1:26:54][@jackkrozzer][Okay, so you know how we have the camera space and then there's a space outside that we can't see but entities are still moving? Will we need to edit that code to make it work on "Vertical" floors? It's okay if you don't get it. I may be thinking too far in]
[1:28:02][@shadowrelic][Would we use a fixed, discrete animation for moving up and down stairs a la Link to the Past, or would the goal be to make movement seamless?] [1:28:02][@shadowrelic][Would we use a fixed, discrete animation for moving up and down stairs a la Link to the Past, or would the goal be to make movement seamless?]
[1:29:04][@xghost7][How much lines of code do you have at the moment?] [1:29:04][@xghost7][How much lines of code do you have at the moment?]
[1:29:55][That is the end] [1:29:55][That is the end][:speech]
[/video] [/video]

View File

@ -37,7 +37,7 @@
[53:47][handmade.h: TODO(casey) Need to make a solid concept of ground levels so the camera can be freely placed in Z and have multiple ground levels in one sim region] [53:47][handmade.h: TODO(casey) Need to make a solid concept of ground levels so the camera can be freely placed in Z and have multiple ground levels in one sim region]
[54:33][Run the game and note that the Familiar and Monstar are erroneously getting snapped up to our Z level] [54:33][Run the game and note that the Familiar and Monstar are erroneously getting snapped up to our Z level]
[55:19][handmade.cpp: Tweak entities' positions based on their Z level] [55:19][handmade.cpp: Tweak entities' positions based on their Z level]
[58:33][Q&A] [58:33][Q&A][:speech]
[59:18][@abnercoimbre][I'm guessing the engine will manage arbitrarily high ground levels? Would you really want that? Gameplay such as projecting attacks to a monstar below does sound fun] [59:18][@abnercoimbre][I'm guessing the engine will manage arbitrarily high ground levels? Would you really want that? Gameplay such as projecting attacks to a monstar below does sound fun]
[1:00:48][@programgamer][Why not use the X and Y positions as they appear on the screen for detecting sim regions?] [1:00:48][@programgamer][Why not use the X and Y positions as they appear on the screen for detecting sim regions?]
[1:01:18][@marco_castorina][Should you also check the "stair step" at the top of the top of the stairs? It seems you can exit earlier than at the bottom] [1:01:18][@marco_castorina][Should you also check the "stair step" at the top of the top of the stairs? It seems you can exit earlier than at the bottom]
@ -55,5 +55,5 @@
[1:14:34][@programgamer][If the camera were far away enough from the player, would the player go into a simpler routine like the rest of the entities?] [1:14:34][@programgamer][If the camera were far away enough from the player, would the player go into a simpler routine like the rest of the entities?]
[1:14:56][@rooctag][Should the possible collision test use the TestHitEntity instead of the TestEntity or are they the same? Can you briefly go over the flow of the HitEntity changes?] [1:14:56][@rooctag][Should the possible collision test use the TestHitEntity instead of the TestEntity or are they the same? Can you briefly go over the flow of the HitEntity changes?]
[1:21:30][@rooctag][You could now cancel out the first HitThis == true and not do other checks] [1:21:30][@rooctag][You could now cancel out the first HitThis == true and not do other checks]
[1:23:06][We have agreed to go on break for a week] [1:23:06][We have agreed to go on break for a week][:speech]
[/video] [/video]

View File

@ -31,7 +31,7 @@
[58:06][Run the game and see where we're at] [58:06][Run the game and see where we're at]
[58:40][Debugger: Step into AddGroundedEntity] [58:40][Debugger: Step into AddGroundedEntity]
[59:27][handmade.cpp: Consider fixing the drawing code] [59:27][handmade.cpp: Consider fixing the drawing code]
[1:01:56][Q&A] [1:01:56][Q&A][:speech]
[1:03:02][Q: That kid you just created is around two foot tall] [1:03:02][Q: That kid you just created is around two foot tall]
[1:03:30][Q: Better data is at halls.md[ref [1:03:30][Q: Better data is at halls.md[ref
site="Moose & Doc" site="Moose & Doc"
@ -49,5 +49,5 @@
[1:20:02][Q: Is this in C++?] [1:20:02][Q: Is this in C++?]
[1:21:11][Q: Does C++ compiler generate hidden code like constructors, copy constructors, etc., in the way that you structuring the game?] [1:21:11][Q: Does C++ compiler generate hidden code like constructors, copy constructors, etc., in the way that you structuring the game?]
[1:22:54][Q: Do you use the STL at all in your code?] [1:22:54][Q: Do you use the STL at all in your code?]
[1:24:18][Call it] [1:24:18][Call it][:speech]
[/video] [/video]

View File

@ -29,7 +29,7 @@
[44:01][handmade_sim_region.cpp: Convert HandleOverlap and SpeculativeCollide to use GetStairGround] [44:01][handmade_sim_region.cpp: Convert HandleOverlap and SpeculativeCollide to use GetStairGround]
[46:55][Run the game and find that that fixed our problem] [46:55][Run the game and find that that fixed our problem]
[47:28][handmade_sim_region.cpp: SpeculativeCollide needs to know whether we're coming on to or moving off a stairwell] [47:28][handmade_sim_region.cpp: SpeculativeCollide needs to know whether we're coming on to or moving off a stairwell]
[50:41][Q&A] [50:41][Q&A][:speech]
[52:15][Q: Do you use Clang on Linux?] [52:15][Q: Do you use Clang on Linux?]
[52:48][Q: What is the best way to learn C++ from absolute scratch on my own?] [52:48][Q: What is the best way to learn C++ from absolute scratch on my own?]
[53:56][Q: Do you know anything about Voxpel programming?] [53:56][Q: Do you know anything about Voxpel programming?]
@ -57,5 +57,5 @@
[1:16:18][Q: What is the best way to build a game when you know how to program but you have no art skills? Hire an artist to do it for you? That is my Achilles' heel, but I want to make a game on my own[ref [1:16:18][Q: What is the best way to build a game when you know how to program but you have no art skills? Hire an artist to do it for you? That is my Achilles' heel, but I want to make a game on my own[ref
site="Mini Metro" site="Mini Metro"
url="http://dinopoloclub.com/minimetro/"]] url="http://dinopoloclub.com/minimetro/"]]
[1:18:18][We have come to the end] [1:18:18][We have come to the end][:speech]
[/video] [/video]

View File

@ -32,7 +32,7 @@
[59:50][Run the game and note the weird effect of gravity while falling down the stairwell] [59:50][Run the game and note the weird effect of gravity while falling down the stairwell]
[1:01:04][handmade_sim_region.cpp: Set Drag.Z = 0.0f] [1:01:04][handmade_sim_region.cpp: Set Drag.Z = 0.0f]
[1:01:49][Run the game and fall down the stairwell] [1:01:49][Run the game and fall down the stairwell]
[1:02:08][Q&A] [1:02:08][Q&A][:speech]
[1:02:38][Run and jump around] [1:02:38][Run and jump around]
[1:03:36][@rsxole][Can we get a sneak preview of the fundamental types arena?] [1:03:36][@rsxole][Can we get a sneak preview of the fundamental types arena?]
[1:03:43][Blackboard: Fundamental Types Arena] [1:03:43][Blackboard: Fundamental Types Arena]
@ -46,5 +46,5 @@
[1:13:31][@blah238][How are you laying out your levels currently and are you going to make a level editor?] [1:13:31][@blah238][How are you laying out your levels currently and are you going to make a level editor?]
[1:14:20][@childphotography][Is knowing Big O notation important in the game programming industry?] [1:14:20][@childphotography][Is knowing Big O notation important in the game programming industry?]
[1:15:08][@starchypancakes][You mentioned further ways of partitioning collisions past breaking it up into regions. What would some of those be?] [1:15:08][@starchypancakes][You mentioned further ways of partitioning collisions past breaking it up into regions. What would some of those be?]
[1:15:56][End that for today] [1:15:56][End that for today][:speech]
[/video] [/video]

View File

@ -27,7 +27,7 @@
[1:00:07][Debugger: Step into PushRectOutline] [1:00:07][Debugger: Step into PushRectOutline]
[1:02:10][handmade.cpp: Multiply the Dim by half] [1:02:10][handmade.cpp: Multiply the Dim by half]
[1:02:59][Run the game and see our correctly drawing outline] [1:02:59][Run the game and see our correctly drawing outline]
[1:03:45][Q&A] [1:03:45][Q&A][:speech]
[1:05:07][@nigna][What setup do you use for debugging on Linux?] [1:05:07][@nigna][What setup do you use for debugging on Linux?]
[1:07:01][@t3amkill3r][Can you upload the videos somewhere else? YouTube is blocked in China. I would like to watch from the beginning] [1:07:01][@t3amkill3r][Can you upload the videos somewhere else? YouTube is blocked in China. I would like to watch from the beginning]
[1:07:44][@l4t33d][When doing the vertical movement, would it be reasonable to take two measurements: one at current position, then one at "final moved" position, and average the movement?] [1:07:44][@l4t33d][When doing the vertical movement, would it be reasonable to take two measurements: one at current position, then one at "final moved" position, and average the movement?]
@ -59,5 +59,5 @@
[1:30:30][@panic00][Can you rename the stream to Casey's Little Kindergarten?] [1:30:30][@panic00][Can you rename the stream to Casey's Little Kindergarten?]
[1:30:58][@protongaming][One day you said you lost hope in Microsoft, and now you say you complain so they can fix it?] [1:30:58][@protongaming][One day you said you lost hope in Microsoft, and now you say you complain so they can fix it?]
[1:33:58][@dasmehdi][Was git an example, or do you feel there are problems with it? Curious to hear] [1:33:58][@dasmehdi][Was git an example, or do you feel there are problems with it? Curious to hear]
[1:35:42][Call it there] [1:35:42][Call it there][:speech]
[/video] [/video]

View File

@ -27,7 +27,7 @@
[54:03][handmade_sim_region.cpp: Initialise tMaxTest to our current tMax] [54:03][handmade_sim_region.cpp: Initialise tMaxTest to our current tMax]
[54:34][Run the game and find that everything seems pretty good, but still a little janky] [54:34][Run the game and find that everything seems pretty good, but still a little janky]
[54:55][Set the stage for next week] [54:55][Set the stage for next week]
[55:33][Q&A] [55:33][Q&A][:speech]
[55:43][Consult the TODO list] [55:43][Consult the TODO list]
[58:14][@a_pulsing_mage][Can you explain the LengthOf(array) macro, and the sizeof pointers?] [58:14][@a_pulsing_mage][Can you explain the LengthOf(array) macro, and the sizeof pointers?]
[1:06:19][@ttbjm][Will the space entities be used for the collision optimization you were talking about in an earlier stream? o(n^2) stuff] [1:06:19][@ttbjm][Will the space entities be used for the collision optimization you were talking about in an earlier stream? o(n^2) stuff]
@ -37,5 +37,5 @@
[1:10:04][@dmitsuki][Do you dislike templates?] [1:10:04][@dmitsuki][Do you dislike templates?]
[1:11:17][@samfosteriam][How will you handle something like an explosion that affects all things in an area? Then it's not 1 entity colliding with another] [1:11:17][@samfosteriam][How will you handle something like an explosion that affects all things in an area? Then it's not 1 entity colliding with another]
[1:12:09][@flynnspixel][What do you think about the new Vulkan API?] [1:12:09][@flynnspixel][What do you think about the new Vulkan API?]
[1:13:15][Wrap things up] [1:13:15][Wrap things up][:speech]
[/video] [/video]

View File

@ -21,7 +21,7 @@
[53:17][Parameterise loaded_bitmap] [53:17][Parameterise loaded_bitmap]
[58:10][Restart the game] [58:10][Restart the game]
[58:30][Tuft it up][quote 42] [58:30][Tuft it up][quote 42]
[59:36][Q&A] [59:36][Q&A][:speech]
[1:00:29][On the fancy autoload dll stuff] [1:00:29][On the fancy autoload dll stuff]
[1:01:52][Q: Is there an art team working on this game?] [1:01:52][Q: Is there an art team working on this game?]
[1:02:41][@mmozeiko][Max random number should be set to fixed number 100000\[...\] because in episode 35 when you went to random.org you chose to generate random numbers from 0 up to that number] [1:02:41][@mmozeiko][Max random number should be set to fixed number 100000\[...\] because in episode 35 when you went to random.org you chose to generate random numbers from 0 up to that number]
@ -34,5 +34,5 @@
[1:21:09][Q: Based on the stream, it appears that you need to know math to do this type of activity. Is that correct?] [1:21:09][Q: Based on the stream, it appears that you need to know math to do this type of activity. Is that correct?]
[1:22:13][Blackboard: Casey's Plan vs. MegaTexture] [1:22:13][Blackboard: Casey's Plan vs. MegaTexture]
[1:32:47][Q: Why do you think John Carmack is a hack and when are you going to say it to his face?] [1:32:47][Q: Why do you think John Carmack is a hack and when are you going to say it to his face?]
[1:36:06][Conclusion] [1:36:06][Conclusion][:speech]
[/video] [/video]

View File

@ -30,7 +30,7 @@
[56:00][Implement MakeEmptyBitmap] [56:00][Implement MakeEmptyBitmap]
[1:00:22][Set the alpha channel of the composited bitmap] [1:00:22][Set the alpha channel of the composited bitmap]
[1:04:45][Recap today's work] [1:04:45][Recap today's work]
[1:06:14][Q&A] [1:06:14][Q&A][:speech]
[1:07:02][Q: Casey, I missed the earlier part of the feed, but what was the intention of moving the ground plane with the player?] [1:07:02][Q: Casey, I missed the earlier part of the feed, but what was the intention of moving the ground plane with the player?]
[1:07:37][Q: Why aren't RandomUnilateral and RandomBilateral not just using the implementation of RandomBetween? Seems like a pretty clear violation of DRY, although I realise you aren't currently intending for this code to be extremely clean right now] [1:07:37][Q: Why aren't RandomUnilateral and RandomBilateral not just using the implementation of RandomBetween? Seems like a pretty clear violation of DRY, although I realise you aren't currently intending for this code to be extremely clean right now]
[1:11:19][Someone wants a cloc count] [1:11:19][Someone wants a cloc count]
@ -46,5 +46,5 @@
[1:25:37][Q: I think you've used an aggregate initialiser in one place with random_series being seeded, i.e. you only have one call to RandomSeed but you have at least...] [1:25:37][Q: I think you've used an aggregate initialiser in one place with random_series being seeded, i.e. you only have one call to RandomSeed but you have at least...]
[1:26:53][Q: Initially, you put BytesPerPixel into the bitmap structure because it can be useful. Then I asked you to remove it because it never changes, and you did that. But ten or so episodes later you added it back because it would be useful. And now you're removing it again. This is funny] [1:26:53][Q: Initially, you put BytesPerPixel into the bitmap structure because it can be useful. Then I asked you to remove it because it never changes, and you did that. But ten or so episodes later you added it back because it would be useful. And now you're removing it again. This is funny]
[1:27:45][Q: You fix Random to be uniform by generating a full 32bit random number, do mod next power of 2 choice count, then check if result is less than choice count. If not, repeat the whole process] [1:27:45][Q: You fix Random to be uniform by generating a full 32bit random number, do mod next power of 2 choice count, then check if result is less than choice count. If not, repeat the whole process]
[1:28:18][The end of another full-power episode of Handmade Hero, which was dedicated to Abner Coimbre] [1:28:18][The end of another full-power episode of Handmade Hero, which was dedicated to Abner Coimbre][:speech]
[/video] [/video]

View File

@ -26,14 +26,14 @@
[1:25:37][Re-enable DrawTestGround] [1:25:37][Re-enable DrawTestGround]
[1:27:04][Put CAlpha back in] [1:27:04][Put CAlpha back in]
[1:30:13][Check the equation] [1:30:13][Check the equation]
[1:32:37][Q&A] [1:32:37][Q&A][:speech]
[1:33:18][Q: According to \[a website\], to fix the Wacom driver without restarting, stop and start Wacom Professional Tablet Service] [1:33:18][Q: According to \[a website\], to fix the Wacom driver without restarting, stop and start Wacom Professional Tablet Service]
[1:35:00][Q: Being Happy, Sleepy and Sneezy, you do realise you're just four dwarves short of a whole crew?] [1:35:00][Q: Being Happy, Sleepy and Sneezy, you do realise you're just four dwarves short of a whole crew?]
[1:36:07][@mr4thdimention][So if I understand correctly (sorry if my interpretation just confuses anyone), the reason off-screen rendering was incorrect before pre-multiplied alpha was that, after blending, things in the texture - the colours there - were pre-multiplied because they were multiplied when they were put in the texture. If, for some reason, you didn't want to optimise your code, you could also divide the colour channel by the alpha to get it back to un-pre-multiplied. Is this a reasonable understanding of the issue?] [1:36:07][@mr4thdimention][So if I understand correctly (sorry if my interpretation just confuses anyone), the reason off-screen rendering was incorrect before pre-multiplied alpha was that, after blending, things in the texture - the colours there - were pre-multiplied because they were multiplied when they were put in the texture. If, for some reason, you didn't want to optimise your code, you could also divide the colour channel by the alpha to get it back to un-pre-multiplied. Is this a reasonable understanding of the issue?]
[1:42:55][Q: Can you give a small example of what the decompression step between SimEntity and StoredEntity will look like?] [1:42:55][Q: Can you give a small example of what the decompression step between SimEntity and StoredEntity will look like?]
[1:43:24][@drive137][Q: Maybe we should set a way for you to see things like that kind of help, if someone finds a good possible solution. No, I don't know how] [1:43:24][@drive137][Q: Maybe we should set a way for you to see things like that kind of help, if someone finds a good possible solution. No, I don't know how]
[1:43:55][Blackboard: A lot of equationing] [1:43:55][Blackboard: A lot of equationing]
[1:44:43][Wrap up the stream with a brief recap...] [1:44:43][Wrap up the stream with a brief recap...][:speech]
[1:46:14][...a peek into the future...] [1:46:14][...a peek into the future...][:speech]
[1:49:29][...and closing remarks] [1:49:29][...and closing remarks][:speech]
[/video] [/video]

View File

@ -23,7 +23,7 @@
[47:08][Blackboard: Tiling considerations] [47:08][Blackboard: Tiling considerations]
[48:38][Turn DrawTestGround into DrawGroundChunk] [48:38][Turn DrawTestGround into DrawGroundChunk]
[54:28][View the results in-game] [54:28][View the results in-game]
[55:08][Q&A] [55:08][Q&A][:speech]
[55:58][Q: Why don't we fill the entire game window instead of having all that black space?] [55:58][Q: Why don't we fill the entire game window instead of having all that black space?]
[58:29][Q: Are some of these issues with dealing with display on multiple levels stemming from the lack of a Z-coordinate for the camera to just do a lerp on?] [58:29][Q: Are some of these issues with dealing with display on multiple levels stemming from the lack of a Z-coordinate for the camera to just do a lerp on?]
[1:01:03][Q: If no one's asking related questions, could you ballpark a time-frame when adding a font and text rendering system will become useful or necessary?] [1:01:03][Q: If no one's asking related questions, could you ballpark a time-frame when adding a font and text rendering system will become useful or necessary?]
@ -34,5 +34,5 @@
[1:07:38][Q: What is your programming experience as before Handmade Hero?] [1:07:38][Q: What is your programming experience as before Handmade Hero?]
[1:08:42][Q: How many different classes are you having to use already?] [1:08:42][Q: How many different classes are you having to use already?]
[1:10:30][Q: Is there a simple way to explain pointers and references in C++?] [1:10:30][Q: Is there a simple way to explain pointers and references in C++?]
[1:16:30][Closing remarks] [1:16:30][Closing remarks][:speech]
[/video] [/video]

View File

@ -34,10 +34,10 @@
[53:13][Step through the code] [53:13][Step through the code]
[54:54][FillGroundChunk] [54:54][FillGroundChunk]
[58:00][View the results in-game] [58:00][View the results in-game]
[59:11][Q&A] [59:11][Q&A][:speech]
[59:35][@garlandobloom][Q: What is the most expired food you have ever eaten?] [59:35][@garlandobloom][Q: What is the most expired food you have ever eaten?]
[59:51][Q: Could you explain what pop and push are, and how they work?] [59:51][Q: Could you explain what pop and push are, and how they work?]
[1:01:29][Blackboard: Memory is a big line!] [1:01:29][Blackboard: Memory is a big line!]
[1:10:49][Q: How will the ground texture chunking handle adjacent rooms with different types of ground?] [1:10:49][Q: How will the ground texture chunking handle adjacent rooms with different types of ground?]
[1:13:29][Closing remarks] [1:13:29][Closing remarks][:speech]
[/video] [/video]

View File

@ -34,7 +34,7 @@
[1:05:10][Find out why those chunks aren't getting produced until the Hero walks on them] [1:05:10][Find out why those chunks aren't getting produced until the Hero walks on them]
[1:07:01][This was working totally perfectly] [1:07:01][This was working totally perfectly]
[1:07:53][Problem solved] [1:07:53][Problem solved]
[1:08:41][Q&A] [1:08:41][Q&A][:speech]
[1:09:27][Q: What is Muratori syntax?] [1:09:27][Q: What is Muratori syntax?]
[1:10:32][Q: Will the random ground splats be based on some seed so that the ground buffer can be regenerated the same as it was after it gets evicted?] [1:10:32][Q: Will the random ground splats be based on some seed so that the ground buffer can be regenerated the same as it was after it gets evicted?]
[1:11:13][Q: I'm sure it's been asked a bunch, but any tips for what language to start with and how to start?] [1:11:13][Q: I'm sure it's been asked a bunch, but any tips for what language to start with and how to start?]
@ -45,5 +45,5 @@
[1:19:11][@miblo][Couldn't you set the SimBounds expansion from the screen dimensions or CameraBoundsInMeters or something? Hope I'm understanding it correctly] [1:19:11][@miblo][Couldn't you set the SimBounds expansion from the screen dimensions or CameraBoundsInMeters or something? Hope I'm understanding it correctly]
[1:20:30][Q: Will you be implementing dynamic lighting or any deferred rendering for lots of real lights, etc?] [1:20:30][Q: Will you be implementing dynamic lighting or any deferred rendering for lots of real lights, etc?]
[1:22:45][Q: Is there anyone you can suggest for a hardcore render guy?] [1:22:45][Q: Is there anyone you can suggest for a hardcore render guy?]
[1:23:40][Closing remarks] [1:23:40][Closing remarks][:speech]
[/video] [/video]

View File

@ -35,7 +35,7 @@
[49:00][Shuffle the code] [49:00][Shuffle the code]
[49:46][Count how many GroundBuffers fit on the screen] [49:46][Count how many GroundBuffers fit on the screen]
[50:16][Assess our current situation] [50:16][Assess our current situation]
[51:26][Q&A] [51:26][Q&A][:speech]
[52:04][@jazzy_josh][Are the randomly generated floor tiles being cached yet?] [52:04][@jazzy_josh][Are the randomly generated floor tiles being cached yet?]
[52:20][@freddukes][Do you think having things in place like static cast to put more checks, e.g. int to pointer, is useful over standard C-style cast which just ignores all type-checking? Wouldn't a static cast have found that bug at the start of the stream?] [52:20][@freddukes][Do you think having things in place like static cast to put more checks, e.g. int to pointer, is useful over standard C-style cast which just ignores all type-checking? Wouldn't a static cast have found that bug at the start of the stream?]
[55:29][@QuickliGames][Do you think the clumpiness is actually due to splat distance from the centre of the chunks?] [55:29][@QuickliGames][Do you think the clumpiness is actually due to splat distance from the centre of the chunks?]
@ -44,5 +44,5 @@
[1:01:12][@maato_][Are there still places where the background colour shows through the ground tiles?] [1:01:12][@maato_][Are there still places where the background colour shows through the ground tiles?]
[1:02:39][@cmbasckeira][Is this Chunk code already prepared for adding holes to the ground?] [1:02:39][@cmbasckeira][Is this Chunk code already prepared for adding holes to the ground?]
[1:07:01][@insofaras][Could you make code that ensures a certain frame-rate but uses extra available time to generate the ground textures in the background, maybe generating a low-quality version first to avoid having no texture at all?] [1:07:01][@insofaras][Could you make code that ensures a certain frame-rate but uses extra available time to generate the ground textures in the background, maybe generating a low-quality version first to avoid having no texture at all?]
[1:08:58][Recap, a glimpse into the future and closing remarks] [1:08:58][Recap, a glimpse into the future and closing remarks][:speech]
[/video] [/video]

View File

@ -52,7 +52,7 @@
[54:46][Blackboard: PieceGroup] [54:46][Blackboard: PieceGroup]
[56:23][Blackboard: Compression Oriented Programming] [56:23][Blackboard: Compression Oriented Programming]
[56:57][Blackboard: render_group] [56:57][Blackboard: render_group]
[58:19][Q&A] [58:19][Q&A][:speech]
[59:16][@miblo][Will things like filters end up in the render_group?] [59:16][@miblo][Will things like filters end up in the render_group?]
[1:00:55][@cezonezor][How long will the renderer take?] [1:00:55][@cezonezor][How long will the renderer take?]
[1:02:29][@poohshoes][Could you give us examples of what some of the simpler things will be in the render_group?] [1:02:29][@poohshoes][Could you give us examples of what some of the simpler things will be in the render_group?]
@ -65,5 +65,5 @@
[1:08:45][@boondoggle42][Will our hero always be taller than the treetops?] [1:08:45][@boondoggle42][Will our hero always be taller than the treetops?]
[1:09:58][We've finished early... or have we?] [1:09:58][We've finished early... or have we?]
[1:10:19][@abnercoimbre][Are we keeping the 5PM schedule?] [1:10:19][@abnercoimbre][Are we keeping the 5PM schedule?]
[1:12:06][Wrap it up with a recap and closing remarks] [1:12:06][Wrap it up with a recap and closing remarks][:speech]
[/video] [/video]

View File

@ -45,7 +45,7 @@
[58:24][Pull out the EntityBasis computation] [58:24][Pull out the EntityBasis computation]
[59:58][Clean up] [59:58][Clean up]
[1:01:32][See where we're at] [1:01:32][See where we're at]
[1:01:38][Q&A] [1:01:38][Q&A][:speech]
[1:03:15][@pseudonym73][Warning! There may be lots of prestream questions today] [1:03:15][@pseudonym73][Warning! There may be lots of prestream questions today]
[1:03:57][@phantomu][When you meet a bug in the game and are able to recreate it, will you get a bug line in the programming, or how does it work?] [1:03:57][@phantomu][When you meet a bug in the game and are able to recreate it, will you get a bug line in the programming, or how does it work?]
[1:04:36][@wardinsc][Is it worth aligning render_entries?] [1:04:36][@wardinsc][Is it worth aligning render_entries?]
@ -54,5 +54,5 @@
[1:09:03][@aooaooa][Why use pointers over references?] [1:09:03][@aooaooa][Why use pointers over references?]
[1:10:31][@terminalgain][About Mantle, were you aware AMD dropped development for it and put a lot of that manpower into helping push Vulkan?] [1:10:31][@terminalgain][About Mantle, were you aware AMD dropped development for it and put a lot of that manpower into helping push Vulkan?]
[1:11:23][@mr4thdimention][The PushBuffer is an abstraction layer relying on memory for communication instead of a bunch of functions, if I understand correctly. Is that how you prefer API design in general?] [1:11:23][@mr4thdimention][The PushBuffer is an abstraction layer relying on memory for communication instead of a bunch of functions, if I understand correctly. Is that how you prefer API design in general?]
[1:13:03][We are done here] [1:13:03][We are done here][:speech]
[/video] [/video]

View File

@ -41,11 +41,11 @@
[55:30][Blackboard: Pretend we had some third universal basis] [55:30][Blackboard: Pretend we had some third universal basis]
[57:29][Blackboard: How does Casey move a point from world space into screen space?] [57:29][Blackboard: How does Casey move a point from world space into screen space?]
[1:01:17][Blackboard: Preview what we're going to do] [1:01:17][Blackboard: Preview what we're going to do]
[1:03:08][Q&A] [1:03:08][Q&A][:speech]
[1:03:41][@mr4thdimention][Would you represent the origin of coordinate systems in a universal coordinate system?] [1:03:41][@mr4thdimention][Would you represent the origin of coordinate systems in a universal coordinate system?]
[1:06:25][@nicstop][A few streams ago you said you'd prefer to call functions through a macro and then forgot to explain why] [1:06:25][@nicstop][A few streams ago you said you'd prefer to call functions through a macro and then forgot to explain why]
[1:07:06][@e10dee4d][Why is the familiar moving left to right, or did I miss something?] [1:07:06][@e10dee4d][Why is the familiar moving left to right, or did I miss something?]
[1:07:32][@cubercaleb][Why are computer coordinates upside-down?] [1:07:32][@cubercaleb][Why are computer coordinates upside-down?]
[1:12:30][@twinduoq][How important is it to know how to make a game engine vs simply using one? And if you were to use DirectX libraries, how much would the code differ?] [1:12:30][@twinduoq][How important is it to know how to make a game engine vs simply using one? And if you were to use DirectX libraries, how much would the code differ?]
[1:21:06][Wrap it up with a brief recap and a glimpse into the future] [1:21:06][Wrap it up with a brief recap and a glimpse into the future][:speech]
[/video] [/video]

View File

@ -35,7 +35,7 @@
[54:19][Play with those axes] [54:19][Play with those axes]
[55:26][Do we have pie?][quote 47] [55:26][Do we have pie?][quote 47]
[56:08][Continue playing] [56:08][Continue playing]
[57:27][Q&A] [57:27][Q&A][:speech]
[59:26][@abnercoimbre][Do you usually worry a lot about naming schemes? You always seem to choose a good enough name and move on] [59:26][@abnercoimbre][Do you usually worry a lot about naming schemes? You always seem to choose a good enough name and move on]
[59:48][@naysayer88][Is that the variable?] [59:48][@naysayer88][Is that the variable?]
[1:00:10][@kirre1000][How can you draw so fast? Do you use a draw pad and pen?] [1:00:10][@kirre1000][How can you draw so fast? Do you use a draw pad and pen?]
@ -47,5 +47,5 @@
[1:05:20][Go nuts with that] [1:05:20][Go nuts with that]
[1:05:55][@cdawzrd][Time-dependent colour][quote 48] [1:05:55][@cdawzrd][Time-dependent colour][quote 48]
[1:07:11][@cubercaleb][Needs more dots] [1:07:11][@cubercaleb][Needs more dots]
[1:07:40][Call it done for the day, with special mention made of that weird pulsating thing and a glimpse into the future][quote 49] [1:07:40][Call it done for the day, with special mention made of that weird pulsating thing and a glimpse into the future][:speech][quote 49]
[/video] [/video]

View File

@ -49,7 +49,7 @@
[50:58][Check the code] [50:58][Check the code]
[51:40][Find our typo and restore our buffer pre-step] [51:40][Find our typo and restore our buffer pre-step]
[52:15][Re-enable our edge test and consider further work] [52:15][Re-enable our edge test and consider further work]
[53:08][Q&A] [53:08][Q&A][:speech]
[53:54][@d7samurai][What are your computer specs?] [53:54][@d7samurai][What are your computer specs?]
[55:14][@powerc9k][Is it weird that I got really excited once the rotated fill got faster?] [55:14][@powerc9k][Is it weird that I got really excited once the rotated fill got faster?]
[56:06][@wardinsc][Would skewing the axes still work?] [56:06][@wardinsc][Would skewing the axes still work?]
@ -63,5 +63,5 @@
[1:06:07][Blackboard: Texture sampling handles anti-aliasing for the alpha'd bitmaps] [1:06:07][Blackboard: Texture sampling handles anti-aliasing for the alpha'd bitmaps]
[1:07:57][Check out our hilarious little shape and review our progress] [1:07:57][Check out our hilarious little shape and review our progress]
[1:09:37][@garlandobloom][Historically, did we ever do anti-aliasing with CPU rendering?] [1:09:37][@garlandobloom][Historically, did we ever do anti-aliasing with CPU rendering?]
[1:11:52][Postpone anything more until tomorrow, with a potential plan of action] [1:11:52][Postpone anything more until tomorrow, with a potential plan of action][:speech]
[/video] [/video]

View File

@ -56,5 +56,5 @@
[1:19:54][@guit4rfreak][Will the different renderers be in the platform layer?] [1:19:54][@guit4rfreak][Will the different renderers be in the platform layer?]
[1:20:19][@log_2][I saw a great video on youtube called 'Computer Color is Broken' from minutephysics that talks about how blending colours is usually incorrectly done. Without relying on 3rd party libraries, you have an opportunity to do it correctly.] [1:20:19][@log_2][I saw a great video on youtube called 'Computer Color is Broken' from minutephysics that talks about how blending colours is usually incorrectly done. Without relying on 3rd party libraries, you have an opportunity to do it correctly.]
[1:22:21][@miblo][Remember when you introduced RenderGroup the other week? Is this subpixel rendering lerp one of the things that will go in the RenderGroup?] [1:22:21][@miblo][Remember when you introduced RenderGroup the other week? Is this subpixel rendering lerp one of the things that will go in the RenderGroup?]
[1:23:16][Call it for today with a recap and a glimpse into the future] [1:23:16][Call it for today with a recap and a glimpse into the future][:speech]
[/video] [/video]

View File

@ -39,7 +39,7 @@
[53:07][Live tinting] [53:07][Live tinting]
[55:37][Premultiply the alpha properly] [55:37][Premultiply the alpha properly]
[57:08][Blackboard: Premultiplied alpha] [57:08][Blackboard: Premultiplied alpha]
[59:09][Q&A] [59:09][Q&A][:speech]
[59:37][@ashkanhoss29][What would be the visual artifact of using 2 instead of 2.2 for the gamma?] [59:37][@ashkanhoss29][What would be the visual artifact of using 2 instead of 2.2 for the gamma?]
[1:01:28][@garlandobloom][Q: Also need to do additive color tinting for full expressiveness] [1:01:28][@garlandobloom][Q: Also need to do additive color tinting for full expressiveness]
[1:02:11][@krohnos][I have a CS background but am 2 months behind on coding this. It is much easier to follow when I'm not trying to type myself. How detrimental would it be to my understanding to watch and just stop coding if I get too far behind? Sometimes when you're moving things around, I have to watch that bit 2-3 times] [1:02:11][@krohnos][I have a CS background but am 2 months behind on coding this. It is much easier to follow when I'm not trying to type myself. How detrimental would it be to my understanding to watch and just stop coding if I get too far behind? Sometimes when you're moving things around, I have to watch that bit 2-3 times]
@ -54,5 +54,5 @@
[1:14:47][@differentname][Do all monitors use the same 2.2 curve?] [1:14:47][@differentname][Do all monitors use the same 2.2 curve?]
[1:16:23][@cubercaleb][Is raising the color value to 2 instead of 2.2 really going to save that much processing power?] [1:16:23][@cubercaleb][Is raising the color value to 2 instead of 2.2 really going to save that much processing power?]
[1:18:11][@kikokat][I got stuck implementing a Bitshift + PRNG in your engine, thanks for showing a code comment about 'Wang Hashing' earlier which was just what I needed] [1:18:11][@kikokat][I got stuck implementing a Bitshift + PRNG in your engine, thanks for showing a code comment about 'Wang Hashing' earlier which was just what I needed]
[1:18:46][Wrap it up for today] [1:18:46][Wrap it up for today][:speech]
[/video] [/video]

View File

@ -34,7 +34,7 @@
page="Optimization Best Practices" page="Optimization Best Practices"
url="https://msdn.microsoft.com/en-us/library/ms235601.aspx"]] url="https://msdn.microsoft.com/en-us/library/ms235601.aspx"]]
[50:52][Try wrapping everything else in a #pragma optimize off] [50:52][Try wrapping everything else in a #pragma optimize off]
[54:25][Q&A] [54:25][Q&A][:speech]
[55:39][@arbesfeld][Why can't you compile OpenGL code to C to make a software renderer?] [55:39][@arbesfeld][Why can't you compile OpenGL code to C to make a software renderer?]
[56:00][@mr4thdimention][Is it useful to be able to debug with optimizations on? Do you think you might be able to show how to do that at some point?] [56:00][@mr4thdimention][Is it useful to be able to debug with optimizations on? Do you think you might be able to show how to do that at some point?]
[56:40][Demonstrate /Zo compiler flag[ref [56:40][Demonstrate /Zo compiler flag[ref
@ -51,5 +51,5 @@
[1:12:27][@grumpygiant256][Any reason why you write 'Texel.a + Dest.a - Texel.a*Dest.a' instead of just 'InvRSA*Dest.a + Texel.a', which would match the RGB channels?] [1:12:27][@grumpygiant256][Any reason why you write 'Texel.a + Dest.a - Texel.a*Dest.a' instead of just 'InvRSA*Dest.a + Texel.a', which would match the RGB channels?]
[1:12:54][Rearrange these calculations and keep on keeping on condensing] [1:12:54][Rearrange these calculations and keep on keeping on condensing]
[1:15:54][@andsz_][Wasn't the alpha channel authored with nonlinear colors?] [1:15:54][@andsz_][Wasn't the alpha channel authored with nonlinear colors?]
[1:16:32][Call it a day] [1:16:32][Call it a day][:speech]
[/video] [/video]

View File

@ -21,7 +21,7 @@
[44:22][Blackboard: What do we do in 2D?] [44:22][Blackboard: What do we do in 2D?]
[46:22][Blackboard: Normal maps] [46:22][Blackboard: Normal maps]
[48:19][Blackboard: We don't know what the light field is] [48:19][Blackboard: We don't know what the light field is]
[53:19][Q&A] [53:19][Q&A][:speech]
[54:18][@cubercaleb][So is this why animation studios like Pixar have super computers for the rendering?] [54:18][@cubercaleb][So is this why animation studios like Pixar have super computers for the rendering?]
[55:31][@ttbjm][What about shadows?] [55:31][@ttbjm][What about shadows?]
[56:09][Blackboard: Shadow maps] [56:09][Blackboard: Shadow maps]
@ -77,5 +77,5 @@
[1:54:33][@ice_engine][Why is it easier to represent light as photons and not particles in 3D programs?] [1:54:33][@ice_engine][Why is it easier to represent light as photons and not particles in 3D programs?]
[1:55:08][@irdumbs][Rendering light in environments and events approaching the speed of light. How to do it?] [1:55:08][@irdumbs][Rendering light in environments and events approaching the speed of light. How to do it?]
[1:55:24][@doctoromega][PBR lightning? Quick run down on how it works?] [1:55:24][@doctoromega][PBR lightning? Quick run down on how it works?]
[1:55:41][We have come to the end] [1:55:41][We have come to the end][:speech]
[/video] [/video]

View File

@ -32,7 +32,7 @@
[59:24][Throw in a Normal.z calculation for now and finish MakeSphereNormalMap] [59:24][Throw in a Normal.z calculation for now and finish MakeSphereNormalMap]
[1:02:43][Add Normalize to handmade_math.h] [1:02:43][Add Normalize to handmade_math.h]
[1:03:49][Compile and see it in-game] [1:03:49][Compile and see it in-game]
[1:04:18][Q&A] [1:04:18][Q&A][:speech]
[1:05:02][@dsjimenez][Your 2D art already seems to have some shading. Will that just represent ambient lighting when mixed with this dynamic lighting you're trying to do?] [1:05:02][@dsjimenez][Your 2D art already seems to have some shading. Will that just represent ambient lighting when mixed with this dynamic lighting you're trying to do?]
[1:05:57][@miblo][In MakeSphereNormalMap, should 'Y < Bitmap->Width;' be 'Y < Bitmap->Height;'?] [1:05:57][@miblo][In MakeSphereNormalMap, should 'Y < Bitmap->Width;' be 'Y < Bitmap->Height;'?]
[1:06:15][@tenbroya][How far do you think you can increase the capabilities of an engine like this before you start to suffer from performance constraints due to using only the CPU (vs GPU)?] [1:06:15][@tenbroya][How far do you think you can increase the capabilities of an engine like this before you start to suffer from performance constraints due to using only the CPU (vs GPU)?]
@ -41,5 +41,5 @@
[1:12:05][@timbertoes][Is your lighting lookup a similar technique to MatCaps used in other software?] [1:12:05][@timbertoes][Is your lighting lookup a similar technique to MatCaps used in other software?]
[1:12:20][@lukeultra][What benefits do you see from using the extra time it takes to create your own engine from scratch? Is it worth it in your opinion?] [1:12:20][@lukeultra][What benefits do you see from using the extra time it takes to create your own engine from scratch? Is it worth it in your opinion?]
[1:12:35][@pseudonym73][The catch is that it's going to take the Sqrt of a negative number if you're outside the sphere] [1:12:35][@pseudonym73][The catch is that it's going to take the Sqrt of a negative number if you're outside the sphere]
[1:14:03][We have come to the end of the questions] [1:14:03][We have come to the end of the questions][:speech]
[/video] [/video]

View File

@ -34,7 +34,7 @@
[45:24][Blackboard: Picking from the environment map] [45:24][Blackboard: Picking from the environment map]
[47:51][Nullify the Middle sample and make SampleEnvironmentMap produce values we can use] [47:51][Nullify the Middle sample and make SampleEnvironmentMap produce values we can use]
[55:33][Look forward to next week] [55:33][Look forward to next week]
[56:28][Q&A] [56:28][Q&A][:speech]
[57:42][Recap today's cleaning up] [57:42][Recap today's cleaning up]
[58:21][@pseudonym73][When you lerp two normals, you probably won't get a normalised vector. There are a few things you can do about that. Would you briefly comment on your thoughts about this?] [58:21][@pseudonym73][When you lerp two normals, you probably won't get a normalised vector. There are a few things you can do about that. Would you briefly comment on your thoughts about this?]
[1:01:41][@chronaldragon][Q: how are we going to sample lights when calculating the pixel values for each sprite? Will there be a list of all the lights? Or will that be a parameter of some sort?] [1:01:41][@chronaldragon][Q: how are we going to sample lights when calculating the pixel values for each sprite? Will there be a list of all the lights? Or will that be a parameter of some sort?]
@ -47,5 +47,5 @@
[1:12:37][gasto5 Q; Will the effect end up like a bump map effect?] [1:12:37][gasto5 Q; Will the effect end up like a bump map effect?]
[1:12:54][@deadvertex][Could we do reflections by using our frame buffer as an environment map when drawing the bitmap?] [1:12:54][@deadvertex][Could we do reflections by using our frame buffer as an environment map when drawing the bitmap?]
[1:13:17][@pseudonym73][If you imagine the surface as an implicit function f(x,y,z) = 0, it's the gradient of THAT function. Which is the same as the cross product of the two surface tangents.] [1:13:17][@pseudonym73][If you imagine the surface as an implicit function f(x,y,z) = 0, it's the gradient of THAT function. Which is the same as the cross product of the two surface tangents.]
[1:14:44][We have come to the end of the questions] [1:14:44][We have come to the end of the questions][:speech]
[/video] [/video]

View File

@ -23,7 +23,7 @@
[48:08][Take a look at what we were doing in SampleEnvironmentMap] [48:08][Take a look at what we were doing in SampleEnvironmentMap]
[48:40][Use the Normal to look up into the environment_map] [48:40][Use the Normal to look up into the environment_map]
[49:25][View it in-game] [49:25][View it in-game]
[50:35][Q&A] [50:35][Q&A][:speech]
[51:30][@poohshoes][In the MoveEntity function you have two variables that are never used: NewPlayerP and OldPlayerP. Will you delete them for me?] [51:30][@poohshoes][In the MoveEntity function you have two variables that are never used: NewPlayerP and OldPlayerP. Will you delete them for me?]
[52:28][@ttbjm][Would this scheme let you have a pool of water reflect a starry sky?] [52:28][@ttbjm][Would this scheme let you have a pool of water reflect a starry sky?]
[53:25][Blackboard: Reflecting a starry sky in a pool of water] [53:25][Blackboard: Reflecting a starry sky in a pool of water]
@ -44,5 +44,5 @@
[1:16:03][Check it out in-game and then drive it off an animated parameter] [1:16:03][Check it out in-game and then drive it off an animated parameter]
[1:18:06][@miblo][Will light get reflected horizontally from walls etc. in this scheme?] [1:18:06][@miblo][Will light get reflected horizontally from walls etc. in this scheme?]
[1:18:53][@andsz_][Yay! Now we can oversaturate] [1:18:53][@andsz_][Yay! Now we can oversaturate]
[1:19:08][Close down] [1:19:08][Close down][:speech]
[/video] [/video]

View File

@ -26,7 +26,7 @@
[47:53][Tweak the Normal] [47:53][Tweak the Normal]
[49:01][Check out the reflective sphere in-game] [49:01][Check out the reflective sphere in-game]
[49:56][Consider investigating what's going wrong with the Top map] [49:56][Consider investigating what's going wrong with the Top map]
[51:46][Q&A] [51:46][Q&A][:speech]
[52:50][@thesizik][You could try creating a normal map with a more predictable reflection, rather than a sphere] [52:50][@thesizik][You could try creating a normal map with a more predictable reflection, rather than a sphere]
[53:53][@andsz_][Is the Y-axis correctly set in the normal map?] [53:53][@andsz_][Is the Y-axis correctly set in the normal map?]
[54:58][@pseudonym73][A pyramid was suggested by a couple of people] [54:58][@pseudonym73][A pyramid was suggested by a couple of people]

View File

@ -35,5 +35,5 @@
[1:20:50][@flaturated][How would the anomaly shift if the sphere were to move up and down instead of left and right?] [1:20:50][@flaturated][How would the anomaly shift if the sphere were to move up and down instead of left and right?]
[1:22:40][@grumpygiant256][Wondering if it shouldn't maybe be " / fabs(SampleDirection.y)"?] [1:22:40][@grumpygiant256][Wondering if it shouldn't maybe be " / fabs(SampleDirection.y)"?]
[1:26:04][@stelar7][Show the sampling on the texture?] [1:26:04][@stelar7][Show the sampling on the texture?]
[1:28:40][The stream's over] [1:28:40][The stream's over][:speech]
[/video] [/video]

View File

@ -20,7 +20,7 @@
[42:59][Set OriginY in order to pass it to ZDiff] [42:59][Set OriginY in order to pass it to ZDiff]
[44:06][Turn off the sampling overdraw and darken the sphere] [44:06][Turn off the sampling overdraw and darken the sphere]
[44:59][Check out our stable sphere and allow it to move around again] [44:59][Check out our stable sphere and allow it to move around again]
[46:34][Q&A] [46:34][Q&A][:speech]
[47:08][@d7samurai][The reflection is "inverted" - the edge should be the center and vice versa] [47:08][@d7samurai][The reflection is "inverted" - the edge should be the center and vice versa]
[47:13][@garlandobloom][Q: Reflection I think is backwards, at least vertically] [47:13][@garlandobloom][Q: Reflection I think is backwards, at least vertically]
[47:53][@teknorath][How long do you anticipate it will take before we get into more game-designey type topics rather than building up the engine?] [47:53][@teknorath][How long do you anticipate it will take before we get into more game-designey type topics rather than building up the engine?]
@ -41,5 +41,5 @@
[1:12:28][Kill it for today and glimpse into the future] [1:12:28][Kill it for today and glimpse into the future]
[1:13:07][The green dude is tough][quote 68] [1:13:07][The green dude is tough][quote 68]
[1:15:27][@ttbjm][What about Fresnel!!!] [1:15:27][@ttbjm][What about Fresnel!!!]
[1:16:45][Wrap it up for today] [1:16:45][Wrap it up for today][:speech]
[/video] [/video]

View File

@ -26,7 +26,7 @@
[46:07][Flip the sign of ChunkOffsetY in FillGroundChunk] [46:07][Flip the sign of ChunkOffsetY in FillGroundChunk]
[46:31][On the importance of focusing on whatever it is that you're focusing on, and to know when to stop and correct things] [46:31][On the importance of focusing on whatever it is that you're focusing on, and to know when to stop and correct things]
[48:27][Casey thinks we're in good shape there] [48:27][Casey thinks we're in good shape there]
[49:07][Q&A] [49:07][Q&A][:speech]
[50:51][@chronaldragon][Q: Has this work fixed the normal map issue or will we need to address that specifically?] [50:51][@chronaldragon][Q: Has this work fixed the normal map issue or will we need to address that specifically?]
[51:46][@tloch14][Do you think that making the Y component to be bottom-up will also help make sense of game mechanics like gravity?] [51:46][@tloch14][Do you think that making the Y component to be bottom-up will also help make sense of game mechanics like gravity?]
[52:34][@glasses_boy][Will we be implementing a matrix/affine transform in order to handle changes to coordinate systems?] [52:34][@glasses_boy][Will we be implementing a matrix/affine transform in order to handle changes to coordinate systems?]
@ -37,5 +37,5 @@
[1:02:41][@pseudonym73][It's more correct to call that the "translation part". The entire upper part is affine] [1:02:41][@pseudonym73][It's more correct to call that the "translation part". The entire upper part is affine]
[1:05:17][@chochmah][When you exit the program, Visual Studio says that there are about 8 threads terminated. Is there more than one thread in Handmade Hero right now?] [1:05:17][@chochmah][When you exit the program, Visual Studio says that there are about 8 threads terminated. Is there more than one thread in Handmade Hero right now?]
[1:07:15][@cubercaleb][Would it be possible to have the renderer set up so the world curves back as you move along the Y-axis?] [1:07:15][@cubercaleb][Would it be possible to have the renderer set up so the world curves back as you move along the Y-axis?]
[1:10:44][Go ahead and end] [1:10:44][Go ahead and end][:speech]
[/video] [/video]

Some files were not shown because too many files have changed in this diff Show More