Buon lavoro, il percorso è lungo.
Puoi incominciare con SDL (2D e accesso all'hardware), e OpenGL (3D, gestione rendering,, ecc...), oppure utilizzare le DirectX.
Poi ti servono le conoscenze matematiche adatte, per cui libri come 3D primer for Graphics and Game Development, le conoscenze di programmazione adatte, Un libro sul C++, ed uno sui Design Patterns, un libro sulle opengl, uno libro sulla reference delle opengl, oppure uno sulle directx, magari leggerti i trucchi del mestiere sui forum di game development, e poi un libro sulla modellazione 3d, un software di modellazione 3d, tanto esercizio, capacità artistica, creatività, innovazione.
Sapere come fare un gioco in linea generale, e come gestire l'importer l'esporter ecc...
Comincia con lo sviluppare l'engine 3D, che ti permetta di:
caricare i modelli,
caricare le mappe,
gestire le telecamere,
gestire i movimenti,
gestire le animazioni,
gestire tutto il multimedia,
permettere di utilizzare un motore fisico, come newton,
oppure di utilizzarne uno tu.
Gestire la IA,
e permettere l'utilizzo di un linguaggio di scripting come LUA, Python, Perl, o Ruby.


Questo secondo me è il minimo per un buon motore per un gioco.
Quando hai il motore, puoi dedicarti alle mappe e ai modelli ai personaggi alla storia, ecc...
Puoi fare un motore generale, cioè che ti permetta di fare anche altri giochi, oppure uno specifico per il tuo gioco.