Ігри колись писалися машинною мовою, оскільки вони мали екзотичне обладнання, для якого не було компілятора. В апаратному забезпеченні також бракувало функцій, які програмісти C сприймають як належне, наприклад, ефективну 16-бітну цілочисельну математику.
Як тільки ігри влаштувались на знайоме обладнання, компілятори C стали доступними і за короткий час усі ігри були написані на C.
Свого часу C ++ здавалося гарною ідеєю, і сьогодні більшість ігор - це C ++, але інженери зараз борються про повернення до C, і це може насправді статися. Мені б хотілося попрацювати над грою в C, і так би багато колег. У C ++ немає жодної функції, яка, на мою думку, покращує ігри.
Здавалося б, зараз, коли комп'ютери в 1000 разів швидше, ніж кілька років тому, мова високого рівня зменшить час розробки ($), зробивши C застарілим.
Цього не сталося, оскільки покупці ігор знають, що обладнання на 1000 разів краще, і хочуть торгувати своїми доларами за гру, яка виглядає і звучить на 1000 разів краще. Це вилучає слабкість із системи, яку споживає мова високого рівня.
Вимоги до продуктивності в іграх жорстокі. Новий графічний кадр повинен бути викладений за 33 мс (або 16 мс!) Безвідмовно. Все, що робить обладнання, повинно враховуватися, щоб цей бюджет можна було виконати. Будь-яка мова, яка вимикається і робить щось із апаратним забезпеченням, яке програміст не розуміє і не очікує, дуже важко буде виконати цей бюджет. Це автоматичний мінус проти чогось високого рівня.
Ігрові програмісти не лише працюють мовою низького рівня, але й уникають структури даних та алгоритми високого рівня. Зазвичай ігри не мають пов'язаних списків і рідко мають дерева. Існує рух до уникнення покажчиків, коли це можливо *. Будь-який алгоритм з більш ніж O (N) часом або O (1) простором, як правило, не знаходить широкого застосування.
* Якщо вказівник не викликає пропущення кешу, то навіщо витрачати 32 біти на його зберігання? Якщо вказівник викликає пропущення кеш-пам'яті, найкраще позбудьтесь цього пропуску кешу.