Spiele wurden früher in Maschinensprache geschrieben, weil es exotische Hardware gab, für die es keinen Compiler gab. Der Hardware fehlten auch Funktionen, die C-Programmierer für selbstverständlich halten, wie z. B. eine effiziente 16-Bit-Ganzzahl-Mathematik.
Sobald sich die Spiele mit vertrauter Hardware abgefunden hatten, wurden C-Compiler verfügbar und in kurzer Zeit wurden alle Spiele in C geschrieben.
C ++ schien auf einmal eine gute Idee zu sein, und die meisten Spiele sind heute C ++, aber die Ingenieure murmeln jetzt über eine Rückkehr zu C, und das könnte tatsächlich passieren. Ich würde gerne an einem Spiel in C arbeiten, und viele Kollegen auch. Es gibt keine neue Funktion in C ++, die meiner Meinung nach die Spiele verbessert.
Es scheint, dass Computer 1000-mal schneller sind als noch vor einigen Jahren. Eine Hochsprache würde die Entwicklungszeit ($) verkürzen und C obsolet machen.
Dies ist nicht geschehen, weil Spielekäufer wissen, dass die Hardware 1000x besser ist, und ihre Dollars für ein Spiel eintauschen möchten, das 1000x besser aussieht und sich so anhört. Dies beseitigt die Lücke aus dem System, die eine Hochsprache verbrauchen würde.
Leistungsanforderungen in Spielen sind brutal. Ein neuer Grafikrahmen muss unbedingt in weniger als 33 ms (oder 16 ms!) Gerendert werden. Alles, was die Hardware tut, muss berücksichtigt werden, damit dieses Budget eingehalten werden kann. Jede Sprache, die ausfällt und etwas mit der Hardware macht, die der Programmierer nicht versteht oder erwartet, wird es sehr schwer machen, dieses Budget zu erreichen. Dies ist ein automatisches Minus gegen alles Hohe.
Spielprogrammierer arbeiten nicht nur in einer einfachen Sprache, sondern meiden auch komplexe Datenstrukturen und Algorithmen. Spiele haben normalerweise keine verknüpften Listen und selten Bäume. Es gibt eine Tendenz, Zeiger zu vermeiden, wann immer dies möglich ist *. Jeder Algorithmus mit mehr als O (N) Zeit oder O (1) Raum findet in der Regel keine breite Anwendung.
* Wenn ein Zeiger keinen Cache-Fehler verursacht, warum dann 32 Bit ausgeben, um ihn zu speichern? Wenn ein Zeiger einen Cache-Fehler verursacht, sollten Sie diesen Cache-Fehler am besten beseitigen.