Stating the obvious, but the best way (imho the only way) to learn is to just start coding a game and finish it. Coding is exactly like math: reading theorems give you the big picture, but if you never actually solve a math problem with the theorems, your understanding will remain superficial.
Einstein probably solved 1000's of math problems just like Bjarne Stroustrup (inventor of C++) probably wrote 1000's of programs. Neither would have accomplished what they did by just reading about theory and never applying it.
