GNU GCC ใช้สำหรับเกม AAA หรือไม่


11

GNU GCC เป็นคอมไพเลอร์ทั่วไป แต่ดูเหมือนว่าไม่มีใครใช้มันสำหรับโครงการขนาดใหญ่เช่นเกม AAA สำหรับฉันมันใช้งานได้ดีไม่เคยมีปัญหากับมัน แต่ฉันสงสัยว่าทำไมเกม AAA ทั้งหมดจึงใช้คอมไพเลอร์ทางการค้าเช่น Intel Studio ทำไมมันถึงสำคัญ? GNU GCC ยังปรับโค้ดให้เหมาะสมสำหรับทุกระบบแทนที่จะเป็นเพียง Intel ดังนั้นทำไมพวกเขาจึงสนใจสิ่งต่าง ๆ เช่น Intel Studio


GCC เป็นคอมไพเลอร์ที่พบบ่อยมากก่อนที่จะ LLVM / เสียงดังกราวมารอบหรือพูดด้วยเสียงดังกราว "? gcc คุณหมายถึงเสียงดังกราว" ;)
Maik Semder

เสียงดังกราวทำอะไร? มันเป็นคอมไพเลอร์หรือไม่? ถ้าเป็นเช่นนั้นจะดีกว่า O_o
LiquidFeline

เสียงดังกราวเป็น ac / c ++ frontend สำหรับแพลตฟอร์มคอมไพเลอร์ที่เรียกว่า llvm ใช่มันดีกว่าในหลาย ๆ ด้าน สำหรับ starters จะแสดงข้อผิดพลาดที่แน่นอนในแมโครไม่ใช่เฉพาะบรรทัดที่เรียกว่าแมโคร มันทำให้ความรู้สึก intelli โง่ดูโง่มากขึ้นเพราะทำให้ง่ายต่อการเข้าถึงต้นไม้ AST โดยไม่จำเป็นต้องใช้โปรแกรมแยกวิเคราะห์พิเศษ รวบรวมรหัสบางส่วนรายการเป็นเวลานานจะดูที่มันมันคุ้มค่า :)
Maik Semder

คำตอบ:


9

คอมไพเลอร์ของ Intel เป็นเพียงคอมไพเลอร์ที่แตกต่างกัน GCC ++ และ VC ++ ผลิตรหัสคุณภาพการผลิตเช่นเดียวกับที่ ICC ของ Intel ทำ ความแตกต่างหลักอยู่ใน 4 พื้นที่สำคัญ:

เมื่อคุณพยายามที่จะบีบประสิทธิภาพออกมาเล็กน้อย (ส่วนใหญ่) ของซีพียู Intel สตูดิโอ AAA ก็เต็มใจที่จะจ่ายค่านั้น ดูที่นี่สำหรับเรื่องราวเล็ก ๆ น้อย ๆ ที่ดี ให้ความสนใจกับส่วนข้อเสียของเขาเช่นกันซึ่ง ICC ถูกกล่าวหาว่าทำงานน้อยกว่าดีในชุดคำสั่งของ Intel ที่ไม่ใช่ของแท้ (เช่นของ AMD)


10

แพลตฟอร์มที่ไม่ใช่พีซีหลายแห่งรวมถึงคอนโซลและอุปกรณ์พกพาใช้ GCC ที่แก้ไขแล้วเป็นคอมไพเลอร์หลัก / ตัวเดียว

บนพีซีนั้นผู้พัฒนาเกมส่วนใหญ่ใช้คอมไพเลอร์ของ Visual Studio ตัวเลือกคอมไพเลอร์โดยทั่วไปมีผลกระทบต่อความเร็วรันไทม์น้อยกว่าเมื่อเปรียบเทียบกับการออกแบบเครื่องยนต์และกราฟิกพวกเขาทั้งหมดจ่ายเงินให้กับ Visual Studio ต่อไปเนื่องจากคุณสมบัติที่ตั้งเป็น IDE นั้น GCC ค่อนข้างยากกว่าในการติดตั้งและเริ่มต้นใช้งาน และมันก็ไม่ได้ช่วยอะไรมากนักในการปรับปรุงเวลาและประสิทธิภาพในการทำซ้ำ ไม่มีเหตุผลเพียงพอที่จะใช้ GCC เมื่อเปรียบเทียบกับทางเลือกที่ทุกคนลงทุนไปแล้ว


ไม่ใช่ว่า GCC จะเริ่มยากขึ้นเพียงเล็กน้อย แต่ MinGW ต้องการการจัดส่งด้วย DLL หากแอปพลิเคชันของคุณถูกมัลติเธรด - GCC ใช้กลไกการยกเว้นที่แตกต่างจาก SEH ซึ่งทำให้ DLL จำเป็นบน Windows
Dietrich Epp

1
เพื่อยกตัวอย่าง Sony ได้ย้ายคอมไพเลอร์หลักของ PS3 จากคอมไพเลอร์ภายในไปยัง GCC เพราะถือว่าดีกว่า และไม่มีปัญหาเรื่อง AAA ที่วางจำหน่ายบน PS3
Kaganar

ข้อเสียคือ GCC เฉพาะแพลตฟอร์มเหล่านี้มักจะล้าสมัยอย่างรุนแรงโดยทั่วไปก่อน GPLv3 และด้วยเหตุนี้ pre-C ++ 11 และยังขาดการวินิจฉัยและการปฏิบัติงานล่าสุดจำนวนมาก : / การปฏิเสธ GCC ที่ใหม่กว่านี้โดยผู้ค้าหลายรายอาจเป็นอีกสาเหตุหนึ่งที่นักพัฒนาเกมจำนวนมากหลีกเลี่ยง GCC หากพวกเขาทำได้ พวกเขาอาจมีมุมมองที่ไม่เป็นธรรมเกี่ยวกับสถานะของมันจากประสบการณ์ที่ได้รับจากเครื่องมือผู้ขาย ดูการเปรียบเทียบ Clang ที่ใช้บ่อยในแพลตฟอร์มของ Apple ที่ Clang 3.1 หรือเปรียบเทียบกับ GCC 4.2 (ฉันเป็นแฟนของเสียงดังกราว แต่การเปรียบเทียบโดยทั่วไปไม่ยุติธรรม)
Sean Middleditch

4

ใช่มันสามารถใช้สำหรับเกม AA

เหตุผลเกือบทุกเกม AAA ออกมี (ถ้าไม่ทั้งหมด) ใช้คอมไพเลอร์เชิงพาณิชย์คือความจริงที่ว่าผลิตภัณฑ์เชิงพาณิชย์มักจะมีการสนับสนุนและคุณสามารถบ่นหรือขอความช่วยเหลือ 24/7 หรือเพียงแค่ ASAP เมื่อจัดการกับปัญหาใด ๆ ที่คุณอาจมีและ AAA อุตสาหกรรมครั้งหมายถึงเงิน ทีมใหญ่และ บริษัท ต่าง ๆ โดยเฉพาะอย่างยิ่งหลังไม่ต้องการพึ่งพาชุมชนเมื่อเงินเป็นเดิมพัน มันจะดีกว่าที่จะลงทุนในการสนับสนุนตามสัญญา

ในทางกลับกันเอ็นจิ้นพึ่งพา SDK หาก SDK ไม่รองรับคอมไพเลอร์ก็หมายความว่าคุณเป็นเจ้าของด้วยตัวเองและไม่มีผลกำไรในการแก้ไขปัญหา

ในที่สุดการเพิ่มประสิทธิภาพ หากคุณรู้ว่าผู้เล่นจำนวนมากใช้ Intel ความต้องการที่คุณต้องการมอบให้กับเกมของพวกเขา


1
fyi บริษัท ของเรามีการตอบสนองหนึ่งพันล้านทุก ๆ ปีสามารถสนับสนุน gcc และเครื่องมือ gnu dev อื่น ๆ ในระดับพรีเมี่ยม
lzap
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.