Como já disseram, estude lógica, fique bom e tão importante quanto, é estudar estruturas de dados e depois algorítimos (b-tree, bubble sort e por ai vai)
Conhecer bem lógica, te ajuda a pensar melhor em como resolver o problema, estruturas, fará você otimizar mais o armazenamento de dados (seja em memória ou em disco) e algorítimos, fará você fazer códigos mais performáticos.
É um caminho longo que não tem fim
Sobre a linguagem, C é mais recomendável, porque não tem muita das facilidades que o java te fornece (tipo ordenar arrays com um simples "Arrays.sort(array)" vai te forçar a fazer as coisas para aprender.
Não quer usar C, vai de GOLang ou Rust, também são boas escolhas (são linguagens de alto nível, fortemente tipadas que herdam alguns conceitos de C)
Sobre desenvolvimento de jogos, aprenda primeiro esses conceitos básicos, depois você vê. Programação pra jogos depende muito de você conseguir integrar com códigos de terceiros e para isso, você tem que entender alguns conceitos básicos pra usar... sem isso, tudo fica difícil, traumático...