Handmade Hero»Episode Guide
The Basics of Platform API Design
?
?

Keyboard Navigation

Global Keys

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

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

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

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
3:35About platform specific code
3:35About platform specific code
3:35About platform specific code
7:56What is left to be done on the platform layer
7:56What is left to be done on the platform layer
7:56What is left to be done on the platform layer
11:23Topic of the day revealed!
11:23Topic of the day revealed!
11:23Topic of the day revealed!
11:33Portability and cross platformness
11:33Portability and cross platformness
11:33Portability and cross platformness
13:37How people used to make code be cross platform (preprocessor #if #else)
13:37How people used to make code be cross platform (preprocessor #if #else)
13:37How people used to make code be cross platform (preprocessor #if #else)
18:48About preprocessor #if #else cross platforming
18:48About preprocessor #if #else cross platforming
18:48About preprocessor #if #else cross platforming
23:52Separate platform files (e.g. linux_handmade.cpp) as the entry point
23:52Separate platform files (e.g. linux_handmade.cpp) as the entry point
23:52Separate platform files (e.g. linux_handmade.cpp) as the entry point
31:41Unity builds, building your project as one translation unit
31:41Unity builds, building your project as one translation unit
31:41Unity builds, building your project as one translation unit
34:08Virtualising the OS to the game (architecture style 1)
34:08Virtualising the OS to the game (architecture style 1)
34:08Virtualising the OS to the game (architecture style 1)
34:23Example implementation for virtualising a window wrapper
34:23Example implementation for virtualising a window wrapper
34:23Example implementation for virtualising a window wrapper
42:54Reasons why perhaps not to use style 1
42:54Reasons why perhaps not to use style 1
42:54Reasons why perhaps not to use style 1
44:31Game as a service to the OS (architecture style 2)
44:31Game as a service to the OS (architecture style 2)
44:31Game as a service to the OS (architecture style 2)
47:15Implementing style 2
47:15Implementing style 2
47:15Implementing style 2
51:30GameUpdateAndRender() - moving RenderWeirdGradient to game code
51:30GameUpdateAndRender() - moving RenderWeirdGradient to game code
51:30GameUpdateAndRender() - moving RenderWeirdGradient to game code
1:01:00Q&A
🗩
1:01:00Q&A
🗩
1:01:00Q&A
🗩
1:01:23Seems 'unsafe' to include the platform independent code after including the platform specific headers
1:01:23Seems 'unsafe' to include the platform independent code after including the platform specific headers
1:01:23Seems 'unsafe' to include the platform independent code after including the platform specific headers
1:03:22Would 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:22Would 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:22Would 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:12You said last stream you didn't really like showing the FPS because you didn't find it useful. Can you explain that?
1:05:12You said last stream you didn't really like showing the FPS because you didn't find it useful. Can you explain that?
1:05:12You said last stream you didn't really like showing the FPS because you didn't find it useful. Can you explain that?
1:09:48On the scale from genius to totally awesome how can you remember all this?
1:09:48On the scale from genius to totally awesome how can you remember all this?
1:09:48On the scale from genius to totally awesome how can you remember all this?
1:12:21Do we currently have a hidden platform dependancy inside the bitmap memory or is BGRA something that happens on the other platforms too?
1:12:21Do we currently have a hidden platform dependancy inside the bitmap memory or is BGRA something that happens on the other platforms too?
1:12:21Do we currently have a hidden platform dependancy inside the bitmap memory or is BGRA something that happens on the other platforms too?
1:15:18It seems like your approach to handling platform dependant services is to prefer a many-to-one relationship instead of a one-to-many. [...]
1:15:18It seems like your approach to handling platform dependant services is to prefer a many-to-one relationship instead of a one-to-many. [...]
1:15:18It seems like your approach to handling platform dependant services is to prefer a many-to-one relationship instead of a one-to-many. [...]
1:17:53How did you setup Visual Studio to have that black theme?
1:17:53How did you setup Visual Studio to have that black theme?
1:17:53How did you setup Visual Studio to have that black theme?
1:18:22During coding is it easy to discipline yourself to make the code as clean and tidy as possible. [...] Do you think this is good in general or could it backfire?
1:18:22During coding is it easy to discipline yourself to make the code as clean and tidy as possible. [...] Do you think this is good in general or could it backfire?
1:18:22During coding is it easy to discipline yourself to make the code as clean and tidy as possible. [...] Do you think this is good in general or could it backfire?
1:22:20Would there be a way to build your platform dependant code in a separate entity in order to allow you to use it in the future?
1:22:20Would there be a way to build your platform dependant code in a separate entity in order to allow you to use it in the future?
1:22:20Would there be a way to build your platform dependant code in a separate entity in order to allow you to use it in the future?
1:23:11Will you be developing your own implementation of strings? (No)
1:23:11Will you be developing your own implementation of strings? (No)
1:23:11Will you be developing your own implementation of strings? (No)
1:23:52Does the unity build approach work with parallel compilation?
1:23:52Does the unity build approach work with parallel compilation?
1:23:52Does the unity build approach work with parallel compilation?
1:26:04Do you feel it is necessary to make a flowchart before coding, or do you go with the flow?
1:26:04Do you feel it is necessary to make a flowchart before coding, or do you go with the flow?
1:26:04Do you feel it is necessary to make a flowchart before coding, or do you go with the flow?
1:27:18Why the #define part for the header file (include guards)
1:27:18Why the #define part for the header file (include guards)
1:27:18Why the #define part for the header file (include guards)
1:29:09Why do you specify void in function definitions when they don't take arguments?
1:29:09Why do you specify void in function definitions when they don't take arguments?
1:29:09Why do you specify void in function definitions when they don't take arguments?
1:30:06Do you have a specific method for solving programming problems or do you just write things and solve them in place?
1:30:06Do you have a specific method for solving programming problems or do you just write things and solve them in place?
1:30:06Do you have a specific method for solving programming problems or do you just write things and solve them in place?
1:30:29Why are you forward declaring game layer functions in the header when you include the whole documentation?
1:30:29Why are you forward declaring game layer functions in the header when you include the whole documentation?
1:30:29Why are you forward declaring game layer functions in the header when you include the whole documentation?
1:31:17Do you think it is realistic for someone with awful math skills to be an efficient game developer?
1:31:17Do you think it is realistic for someone with awful math skills to be an efficient game developer?
1:31:17Do you think it is realistic for someone with awful math skills to be an efficient game developer?