Game pernah ditulis dalam bahasa mesin, karena mereka memiliki perangkat keras eksotis yang tidak ada kompilernya. Perangkat keras juga tidak memiliki fitur yang diterima oleh programmer C, seperti matematika integer 16-bit yang efisien.
Setelah game diselesaikan pada perangkat yang dikenal, kompiler C menjadi tersedia dan dalam waktu singkat semua game ditulis dalam C.
C ++ sepertinya ide yang bagus pada satu waktu, dan sebagian besar game adalah C ++ hari ini, tetapi insinyur sekarang bergumam tentang kembali ke C, dan itu mungkin benar-benar terjadi. Saya ingin sekali mengerjakan game di C, dan begitu juga banyak rekan kerja. Tidak ada fitur baru untuk C ++ yang saya pikir meningkatkan permainan.
Tampaknya sekarang bahwa komputer 1000x lebih cepat dari beberapa tahun yang lalu, bahasa tingkat tinggi akan mengurangi waktu pengembangan ($) membuat C usang.
Ini belum terjadi karena pembeli game tahu bahwa perangkat keras 1000x lebih baik, dan ingin menukar dolar mereka dengan game yang terlihat dan terdengar 1000x lebih baik. Ini menghilangkan slack dari sistem yang akan dikonsumsi oleh bahasa tingkat tinggi.
Persyaratan kinerja dalam gim ini brutal. Bingkai gambar baru harus dirender di bawah 33ms (atau 16ms!) Tanpa gagal. Segala yang dilakukan perangkat keras harus dipertanggungjawabkan, sehingga anggaran ini dapat dipenuhi. Bahasa apa pun yang berbunyi dan melakukan sesuatu dengan perangkat keras yang tidak dipahami atau diharapkan programmer akan membuatnya sangat sulit untuk memenuhi anggaran ini. Ini adalah minus otomatis terhadap tingkat tinggi apa pun.
Pemrogram game tidak hanya bekerja dalam bahasa tingkat rendah, tetapi mereka juga menghindari struktur data dan algoritma tingkat tinggi. Permainan biasanya tidak memiliki daftar yang ditautkan dan jarang memiliki pohon. Ada gerakan ke arah menghindari petunjuk bila memungkinkan *. Algoritma apa pun dengan lebih dari O (N) waktu atau O (1) ruang cenderung tidak menemukan penggunaan luas.
* Jika pointer tidak menyebabkan cache hilang, lalu mengapa menghabiskan 32 bit untuk menyimpannya? Jika sebuah pointer tidak menyebabkan cache hilang, sebaiknya singkirkan cache cache tersebut.