Una volta i giochi venivano scritti in linguaggio macchina, perché avevano hardware esotico per il quale non esisteva un compilatore. L'hardware mancava anche di funzionalità che i programmatori C danno per scontate, come la matematica integer efficiente a 16 bit.
Una volta che i giochi si stabilirono su hardware familiare, i compilatori C diventarono disponibili e in breve tempo tutti i giochi furono scritti in C.
Il C ++ sembrava una buona idea in una volta, e la maggior parte dei giochi sono in C ++ oggi, ma gli ingegneri ora stanno borbottando sul ritorno al C, e questo potrebbe effettivamente accadere. Mi piacerebbe lavorare su un gioco in C, e così anche molti colleghi. Non ci sono nuove funzionalità in C ++ che penso migliorino i giochi.
Sembrerebbe che i computer siano 1000 volte più veloci rispetto a qualche anno fa, un linguaggio di alto livello ridurrebbe i tempi di sviluppo ($) rendendo C obsoleto.
Questo non è accaduto perché gli acquirenti di giochi sanno che l'hardware è 1000 volte migliore e vogliono scambiare i loro dollari con un gioco che sembra e sembra 1000 volte migliore. Ciò elimina dal sistema il gioco che un linguaggio di alto livello consumerebbe.
I requisiti di prestazione nei giochi sono brutali. Un nuovo fotogramma grafico deve essere eseguito senza errori in meno di 33 ms (o 16 ms!). Tutto ciò che fa l'hardware deve essere contabilizzato, in modo che questo budget possa essere soddisfatto. Qualsiasi lingua che si spegne e fa qualcosa con l'hardware che il programmatore non capisce o non si aspetta renderà molto difficile rispettare questo budget. Questo è un aspetto negativo automatico contro qualsiasi cosa di alto livello.
I programmatori di giochi non solo lavorano in un linguaggio di basso livello, ma evitano anche strutture e algoritmi di dati di alto livello. I giochi in genere non hanno elenchi collegati e raramente hanno alberi. C'è un movimento per evitare i puntatori quando possibile *. Qualsiasi algoritmo con più del tempo O (N) o spazio O (1) tende a non trovare largo uso.
* Se un puntatore non causa un errore nella cache, perché spendere 32 bit per memorizzarlo? Se un puntatore causa un errore nella cache, è meglio eliminare tale errore.