GNU GCC có được sử dụng cho các trò chơi AAA không?


11

GNU GCC là một trình biên dịch rất phổ biến, nhưng có vẻ như hầu như không ai sử dụng nó cho các dự án lớn hơn như các trò chơi AAA. Đối với tôi, nó hoạt động tốt, không bao giờ có vấn đề với nó. Nhưng tôi tự hỏi tại sao tất cả các trò chơi AAA dường như sử dụng các trình biên dịch thương mại như Intel Studio? Tại sao nó quan trọng? GNU GCC cũng tối ưu hóa mã cho tất cả các hệ thống thay vì chỉ Intel, vậy tại sao họ lại bận tâm với những thứ như Intel Studio?


GCC một trình biên dịch rất phổ biến trước khi LLVM / Clang xuất hiện hoặc nói nó với tiếng kêu: "gcc? Ý bạn là tiếng kêu?" ;)
Maik

Tiếng kêu làm gì? Nó có phải là trình biên dịch không? Nếu vậy thì tốt hơn? O_o
LiquidFeline

Clang là giao diện ac / c ++ cho một nền tảng trình biên dịch gọi là llvm. Vâng, nó tốt hơn theo nhiều cách. Đối với người mới bắt đầu, nó hiển thị lỗi chính xác trong một macro, không chỉ dòng mà macro được gọi. Nó làm cho cảm giác intelli ngu ngốc trông thậm chí còn ngu ngốc hơn, vì nó giúp bạn dễ dàng truy cập vào cây AST, không cần thêm một trình phân tích cú pháp. Biên dịch mã một phần, danh sách dài, hãy xem nó, giá trị của nó :)
Maik

Câu trả lời:


9

Trình biên dịch của Intel chỉ là một trình biên dịch khác. GCC ++ và VC ++ tạo mã chất lượng sản xuất, giống như ICC của Intel. Sự khác biệt chính nằm ở 4 lĩnh vực chính:

  • a) Các tính năng được hỗ trợ (chủ yếu khác nhau trên các tính năng của C ++ 11)
  • b) Kích thước thực thi
  • c) Thời gian chạy
  • d) Thời gian biên dịch

Khi bạn đang cố gắng tận dụng mọi hiệu năng cuối cùng của (hầu hết) CPU Intel, các studio AAA sẵn sàng trả tiền cho điều đó và một số mùa xuân cho ICC. Xem ở đây cho một câu chuyện giai thoại tuyệt vời. Cũng chú ý đến phần nhược điểm của anh ấy, trong đó ICC bị cáo buộc chạy kém hơn so với CPU của bộ hướng dẫn Intel không chính hãng (ví dụ: AMD).


10

Nhiều nền tảng không phải là PC, bao gồm một số máy chơi game và thiết bị cầm tay, sử dụng GCC được sửa đổi làm trình biên dịch chính / duy nhất của chúng.

Trên PC, hầu hết các nhà phát triển trò chơi chỉ sử dụng trình biên dịch của Visual Studio. Sự lựa chọn trình biên dịch thường ít ảnh hưởng đến tốc độ thời gian chạy so với thiết kế và đồ họa động cơ, tất cả họ đều trả tiền cho Visual Studio do tính năng của nó được đặt là IDE, GCC tương đối khó cài đặt và bắt đầu hơn. và nó không làm được gì nhiều để cải thiện thời gian và năng suất lặp. Không có đủ lý do để sử dụng GCC so với các giải pháp thay thế mà mọi người đã đầu tư vào.


Không chỉ GCC khó khăn hơn khi bắt đầu, nhưng MinGW yêu cầu vận chuyển với DLL nếu ứng dụng của bạn đa luồng - GCC sử dụng cơ chế ngoại lệ khác với SEH khiến DLL cần thiết trên Windows.
Dietrich Epp

1
Để cung cấp một ví dụ, Sony đã chuyển trình biên dịch chính PS3 của họ từ trình biên dịch nội bộ sang GCC vì nó được coi là tốt hơn. Và không thiếu các tựa game AAA được phát hành trên PS3.
Kaganar

Nhược điểm là các GCC dành riêng cho nền tảng này thường lỗi thời, thường là tiền GPLv3 và do đó là tiền C ++ 11 và cũng thiếu rất nhiều công việc chẩn đoán và hiệu suất gần đây. : / Sự từ chối GCC mới hơn của nhiều nhà cung cấp có thể là một lý do khác khiến nhiều nhà phát triển trò chơi chỉ tránh GCC nếu họ có thể; họ có thể có một cái nhìn không công bằng về kinh nghiệm của nhà nước với các công cụ của nhà cung cấp. Nhìn vào các so sánh Clang thường xuyên trên các nền tảng của Apple trong đó Clang 3.1 hoặc hơn được so sánh với GCC 4.2. (Tôi là một người hâm mộ Clang, nhưng sự so sánh nói chung là không công bằng.)
Sean Middleditch

4

Vâng, nó có thể được sử dụng cho các trò chơi AA.

Lý do hầu hết mọi trò chơi AAA ngoài kia (nếu không phải tất cả) đều sử dụng trình biên dịch thương mại là vì các sản phẩm thương mại thường có hỗ trợ và bạn có thể khiếu nại hoặc nhận trợ giúp 24/7 hoặc chỉ ASAP khi xử lý bất kỳ vấn đề nào bạn có thể gặp phải và trong AAA công nghiệp, thời gian có nghĩa là tiền bạc. Các nhóm và công ty lớn, đặc biệt là sau này, không muốn dựa vào cộng đồng khi số tiền lớn đang bị đe dọa. Tốt hơn là đầu tư vào hỗ trợ bằng hợp đồng.

Mặt khác, các công cụ dựa trên SDK. Nếu SDK không hỗ trợ trình biên dịch, điều đó có nghĩa là bạn tự mình làm và không có lợi khi thực hiện giải pháp.

Cuối cùng là tối ưu hóa. Nếu bạn biết rằng rất nhiều người chơi sử dụng Intel, thì bạn muốn cung cấp trò chơi của mình một cách ân cần cho họ.


1
fyi công ty của chúng tôi với một tỷ quay vòng mỗi năm có thể goupport gcc và các công cụ gnu dev khác ở cấp cao.
lzap
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.