Handmade Hero»Forums»Code
2 posts
Beginner trying to follow the series
Edited by bill256 on Reason: Initial post
Hello guys . I'm new to programming . I have a hard time to understand MSDN . Is there anything that I can learn to help me follow the series. Thanks in advance
Simon Anciaux
1337 posts
Beginner trying to follow the series
Is there a particular thing that you have trouble with on MSDN ?

Knowing a bit of the C syntax and a little bit of programming will make it a lot easier in the beginning. So I would recommend to find some introduction to C.
183 posts / 1 project
Beginner trying to follow the series
The Handmade Hero tutorial shows experienced programmers (4-20 years experience) how to make advanced things from scratch without relying too much on third-party libraries. MSDN is more like a reference manual for those who already know it and just need a reminder.

This tutorial goes through the basic language concepts without overwhelming with the technical details.
https://www.w3resource.com/c-programming/programming-in-c.php

CodeBlocks is not as fancy as Visual Studio, but it makes the transition to cross platform development easier by not being directed towards Microsoft only libraries. CodeBlocks also runs very fast even on a Raspberry Pi.
https://www.youtube.com/watch?v=q4zIPCmPlqI

* Compilation turns all function definitions (the actual code) in a source file into an object file, while types can only be exposed via headers.
* Including a header is like copy pasting its entire content to where its requested with types and function declarations (how to call them).
* Linking merges together the objects into a library that can be used as a bigger object file, or a program that can be executed by connecting the calls with the called functions. The most IDEs can handle this for you, but you must still understand the difference between a compilation error (not finding the definition from headers) and linker errors (the function was not linked with the program).

Maybe a game of Pong in C (or C-style C++) to get started with flicker free rendering and handling the computer's inconsistent speed.

Writing AI can be difficult in the beginning, so you can first make games with different keys on the keyboard for different players. Then very basic AI walking around randomly or in a predetermined path. Don't worry about making a story unless your game is text driven from the terminal and can do it easily.

Then learn how to implement general 2D collisions using rigid bodies or position based physics. Easiest to just start with spheres for characters and axis aligned rectangles for obstacles.

Then you can move on to the UDP network protocol for online games. Maybe a top-down tank shooter. UDP is very simple if you can fit all the needed data into the same packet and just send position updates with a decent interval. Just have to resend data for important actions and filter out old packers, because UDP does not reorder nor resend packets automatically.
https://www.youtube.com/watch?v=lUyaV4haBUE

Then move on to 3D graphics and physics. "GPU gems" have older guides left showing the more fundamental shading techniques. Doesn't matter which API you use, because most tricks are just math and can be translated between Direct3D, OpenGL and Vulkan. You should learn as many tricks as possible to stand out from generic games that all look the same.
https://developer.nvidia.com/gpugems/gpugems/gpugems_pref01b.html

After that you might be in the right place to follow advanced 3D game tutorials like Handmade Hero. Just remember to enjoy the journey, because the beginning is the best part (before the games become too big to manage and collapse by their own complexity).