คำแนะนำจากมือสมัครเล่น
// จากศูนย์ถึงมือสมัครเล่นในช่วงปีแห่งการเรียนรู้
ฉันจะอยู่ห่างจากเครื่องยนต์ระดับสูงอย่าง Unity หรือ Torque2D MIT พวกมันยอดเยี่ยมสำหรับต้นแบบเล็ก ๆ แต่ฉันจะไม่ใช้พวกเขาจริงจังกับการพัฒนาวิดีโอเกมของตัวเอง ทำไมฉัน จุดคืออะไรเว้นแต่มันจะไม่มีอะไรมากไปกว่า remScroller หรือ Arcade ที่เรียบง่าย
เอ็นจิ้นเกมส่วนใหญ่ไลบรารีหรือเฟรมเวิร์กไม่ได้ทำอะไรมากไปกว่างานที่ง่ายที่สุดด้วยโค้ดที่เต็มไปด้วยฟังก์ชั่นและฟีเจอร์ที่คุณไม่เคยใช้
เมื่อตอนที่ฉันยังใหม่ในการพัฒนาเกมเมื่อหลายปีก่อนฉันเริ่มที่ด้านบนสุด เครื่องยนต์ระดับสูงมาก ไม่ได้สูงอะไรอย่าง RPG MAKER แต่สูงไปที่นั่นอย่าง Unity และ Torque จากนั้นฉันลงไปที่ XNA และ C # เพราะมีทรัพยากรและแบบฝึกหัดมากมาย โครงการหลักของฉันต้องการประสิทธิภาพหรือบางทีฉันแค่คิดครอบงำเกี่ยวกับการต้องการประสิทธิภาพที่เหลือเชื่อในซอฟต์แวร์ของฉันแม้ว่ามันจะไม่ใช่โครงการขนาดใหญ่ก็ตาม XNA ไม่ได้ตัดเลยและฉันมีปัญหามากมายกับเครื่องยนต์ที่ฉันอ่านต้องปวดหัวเพื่อแก้ไข อะไรคือจุดประสงค์ของการใช้บางสิ่งบางอย่าง "ระดับที่สูงกว่า" เช่น XNA / C # เมื่อคุณทำงานเดียวกัน (แก้ไขข้อผิดพลาด XNA และปัญหา) เช่นเดียวกับที่คุณหมุนเครื่องยนต์ของคุณเองใน C ++?
หลังจากเรียนรู้มาไม่นานฉันก็เรียนรู้ว่าเอ็นจิ้นเกมได้รับการออกแบบอย่างไรและเริ่มมองหาโค้ดของเอ็นจิ้นเอง การอ่านสิ่งที่ผู้เชี่ยวชาญส่วนใหญ่ต้องพูดและการร้องเรียนของนักวิจารณ์เกี่ยวกับเอ็นจิ้นเกมทำให้ฉันรู้ว่า 'ทำไมต้องใช้เอ็นจิ้นด้วย?'
การแปรงขึ้นบน C ++ ของฉันและการเข้าสู่ปรัชญาบางอย่างที่ใช้ในภาษานั้นช่วยฉันได้มาก อย่างไรก็ตามฉันได้ใช้เวลามากมายในการเรียนรู้เกี่ยวกับสิ่งที่ฉันอยากจะเริ่มทำเกม
ดังนั้นฉันจึงลงเอยด้วยบางสิ่งที่มีการสรรเสริญค่อนข้างมากคือ C ++ และระดับต่ำมาก: SDL น่าเสียดายที่มันปวดหัว มันอยู่ในระดับต่ำมากฉันเห็นว่าไม่มีเหตุผลว่าทำไมถึงต้องใช้ห้องสมุดนี้ ฉันควรเรียนรู้ OpenGL และทำเองตั้งแต่เริ่มต้น จริงๆแล้วมันเป็นความจริงที่ฉันต้องใช้รหัสของตัวเองเพื่อทำอะไรบางอย่างที่เป็นพื้นฐานในการพลิกภาพ (และการนำไปใช้ของคนอื่นไม่ทำงานเพราะฉันจัดการสไปรท์) ซึ่งผลักฉันลงในถังขยะ SDL อย่างถาวร เป็นเรื่องที่ดีถ้าคุณต้องการให้ตัวแสดงผลซอฟต์แวร์ แต่ IMO ฉันอยากจะทิ้งมันลงไปด้วยฮาร์ดแวร์ (OpenGL) หรือสูงกว่า (SFML)
ไม่อยากซื้อหนังสืออีกเล่มใน amazon และเรียนรู้อีก API หนึ่งฉันก็สูงขึ้น SFML นั้นยอดเยี่ยมมากไม่ต้องพูดถึงการยกย่องอย่างสูงทั่วอินเทอร์เน็ต ฉันได้อ่านบทวิจารณ์ในเชิงบวกจำนวนเกือบสิ้นสุดโดยที่ไม่ติดลบ ฉันไม่สามารถพูดแบบเดียวกันกับ SDL ได้ มันจัดการพื้นฐานขั้นพื้นฐานทั้งหมด แต่เหลือให้ฉันและห้องสมุดอื่น ๆ ที่ฉันเลือก ฉันติดอยู่กับมันตั้งแต่
IMO เอ็นจิ้นของเกมนั้นโง่ ไลบรารีระดับต่ำเป็นตัวเลือกที่ดีกว่ามากสำหรับทั้งผู้เชี่ยวชาญและโปรแกรมเมอร์มือใหม่
นอกจากนี้ฉันยังได้เรียนรู้เพิ่มเติมเกี่ยวกับแนวคิดการเขียนโปรแกรมและเพิ่มพูนทักษะการพัฒนาซอฟต์แวร์ของฉันเมื่อถูกบังคับให้จัดการสิ่งต่าง ๆ ในระดับที่ต่ำกว่าที่ฉันเคยเรียนรู้ด้วยเอ็นจิ้นเกม WYSIWYG ระดับสูง
Unity ให้อะไรคุณมากกว่า XNA การแก้ไขภาพและไม้ยันรักแร้ ในที่สุดมือใหม่จะได้เรียนรู้ว่าคุณยังคงต้องเขียนรหัสเกมทั้งเกมเหมือนกับที่คุณทำหากคุณใช้ภาษาซีพลัสพลัสและตัวแก้ไขภาพไม่มีประสิทธิภาพในการสร้างตัวเอง
XNA ให้อะไรกับคุณมากกว่า SFML หรือการติดตั้ง OpenGL และไลบรารี่ที่มีประโยชน์อื่น ๆ ของคุณ? IMO, absolutley ไม่มีอะไรดี ประสิทธิภาพที่แย่ลง, C # แทน C ++, บทเรียนมากมายสำหรับมือใหม่ แต่มีความเป็นมืออาชีพน้อยลงอย่างมากและนักรักษาอาการปวดหัวบางคนที่ IMO เป็นเพียงแค่ไม้ค้ำสำหรับสิ่งที่คุณควรเรียนรู้ด้วย C ++ ตอนแรกฉันถูกข่มขู่ด้วย C ++ และรัก C # ส่วนใหญ่เป็นเพราะได้ยินคำพูดและข่าวลือเกี่ยวกับความคิดเห็นของคนโง่ที่มีปัญหาแบบเดียวกันกับที่ฉันได้เริ่มต้นด้วย C ++: ฉันแค่ต้องการโปรแกรมเมอร์ที่ดีพอ ฉันรู้ว่าฉันต้องเรียนรู้พื้นฐานเพิ่มเติมและแก้ไขจุดอ่อนของฉันเพื่อที่จะเอาชนะปัญหาที่เกิดขึ้นกับ C ++ ซึ่ง C # "ทำได้ง่าย" ฉันเคยคิดถึงความเรียบง่ายของบางสิ่งใน C # หรือไม่? ไม่แม้แต่! ฉันรู้วิธีการทำใน C ++ โดยไม่ต้องยุ่งยาก
หากไลบรารี่ระดับต่ำหรือการเรียนรู้ DirectX / OpenGL ข่มขู่คุณให้รอจนกว่าคุณจะเริ่มมีความซับซ้อนในการสร้างวิดีโอเกมแบบเต็ม
ปรัชญาของฉันเกี่ยวกับเอ็นจิ้นเกมสามารถสรุปได้ในสองตัวอย่างเพื่ออธิบายความซ้ำซ้อนและไร้ประโยชน์ของเอ็นจิ้นยกเว้นในบางสถานการณ์
มือใหม่ที่ถูกคุกคามด้วยห้องสมุดระดับต่ำจะมีอาการชักเมื่อพวกเขาค้นพบว่าแม้จะมีเอ็นจิ้นระดับสูงอย่าง Unity (นอกเหนือจากการเรนเดอร์กราฟิกการเล่นไฟล์เสียงการโหลดเนื้อหาสิ่งพื้นฐานจริง) เกือบจะเหมือนกัน ตั้งแต่เริ่มต้น ความซับซ้อนในงานวิศวกรรมเกมไม่เข้าใจ API หรือการพัฒนาคลาสเพื่อแสดงผลให้กับจอแสดงผล
ผู้เชี่ยวชาญที่ไม่ได้ถูกคุกคามด้วยความซับซ้อนในการสร้างเกมเต็มรูปแบบในรูปแบบ Unity ไม่มีประโยชน์สำหรับ Unity เนื่องจากเวลาที่ต้องเรียนรู้ API และข้อกำหนดของเอ็นจิ้นเฉพาะอาจเป็นเรื่องปวดหัวและ เวลามากกว่าที่จะใช้รหัสไม่กี่คลาสที่จำเป็นต้องทำพื้นฐาน
ดังนั้นเครื่องมือไม่มีประโยชน์สำหรับมือใหม่เพราะมือใหม่ไม่สามารถทำอะไรกับพวกเขาได้เพราะพวกเขาขาดทักษะด้านวิศวกรรม ในทำนองเดียวกันเครื่องยนต์ไม่มีประโยชน์สำหรับทหารผ่านศึกเพราะพวกเขามีทักษะด้านวิศวกรรมที่จะทำโดยไม่มีเครื่องยนต์และอาจทำให้ 'เครื่องยนต์' ที่เฉพาะเจาะจงมีประสิทธิภาพมากขึ้นกว่าที่จะผ่านการปวดหัวของการเรียนรู้ทั้ง API ของเกมของเกม ฟังก์ชั่นและนิสัยใจคอประสิทธิภาพ ไม่ต้องพูดถึงฝันร้ายอันยิ่งใหญ่ของการทำงานกับเครื่องยนต์ที่บางครั้งคุณไม่สามารถสัมผัสได้เพราะพวกเขาไม่ใช่โอเพ่นซอร์ส (หรือแม้ว่าพวกเขาจะอยู่ด้วยการอ่านรหัสของคนอื่นอาจเป็นฝันร้ายในบางครั้ง)
Heck แม้แต่เฟรมเวิร์กเกม "ระดับต่ำ" บางอย่างก็ไม่มีอะไรมากไปกว่าคลาสไม่กี่คลาสที่จะสร้างหน้าต่างแสดงผลไปยังจอแสดงผลและเล่นเสียง นี่คือสิ่งที่มืออาชีพสามารถทำได้ตั้งแต่เริ่มต้นด้วยการใช้ห้องสมุดอื่น ๆ เช่น SDL / SFML หรือการใช้งาน OpenGL / DirectX / OpenAL ของพวกเขาเองในเวลาไม่นานที่ใช้ในการเล่นวิดีโอเกมแบบเต็มรูปแบบ
TLDR;
หากคุณต้องการโปรแกรมเรียนรู้ที่จะเป็นโปรแกรมเมอร์
หลีกเลี่ยงการใช้เอนจิ้น แต่อย่าโง่และไม่สนใจห้องสมุดที่มีประโยชน์อย่างเหลือเชื่อ
หากคุณต้องการเป็นนักออกแบบเกมลองใช้เครื่องมือ WYSIWYG และเพิ่มความสนุกให้กับเกมเหล่านั้น!
หากคุณต้องการเป็นGame Programmerให้หลีกเลี่ยงเอนจิ้นอย่าง crutch
สำหรับฉันแล้วการใช้เอ็นจิ้นเกมระดับสูงทำให้พิการความสามารถของฉันในการเป็นโปรแกรมเมอร์ ทันทีที่ฉันเริ่มใช้ห้องสมุดระดับต่ำกว่าแทนหรือไม่ใช้ห้องสมุดใด ๆ เลยฉันเริ่มเรียนรู้มากมายจนฉันเริ่มจากมือใหม่ทั้งหมดไปยังผู้ที่สามารถสร้างวิดีโอเกมได้โดยไม่ต้องมีการอ้างอิงบทแนะนำหรือหนังสือข้างๆฉันเลย เพียงแค่คอมไพเลอร์และวิศวกรรมและการฝึกฝนมากมาย
จำนวนการเรียนรู้ที่ฉันได้รับจากห้องสมุดระดับต่ำในระยะเวลาสั้น ๆ นั้นยิ่งใหญ่กว่าจำนวนที่ฉันได้รับในระยะเวลานานมากโดยใช้กลไกระดับสูงขึ้น **