Eu acho que uma das coisas mais importantes que você pode fazer é escolher um jogo que você goste de jogar. Isso ajudará a mantê-lo interessado e a familiarizar-se com a forma como o código se traduz na perspectiva dos jogadores.
Depois de escolher esse jogo, independentemente do tamanho dele, você não precisa tentar descobrir como todas as linhas de código funcionam. Escolha um pedaço e veja isso. Por exemplo, tente descobrir como os dados do player são armazenados ou como um item de menu é desenhado, etc.
A próxima coisa que você pode fazer, que acompanha o meu bit anterior, é tentar mudar alguma coisa. Não é algo enorme (a princípio), apenas algo simples e perceptível no jogo. Mesmo algo tão simples quanto o texto em um botão de um menu ou a adição de um item de menu ou a alteração dos cálculos de danos. Talvez você pense que eles deveriam ter feito algo diferente, tente mudar por conta própria.
Quando me interessei em desenvolver jogos, eu gostava muito de RPGs 2D online. Então, eu encontrei a fonte de uma online e comecei a construir nela. Adicionando meus próprios recursos e aprimorando coisas, corrigindo bugs, etc. Isso ocorreu no VB6 há alguns anos e agora estou usando C # e XNA e escrevendo meu próprio jogo do zero. Porque eu gostei dos jogos, isso me motivou a querer trabalhar nele, para torná-lo melhor. Coincidentemente, foi também assim que aprendi muitas técnicas de programação, depuração e solução de problemas que uso hoje em meu trabalho diário não relacionado a jogos.
Também é muito útil se o jogo tiver uma comunidade de modders que você pode fazer perguntas e obter ajuda e exemplos. Mas, novamente, mesmo que isso não exista, você já está aqui e estamos prontos para ajudar.