ในอุตสาหกรรมเกมผมหมายถึง Quake, CoD เป็นต้น
ในอุตสาหกรรมเกมผมหมายถึง Quake, CoD เป็นต้น
คำตอบ:
เรียกได้ว่า C ++ นั้นถูกแทนที่จริงๆ - ไม่เพียงแค่ C # เท่านั้น แต่ยังมีภาษาอื่น ๆ แต่ถ้าคุณถามมันจะโดยแทนที่สมบูรณ์ - แล้วคำตอบคือแน่นอนไม่มี
นั่นเป็นเพราะ C ++ นั้นถูกใช้ในความจุสองแบบ ครั้งแรกในการสร้างเกมเครื่องยนต์ : ส่วนประกอบระดับต่ำว่าทรัพยากรโหลดรูปหลายเหลี่ยมผลักดันไปยังหมายเลขของหน้าจอและกระทืบในการจำลองฟิสิกส์ ประการที่สองเพื่อรหัสตรรกะของเกม: กฎที่เกิดขึ้นจริงที่ทำให้การเล่นเกม
ความจุที่สองนี้ไม่ต้องการจุดแข็งของ C ++ (เช่นการควบคุมรายละเอียดระดับต่ำอย่างสมบูรณ์) แต่ได้รับผลกระทบจากจุดอ่อน (เช่นการจัดการหน่วยความจำที่เขียนด้วยมือแบบบั๊ก) และในความสามารถที่สองนี้ C ++ จะถูกแทนที่ด้วยภาษาสคริปต์ที่แตกต่างกัน นักพัฒนาจำนวนมากใช้ Lua บางคนใช้ Python แต่ถ้าแพลตฟอร์ม CLI พร้อมใช้งานในรูปแบบของ. NET หรือ Mono ก็จะแสดงโฮสต์ผู้เขียนสคริปต์ที่ดี แพลตฟอร์มเหล่านี้ค่อนข้างรวดเร็วเชื่อถือได้นำเสนอภาษาที่รู้จักกันอย่างกว้างขวาง (C #) และห้องสมุดระดับฐานที่ครอบคลุม อย่าลืมเครื่องมือ: MS Visual studio และ SharpDevelop / MonoDevelop อาจไม่ใช่ IDE ที่ดีที่สุดในโลก แต่มันก็ค่อนข้างดี
ดังที่กล่าวมาเกมเอ็นจิ้นจะไม่ถูกเขียนใน C # (หรือ Lua หรือ Python สำหรับเรื่องนั้น) ทำไม? เพราะมันไม่เร็วพอ
ขัดกับความเชื่อที่นิยมมากเดียวตีประสิทธิภาพที่ใหญ่ที่สุดในวันนี้คือเนื่องจากความล่าช้าของหน่วยความจำ ซึ่งหมายความว่าการเข้าถึงหน่วยความจำเป็นเรื่องจริงจัง และภาษาที่มีการจัดการไม่อนุญาตให้ผู้ใช้ควบคุมการเข้าถึงหน่วยความจำ - นั่นเป็นเหตุผลที่พวกเขา "จัดการ" ในครั้งแรก ดังนั้นภาษาที่ไม่มีการจัดการจะอนุญาตให้เขียนเอ็นจินเกมที่รวดเร็วมาก ที่จริงแล้วเครื่องยนต์ "C #" ใหญ่ทั้งหมดที่ฉันนึกถึง - XNA, MOGRE, Unity - ขึ้นอยู่กับรหัส C ++ ดั้งเดิม แต่อนุญาตให้เขียนตรรกะของเกมใน C #
ในการสรุป : C # จะถูกใช้แทน C ++ หรือภาษาอื่น ๆ แต่จะไม่แทนที่ C ++ อย่างน้อยก็จนกว่าจะมีคนคิดค้นหน่วยความจำเข้าถึงได้ทันทีที่ไม่มีความหน่วงแฝง
การเลือกภาษาขึ้นอยู่กับแพลตฟอร์มเป็นอย่างมาก ตอนนี้ดูเหมือนว่าไม่น่าเป็นไปได้ที่จะมีสิ่งใดนอกจากแพลตฟอร์มของ Microsoft ที่จะต้องใช้. NET ในการดำเนินการ
ภูมิปัญญาดั้งเดิมจะบอกว่าเป็นแพลตฟอร์มที่มีขนาดเล็กจะต้องใกล้เคียงกับโลหะที่จะ performant แต่ในมืออื่น ๆ , แพลตฟอร์มการจัดการมีความปลอดภัยมากขึ้น นั่นอาจเป็นเหตุผลที่ Windows Phone 7 บังคับให้คุณใช้. NET
มันจะน่าสนใจอย่างแน่นอนหาก Xbox ใหม่ต้องการแพลตฟอร์มที่มีการจัดการ หากฮาร์ดแวร์ของโทรศัพท์สามารถจัดการได้ (และเป็นเช่นนั้น) ฉันจะเห็นพวกเขาใช้มันบนคอนโซลขนาดเต็ม มันจะกระตุ้นระบบนิเวศของคอนโซลสักหน่อยเพราะมันยากที่จะเขียนเกมข้ามแพลตฟอร์มโดยไม่ต้องเขียนโค้ดเกมของคุณทั้งหมดในภาษาสคริปต์ หากเป็นเช่นนั้น C # จะไม่แทนที่ C ++ แต่มันจะไปด้วยกัน
ตอนนี้คุณสามารถใช้ Mono เป็นสคริปต์แบ็คเอนด์ (คล้ายกับ Unity ทำ) แต่ฉันคิดว่าผู้ผลิตเครื่องยนต์ส่วนใหญ่ต้องการที่จะม้วนตัวเองหรือใช้อะไรที่กะทัดรัดกว่าเช่น Lua หรือ Python มากกว่า C #
ไม่ว่าจะด้วยวิธีใดมันเป็นเรื่องของเครื่องมือที่เหมาะสมสำหรับงานที่เหมาะสม คุณควรเรียนรู้ทั้งสองภาษาจริง ๆ เนื่องจาก C # ทำให้การทำบางสิ่งง่ายขึ้น (การพัฒนาเครื่องมือการพัฒนาเซิร์ฟเวอร์เป็นต้น) และคุณไม่สามารถใช้อะไรเลยนอกจาก C ++ ในบางกรณี
มันไม่น่าเป็นไปได้ C ++ มีประโยชน์ในระดับต่ำเพื่อให้นักพัฒนาสามารถปรับแต่งรายละเอียดที่เล็กที่สุดเพื่อให้ได้ประสิทธิภาพที่ดีที่สุด
ด้วย C # และ. NET คุณมีการรวบรวมขยะซึ่งมีประโยชน์มาก แต่เมื่อทำงานกับแพลตฟอร์มที่มีหน่วยความจำ จำกัด และทรัพยากร (คอนโซลพกพาและคอนโซลที่ใช้ในบ้าน) คุณจำเป็นต้องควบคุมหน่วยความจำให้มากที่สุดเท่าที่จะทำได้ ของทรัพยากร การอนุญาตให้ภาษาที่มีการจัดการจัดสรรและเพิ่มหน่วยความจำสำหรับคุณน่าจะทำให้เกิดปัญหามากมาย
ความเร็วก็เป็นปัญหาเช่นกัน (แม้ว่าอาจน้อยกว่านั้น) เมื่อเวลาผ่านไปฉันแน่ใจว่าภาษาที่มีการจัดการสามารถทำการเปรียบเทียบกับคอมไพเลอร์ C ++ ได้
โดยรวมแล้วจากประสบการณ์ของฉันผู้พัฒนาเกมมักจะควบคุมความประหลาดเมื่อมันมาถึงหน่วยความจำเวลา CPU และทรัพยากร (เพื่อบีบประสิทธิภาพให้มากที่สุดเท่าที่จะทำได้) ซึ่งเป็นสาเหตุที่ภาษา C / C ++ เป็นภาษาที่ใช้เป็นหลัก
ไม่ทั้งนี้ขึ้นอยู่กับ. NET ที่บ่งบอกถึงการเขียนซ้ำครั้งใหญ่สำหรับแพลตฟอร์มที่ไม่มี Framework เช่น PS3 และข้อเสียของประสิทธิภาพอาจเป็นที่ยอมรับได้อย่างสมบูรณ์แบบบนพีซีหรือสำหรับเกม Live Arcade แต่เกมที่มีขนาดใหญ่กว่านั้น ประสิทธิภาพการทำงานจากคอนโซลของพวกเขาเพื่อให้ทำงานได้เร็วพอ ยิ่งไปกว่านั้นมีฐานรหัสขนาดใหญ่ใน C ++ ที่ไม่มีใครสามารถอัพเกรดได้แม้ว่าพวกเขาต้องการ C ++ อยู่ในอุตสาหกรรมเกมและจะยังคงอยู่ต่อไปอีกนาน
ในช่วงเวลาที่คอมพิวเตอร์มีพลังงานน้อยทุกอย่างที่จำเป็นต้องตั้งโปรแกรมใน C หรือ C ++ เพียงเพราะภาษาที่รวบรวมขยะใช้การควบคุมหน่วยความจำออกไปจากโปรแกรมเมอร์ดังนั้นประสิทธิภาพอาจลดลง
ทุกวันนี้คอมพิวเตอร์เร็วขึ้น แต่เมื่อ Knuth พูดและทำให้สั้นลงการเพิ่มประสิทธิภาพอาจเป็นสิ่งที่ไม่ดี:
เห็นได้ชัดว่าจำเป็นต้องปรับฟังก์ชั่นหลักระดับล่างให้เหมาะสมเพราะการคำนวณเรขาคณิต 3 มิติ, ฟิสิกส์, การชน, การให้แสงสามารถขยายตัวโปรเซสเซอร์ที่ดีที่สุดได้อย่างรวดเร็ว คุณสามารถบอกได้อย่างง่ายดายว่าคุณภาพของภาพที่เพิ่มขึ้นบนเครื่องนั้นแทบจะทำให้ประสิทธิภาพลดลงอย่างมาก
ขณะนี้มีฟังก์ชั่นอื่น ๆ เช่นสถานะเกม AI เสียงอินพุตเครือข่ายซึ่งยังคงมีความสำคัญในเกม แต่แทบจะไม่ใช้ทรัพยากรคอมพิวเตอร์มากนัก ฟังก์ชั่นเหล่านั้นส่วนใหญ่แล้วยังไม่ได้รับการปรับให้เหมาะสม นั่นคือเป้าหมายของภาษาสคริปต์และภาษาที่รวบรวมขยะ: คุณไม่ต้องคิดถึงการเชื่อมโยงหน่วยความจำและการจัดระเบียบแอปพลิเคชันของคุณเพราะรหัสที่คุณจะเขียนด้วยภาษาเหล่านี้หากคุณไม่ได้เข้ารหัสสิ่งที่ต่ำ คอขวด
ตัวอย่างที่มี 2 กรณี
ทั้งสองอยู่ที่ระยะ 500 กม.
ในทั้งสองกรณีมันจะทำให้กระบวนการขนถ่ายเร็วขึ้นหรือเร็วขึ้นเพื่อทำให้เวลาการขนส่งทั้งหมดเล็กลงรู้ว่าคุณไม่สามารถทำให้เรือหรือรถบรรทุกเคลื่อนที่เร็วขึ้นได้หรือไม่
คำตอบคือ: มันมีความสำคัญกับรถบรรทุก แต่ไม่ได้อยู่กับเรืออีกต่อไปเพราะคุณได้ทำสิ่งต่าง ๆ มากมายแล้วโดยการเคลื่อนย้ายหุ้นกับเรือ
ฉันไม่รู้ว่าคุณเข้าใจคำอุปมานี้หรือไม่ แต่อาจทำให้คุณจินตนาการถึงปัญหาทางคณิตศาสตร์ซึ่งสำคัญกว่าการเข้าใจคำตอบ
ภาษาสคริปต์ช่วยให้การสร้างเกมเร็วขึ้นหากคุณมีโปรแกรมเอ็นจิ้นใน C / C ++ แล้ว: เอ็นจิ้น 3 มิติแก้ปัญหาระดับต่ำตอนนี้คุณต้องสร้างเกมด้วยสคริปต์ของคุณ
แต่โปรดจำไว้ว่าคุณจะไม่สามารถแทนที่ภาษาที่รวบรวมในระดับต่ำได้อย่างแน่นอน ภาษาที่รวบรวมและคงรูปเป็นส่วนสำคัญของประสิทธิภาพและคุณไม่สามารถแยกแยะออกได้ไม่ว่าจะเป็นเคอร์เนลเอ็นจิ้น 3 มิติหรือไดรเวอร์การ์ดแสดงผล
แต่แน่นอนว่าถ้าเกมของคุณมีกราฟิกที่เรียบง่ายและไม่ต้องใช้การคำนวณเวกเตอร์มากมายคุณสามารถมุ่งเน้นไปที่การเล่นเกมและลืมเกี่ยวกับการปรับให้เหมาะสมเพราะในกรณีนี้คุณจะไม่ต้องจัดการกับการเพิ่มประสิทธิภาพเนื่องจากเครื่องของคุณรวดเร็ว สำหรับการที่
ยกเว้นถ้าคุณวางแผนที่จะพอร์ต ir บน DS แต่ฉันจะหยุดตรงนั้น
ดูสิฉันรู้ว่านี่เป็นคำโผงผาง แต่ฉันไม่ได้แยกแค่ขน ฉันรู้สึกว่าโปรแกรมเมอร์ส่วนใหญ่ไม่ได้รวบรวมมันเข้าด้วยกัน ภาษานั้นไม่เกี่ยวข้องกับความเร็ว / ประสิทธิภาพการทำงาน มันเป็นคอมไพเลอร์ / กรอบ คุณสามารถโต้แย้ง gcc กับ cl (microsoft compiler pre 2010) หรือ msbuild (คอมไพเลอร์ c ++ ปัจจุบันสำหรับปี 2010) ทุกครั้งที่คอมไพเลอร์เหล่านี้ดีขึ้นดังนั้นคุณต้องเปรียบเทียบมันกับเวอร์ชั่นก่อน ๆ ฉันประทับใจมากกับ. net และทำงานได้ดี แต่ถึงแม้ว่ามันจะดีกว่าเล็กน้อยฉันก็ไม่เห็นว่ามันเข้ามามีเหตุผลประการหนึ่ง: การพกพา
เกม AAA ต้องการเป็น Windows, Linux, Mac, XBox, PS3, Nintendo และอื่น ๆ