Os jogos foram escritos em linguagem de máquina, porque tinham hardware exótico para o qual não havia compilador. O hardware também não possuía recursos que os programadores C consideram garantidos, como matemática matemática eficiente de 16 bits.
Depois que os jogos se estabeleceram em hardware familiar, os compiladores C ficaram disponíveis e em pouco tempo todos os jogos foram escritos em C.
C ++ parecia uma boa idéia ao mesmo tempo, e a maioria dos jogos é C ++ hoje, mas os engenheiros estão agora resmungando sobre um retorno ao C, e isso pode realmente acontecer. Eu adoraria trabalhar em um jogo em C, assim como muitos colegas de trabalho. Não há nenhum recurso novo no C ++ que eu acho que melhore os jogos.
Parece que agora que os computadores são 1000x mais rápidos do que alguns anos atrás, uma linguagem de alto nível reduziria o tempo de desenvolvimento ($) tornando C obsoleto.
Isso não aconteceu porque os compradores de jogos sabem que o hardware é 1000x melhor e desejam trocar seus dólares por um jogo com aparência e som 1000x melhores. Isso remove a folga do sistema que um idioma de alto nível consumiria.
Os requisitos de desempenho nos jogos são brutais. Um novo quadro de gráficos deve ser renderizado em menos de 33ms (ou 16ms!) Sem falha. Tudo o que o hardware faz deve ser contabilizado, para que esse orçamento possa ser cumprido. Qualquer linguagem que apague e faça algo com o hardware que o programador não entende ou espera, tornará muito difícil cumprir esse orçamento. Este é um sinal de menos automático contra qualquer coisa de alto nível.
Os programadores de jogos não apenas trabalham em uma linguagem de baixo nível, mas também evitam estruturas e algoritmos de dados de alto nível. Os jogos normalmente não têm listas vinculadas e raramente têm árvores. Há um movimento para evitar ponteiros sempre que possível *. Qualquer algoritmo com mais de O (N) tempo ou O (1) espaço tende a não encontrar amplo uso.
* Se um ponteiro não causa falta de cache, por que gastar 32 bits para armazená-lo? Se um ponteiro causar falta de cache, é melhor se livrar dessa falta de cache.