[video output=day011 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="The Basics of Platform API Design" vod_platform=youtube id=_4vnV2Eng7M annotator=schme] [3:35][About platform specific code] [7:56][What is left to be done on the platform layer] [11:23][Topic of the day revealed!] [11:33][Portability and cross platformness] [13:37][How people used to make code be cross platform (preprocessor #if #else)] [18:48][About preprocessor #if #else cross platforming] [23:52][Separate platform files (e.g. linux_handmade.cpp) as the entry point] [31:41][Unity builds, building your project as one translation unit] [34:08][Virtualising the OS to the game (architecture style 1)] [34:23][Example implementation for virtualising a window wrapper] [42:54][Reasons why perhaps not to use style 1] [44:31][Game as a service to the OS (architecture style 2)] [47:15][Implementing style 2] [51:30][GameUpdateAndRender() - moving RenderWeirdGradient to game code] [1:01:00][Q&A][:speech] [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: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:09:48][On the scale from genius to totally awesome how can you remember all this?] [1:12:21][Do we currently have a hidden platform dependancy inside the bitmap memory or is BGRA something that happens on the other platforms too?] [1:15:18][It 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:53][How did you setup Visual Studio to have that black theme?] [1:18:22][During 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:20][Would 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:11][Will you be developing your own implementation of strings? (No)] [1:23:52][Does the unity build approach work with parallel compilation?] [1:26:04][Do you feel it is necessary to make a flowchart before coding, or do you go with the flow?] [1:27:18][Why the #define part for the header file (include guards)] [1:29:09][Why do you specify void in function definitions when they don't take arguments?] [1:30:06][Do you have a specific method for solving programming problems or do you just write things and solve them in place?] [1:30:29][Why are you forward declaring game layer functions in the header when you include the whole documentation?] [1:31:17][Do you think it is realistic for someone with awful math skills to be an efficient game developer?] [/video]