Các trò chơi đã từng được viết bằng ngôn ngữ máy, bởi vì chúng có phần cứng kỳ lạ mà không có trình biên dịch. Phần cứng cũng thiếu các tính năng mà các lập trình viên C coi là hiển nhiên, chẳng hạn như toán học số nguyên 16 bit hiệu quả.
Khi các trò chơi ổn định trên phần cứng quen thuộc, trình biên dịch C đã có sẵn và trong một thời gian ngắn, tất cả các trò chơi được viết bằng C.
C ++ có vẻ như là một ý tưởng tốt tại một thời điểm, và hầu hết các trò chơi là C ++ ngày nay, nhưng các kỹ sư hiện đang lầm bầm về việc quay trở lại C, và điều đó thực sự có thể xảy ra. Tôi rất thích làm việc trong một trò chơi ở C, và nhiều đồng nghiệp cũng vậy. Không có tính năng mới nào đối với C ++ mà tôi nghĩ là cải thiện trò chơi.
Bây giờ có vẻ như máy tính nhanh hơn 1000 lần so với vài năm trước, một ngôn ngữ cấp cao sẽ giảm thời gian phát triển ($) khiến C trở nên lỗi thời.
Điều này đã không xảy ra vì người mua trò chơi biết rằng phần cứng tốt hơn 1000 lần và muốn đổi đô la của họ cho một trò chơi có vẻ ngoài và âm thanh tốt hơn 1000 lần. Điều này loại bỏ sự chậm chạp khỏi hệ thống mà một ngôn ngữ cấp cao sẽ tiêu thụ.
Yêu cầu về hiệu suất trong các trò chơi là tàn bạo. Một khung đồ họa mới phải được hiển thị dưới 33ms (hoặc 16ms!) Mà không thất bại. Tất cả mọi thứ phần cứng phải được tính toán, để ngân sách này có thể được đáp ứng. Bất kỳ ngôn ngữ nào bị tắt và làm một cái gì đó với phần cứng mà lập trình viên không hiểu hoặc mong đợi sẽ khiến cho việc đáp ứng ngân sách này trở nên rất khó khăn. Đây là một điểm trừ tự động chống lại bất cứ điều gì cấp cao.
Các lập trình viên trò chơi không chỉ làm việc trong một ngôn ngữ cấp thấp, mà họ còn tránh xa các cấu trúc dữ liệu và thuật toán cấp cao. Các trò chơi thường không có danh sách liên kết và hiếm khi có cây. Có một phong trào hướng tới việc tránh con trỏ bất cứ khi nào có thể *. Bất kỳ thuật toán nào có nhiều thời gian hơn O (N) hoặc không gian O (1) có xu hướng không được sử dụng rộng rãi.
* Nếu một con trỏ không gây ra lỗi nhớ cache, thì tại sao lại tốn 32 bit để lưu trữ? Nếu một con trỏ gây ra lỗi bộ nhớ cache, tốt nhất hãy loại bỏ lỗi bộ nhớ cache đó.