C ++“ นิ่ง” เป็นที่ต้องการในการพัฒนาเกมหรือไม่? [ปิด]


17

ฉันเป็นโปรแกรมเมอร์เกม 2D ภาษาการเขียนโปรแกรมบางภาษาที่ฉันเก่งคือ C, Java, C # ฉันยังรู้จัก Actionscript 2.0,3.0 และจาวาสคริปต์บางตัว ฉันสนใจที่จะเรียนรู้การเขียนโปรแกรมเกม 3 มิติ จนถึงตอนนี้ฉันได้สะสมงานวิจัยโดย googling และอ่านฟอรัมและบทความการพัฒนาเกมที่แตกต่างกัน ฉันสังเกตว่าโปรแกรมเมอร์ส่วนใหญ่มักจะชอบ C ++ นอกจากนี้ในหลักสูตรการสอนการเขียนโปรแกรมเกมออนไลน์ฉันสังเกตเห็นว่าพวกเขาชอบสอน C ++ และ Visual C ++ เป็นหลักสูตรเริ่มต้น เหตุผลที่ฉันถามคำถามนี้เพราะฉันต้องการทราบความแตกต่างของ "ความแข็งแกร่ง" ของ C ++, C # และ Java สำหรับการเขียนโปรแกรมเกม 3 มิติ

รวมถึงลิงก์ไปยังบทความการเขียนโปรแกรมเกม 3 มิติที่ดีสำหรับโปรแกรมเมอร์เกม 2d แล้ว

PS: IMHO ฉันก็พบว่า C ++ นั้นเป็นความลับ


ฉันยังได้รับที่มาก ดังนั้นจึงถามคำถามในชุมชนว่าทักษะใดที่โปรแกรมเมอร์เกมมืออาชีพควรมี มีคำตอบที่ดีในการใช้ภาษา C ++ เป็นภาษาที่ดีกว่าสำหรับการพัฒนาเกม ตรวจสอบ .. gamedev.stackexchange.com/questions/5552/…
GamDroid

@GamDroid: ฉันไม่สนใจที่จะรู้ว่าสิ่งที่ทำให้โปรแกรมเมอร์เกม 2D มืออาชีพ ฉันสนใจที่จะรู้เกี่ยวกับ Visual C ++ และทำไมมันถึงพูดถึง
พระนารายณ์

2
Btw: Visual C ++? ไม่ใช่แค่ C ++ ธรรมดาเหรอ?
speeder

ตัวแก้ไข Visual C ++ นั้นยอดเยี่ยม แต่ภาษา Visual C ++ (นั่นคือ: C ++ พร้อม Win32 GUI API และเนื้อหาแบบนั้นทั้งที่มี MS Visual C ++ หรือตัวสร้าง Borland C ++) ค่อนข้างสับสนและไม่ควรใช้กับเกม ป่องและการใช้ GDI นั้นช้ากว่าการใช้คำสั่ง SDL เพื่อควบคุมหน้าต่าง)
speeder

1
@Vish ขอโทษแล้วอย่าลังเลที่จะแก้ไขให้แม่นยำยิ่งขึ้นโดยคำนึงถึงความคิดเห็นในตอนนี้ หากคุณหมายถึงการเขียนโปรแกรม Win32 มีความสับสนให้พูดเช่นนั้น
Tetrad

คำตอบ:


30

ใช่ C ++ เป็นภาษาที่ใช้บ่อยที่สุด (แม้ว่าบางคนยังคงใช้ C)

มีเหตุผลมากมายสำหรับเรื่องนี้ แรงผลักดันที่แท้จริงคือหนึ่ง - เป็นเพียงภาษาที่ใช้มานานหลายปีแล้วมีเทคโนโลยีจำนวนมากอยู่แล้วและผู้คนพอใจกับมันดังนั้นการเปลี่ยนแปลงจะไม่เกิดขึ้นข้ามคืน

จากนั้นก็มีปัญหาของการควบคุม นักพัฒนาเกมเป็นคนที่คลั่งไคล้การควบคุมและเราอยากรู้ทุกอย่างที่เกิดขึ้นในรหัสของเรา C ++ ให้การควบคุมนั้นแก่เรา C # และ Java (เลือกสองทางเลือกที่คุณพูดถึง) ควบคุมได้ หลายวิธีที่อาจเป็นสิ่งที่ดี แต่ตัวเขียนเกมไม่ชอบ :)

ในที่สุดก็มีปัญหาการปฏิบัติที่ง่ายที่ SDKs สำหรับแพลตฟอร์มต่างๆเป็นศูนย์กลาง C ++ มาก การใช้ภาษาอื่นอย่างหลีกเลี่ยงไม่ได้เกี่ยวข้องกับการเขียน wrappers, การคอมไพล์ข้ามไปยัง VMs และอาจ (ในกรณีของการพัฒนาคอนโซล) มันไม่ได้รับอนุญาตจากผู้ถือแพลตฟอร์ม


2
ในอุตสาหกรรมการพัฒนาที่สำคัญใช่
JasonD

2
ในแง่ของภาษา C ++ เป็นหลัก - จะไม่ไปไหนทุกเวลาเร็ว ๆ นี้ ฉันขอแนะนำว่ามันจะไม่เจ็บที่จะคุ้นเคยกับภาษาสคริปต์ - Lua, Python และอื่น ๆ
JasonD

8
Visual C ++ ไม่ใช่ภาษา แต่เป็น IDE
SurvivalMachine

2
ใช่แม้ว่ามันอาจจะเป็น IDE ที่ใช้มากที่สุดดังนั้นมันจึงคุ้มค่าที่จะทำความรู้จักในเวลาเดียวกันกับการเรียนรู้ C ++
JasonD

1
@SurvivalMachine ดีในทางเทคนิคมันเป็นภาษาถิ่น (มีมากมายของนามสกุล MSVC ++ ที่ไม่อยู่ในมาตรฐาน)
bobobobo

4

C ++ ยังคงเป็นที่นิยมเนื่องจากคุณสามารถดูสิ่งพิมพ์ใด ๆ ในหัวข้อการพัฒนาเกม ขณะนี้ฉันใช้ C สำหรับการดำน้ำของฉันในการพัฒนาเกมด้วยเหตุผลง่ายๆที่รหัส C ++ ที่ฉันเขียนการใช้งานเทมเพลตที่ไม่เหมาะสมใช้ RAII อย่างกว้างขวางการจัดสรรหน่วยความจำแบบไดนามิกและสิ่งอื่น ๆ ที่คุณไม่ควรทำในโค้ดเกมจากสิ่งที่ฉันได้เห็น จนถึงตอนนี้

การเกาะติดกับ C บังคับให้ฉันดูเรียบง่ายและคิดถึงสิ่งที่ฉันทำ บางครั้งมันอาจยากขึ้นเมื่อคุณต้องนำบางสิ่งกลับมาใช้ใหม่ STL ให้คุณฟรี แต่ในทางกลับกันฉันรู้สึกว่าฉันเขียนโค้ดที่สะอาดกว่าและมีเวลาดีขึ้นในการดีบักสิ่งนั้น


3
RAII เป็นที่ยอมรับอย่างสมบูรณ์ (และควรได้รับการสนับสนุน) ในรหัสเกม
stonemetal

1
@stonemetal: RAII กระตุ้นให้เกิดความล่าช้าและการจัดสรรทรัพยากรที่คาดเดาไม่ได้ ควรได้รับการสนับสนุนหรือไม่นั้นขึ้นอยู่กับขนาดของเกมและแพลตฟอร์มเป้าหมายของคุณ (และทรัพยากรที่เป็นปัญหา); โดยเฉลี่ยฉันจะไม่สนับสนุน นอกจากนี้ RAII ใน C ++ มักใช้กับการจัดสรรฮีปเนื่องจาก OO ของ C ++ ทำให้การจัดสรรสแต็กยากเกินไป

3
RAII สนับสนุนการจัดสรรทรัพยากรที่ล่าช้าอย่างไร เมื่อฉันใช้ GLFW ฉันสร้างคลาสที่เรียกว่า GLFWRAII ซึ่งเรียกใช้ฟังก์ชัน init ของ GLFW ในตัวสร้างและเรียกรูทีนการล้างข้อมูลของ GLFW ในตัวทำลาย ฉันจัดสรรมันในสแต็กที่จุดเริ่มต้นของหลักมันไม่ล่าช้าอะไรหรือทำอะไรที่ไม่สามารถคาดเดาได้ การใช้งานอื่น ๆ อาจเป็นการจัดสรรที่จุดเริ่มต้นของระดับและล้างข้อมูลเมื่อสิ้นสุดระดับ การใช้เทคนิคอย่างไม่ดีไม่ได้ทำให้เป็นเทคนิคที่ไม่ดี ไม่มีอะไรเกี่ยวกับ RAII ที่แนะนำการจัดสรรทรัพยากรที่คาดเดาไม่ได้นอกจากการใช้งานที่ไม่ดี
หิน

คุณต้องหลีกเลี่ยงการใช้คุณสมบัติเหล่านั้น ฉันใช้ C ++ และฉันไม่เคยใช้เทมเพลตในรหัสของฉันและไม่มีวัตถุที่ส่งข้อยกเว้นในตัวสร้าง ใน C คุณยังสามารถใช้การจัดสรรแบบไดนามิก (และคุณต้องเป็นเกม 3D) นอกจากนี้คุณควรเขียนโค้ดในแบบที่คนอื่นเห็นว่าเข้าใจง่าย - โครงการใหญ่ในรหัส C บริสุทธิ์อาจเป็นนรกได้แม้ว่าคุณจะเข้าใจ หากคุณเรียนรู้ที่จะคิดเกี่ยวกับสิ่งที่คุณทำแม้ว่าภาษานั้นจะไม่บังคับคุณก็จะสามารถเขียนโค้ดสะอาดในภาษาอื่น ๆ ได้เช่นกัน
Pablo Ariel

1

ฉันไม่ใช่แฟนตัวยงของ C ++ และฉันชอบ Java อย่างไรก็ตามคนส่วนใหญ่ในอุตสาหกรรมใช้ภาษานี้และเป็นภาษาที่ง่ายที่สุดในการแปลงเป็นแพลตฟอร์มอื่น ๆ โดยไม่ต้องใช้ตัวห่อหุ้มและเครื่องเสมือน

อย่างไรก็ตามบางครั้งภาษาอื่น ๆ ก็ค่อนข้างดีสำหรับการพัฒนาเกม ฉันใช้ Java กับ LWJGL และมันยอดเยี่ยมมาก ดังนั้นถ้าคุณต้องการเริ่มต้นด้วยการเขียนโปรแกรม 3 มิติและ OpenGL โดยไม่ต้องเรียนรู้ C ++ ลองใช้LWJGLกับ Java เพราะมันมีน้ำหนักเบามากและฉันคิดว่ามันเป็นรหัส C ++ ที่ทำงานผ่าน JNI

บางทีในระยะยาวคุณอาจต้องการเปลี่ยนไปใช้ C ++ แต่คุณสามารถเริ่มต้นและฝึกฝนด้วย C # หรือ Java เนื่องจากรหัสเกมส่วนใหญ่นั้นมาจากประสบการณ์ของภาษา แต่คุณควรลองฝึกใช้ภาษาที่คุณคุ้นเคยกับ OpenGL นอกจากนี้ในขณะที่คุณฝึกกราฟิกคุณควรลองใช้ GLSL กับ OpenGL ด้วยซึ่งมีไวยากรณ์เหมือน C มาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.