Gry były kiedyś pisane w języku maszynowym, ponieważ miały egzotyczny sprzęt, dla którego nie było kompilatora. Sprzętowi brakowało również funkcji, które programiści C biorą za pewnik, takich jak wydajna matematyka na 16-bitowych liczbach całkowitych.
Gdy gry osiadły na znanym sprzęcie, kompilatory C stały się dostępne iw krótkim czasie wszystkie gry zostały napisane w C.
C ++ wydawało się kiedyś dobrym pomysłem, a większość gier jest dzisiaj C ++, ale inżynierowie mamroczą o powrocie do C, a to może się zdarzyć. Chciałbym pracować nad grą w C, podobnie jak wielu współpracowników. W C ++ nie ma żadnej nowej funkcji, która moim zdaniem poprawia gry.
Wydawałoby się teraz, że komputery są 1000 razy szybsze niż kilka lat temu, język wysokiego poziomu skróciłby czas programowania ($), czyniąc C przestarzałym.
Tak się nie stało, ponieważ kupujący gry wiedzą, że sprzęt jest 1000 razy lepszy, i chcą wymienić swoje pieniądze na grę, która wygląda i brzmi 1000 razy lepiej. Usuwa to z systemu luz, który zużywałby język wysokiego poziomu.
Wymagania dotyczące wydajności w grach są brutalne. Nowa ramka grafiki musi zostać zrenderowana w czasie poniżej 33ms (lub 16ms!). Należy uwzględnić wszystko, co robi sprzęt, aby ten budżet mógł zostać zrealizowany. Każdy język, który zadziała i robi coś ze sprzętem, którego programista nie rozumie lub nie spodziewa się, bardzo utrudni realizację tego budżetu. Jest to automatyczny minus w stosunku do czegokolwiek wysokiego poziomu.
Programiści gier nie tylko pracują w języku niskiego poziomu, ale także unikają struktur danych i algorytmów wysokiego poziomu. Gry zazwyczaj nie mają połączonych list i rzadko mają drzewa. W miarę możliwości występuje ruch w kierunku unikania wskaźników *. Każdy algorytm z czasem większym niż O (N) lub przestrzenią O (1) zwykle nie znajduje szerokiego zastosowania.
* Jeśli wskaźnik nie powoduje braku pamięci podręcznej, to po co wydawać 32 bity, aby go zapisać? Jeśli wskaźnik powoduje brak pamięci podręcznej, najlepiej się go pozbyć.