มันฉลาดหรือไม่ที่จะใช้เอ็นจิ้นบางตัวเพื่อเริ่มการพัฒนาเกม? [ปิด]


14

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

ฉันพบสิ่งเหล่านั้นยากที่จะเข้าใจและฉันพบว่าบางสิ่งบางอย่างได้ถูกสร้างไว้ในกรอบงานแล้ว ฉันพบเอ็นจิ้นเกมอื่น ๆ ซึ่งฉันสามารถเข้าใจได้อย่างน้อยโค้ดบรรทัดอย่างง่ายเช่น" FlatRedBall " , " ความจริง "และ" Quick Start เครื่องยนต์ " ผมรู้อยู่แล้วของคนที่มีชื่อเสียงเช่น"ผีปอบ" , "ลวงตา"และ"ความสามัคคี" ในเวลาเดียวกันฉันถูกล่อลวงให้ทิ้งมันไปและเริ่มเรียนรู้การเขียนโปรแกรมเอ็นจิ้นเกมที่มีชื่อเสียง ฉันอยากอยู่กับ XNA เพราะฉันใช้เวลาในการเรียนรู้ เวลาฉันไม่อยากเสียมัน

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


1
ฉันมีความคิดแบบเดียวกัน ... ฉันใช้ XNA มา 4 ปีแล้ว ฉันเริ่มสร้าง MMORPG ... ดูว่านั่นทำให้ฉันอยู่ไหน เช่นเคยเริ่มต้นเล็ก ๆ ใช้สิ่งที่คุณชอบนอกเสียจากว่าคุณจะมีแผนใหญ่กว่าและเพิ่งทำอะไรบางอย่างก่อนที่เวลาจะผ่านไปนานเกินไป
Michael Coleman

@Omnion การใช้ XNA เป็นเวลา 4 ปีในการสร้างเกม MMORPG ไม่ใช่เรื่องของสิ่งที่คุณใช้ แต่เป็นเรื่องของความมุ่งมั่นอุทิศเวลาว่างและการใช้งานจริง ทุกคนสามารถเล่นเกม MMORPG โดยใช้ XNA ได้ตราบใดที่พวกเขายังคงมีแรงจูงใจและความทุ่มเทตลอดเวลา จำนวนเวลาจะแตกต่างกันไปตามปริมาณของเวลาว่างและความเร็วของงาน แต่ไม่ว่าขนาดหรือขอบเขตของโครงการจะสามารถใช้ได้จริงแม้ว่าจะเริ่มใหญ่ กุญแจสำคัญคือการจัดระเบียบกระบวนการทางวิศวกรรม ขั้นตอนเด็กหนึ่งขั้นในเวลาเมื่อเวลาผ่านไปอย่างต่อเนื่องเสร็จสมบูรณ์โครงการไม่ว่าขนาด

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

คำตอบ:


11

ขึ้นอยู่กับสิ่งที่คุณต้องการเรียนรู้ ถ้าคุณต้องการที่จะ "เพียงแค่สร้างเกม" คุณสามารถทำได้ดีกับเครื่องยนต์ ฉันเองไม่แนะนำสิ่งนี้

หากคุณต้องการเข้าใจวิธีการทำงานของคอมพิวเตอร์กราฟิกคุณจะต้องเรียนรู้และทำความเข้าใจกับทุกสิ่ง ตั้งแต่การรีเฟรชพีชคณิตเชิงเส้นของคุณ (อย่างน้อยเมทริกซ์, เวกเตอร์และช่องว่างเชิงเส้น) จนถึงการทำความเข้าใจวิธีการทำงานของท่อกราฟิกส์ XNA เป็นเฟรมเวิร์กที่ดีที่สุดในการเริ่มต้น เกมแรกของฉันอยู่ในนั้น (ฉันหมายถึงเกมจริงแอพ 3D แรกคือรถถังต่อสู้ใน openGL) หากคุณต้องการเริ่มต้นการเขียนโปรแกรม 3D ไม่ต้องมีแผนทะเยอทะยานคุณไม่สามารถทำเกม RPG ได้ในตอนนี้ คุณควรพยายามสร้างเกมที่คุณกำลังบินอยู่ในอวกาศที่เต็มไปด้วยลูกบาศก์และพยายามยิงเกมสีแดงเพื่อเรียนรู้พื้นฐาน อาจใช้เวลามากกว่าที่คุณคิด :) แต่มันจะสอนคุณมากมาย

ไปเลย! การเขียนโปรแกรมกราฟิก 3D เป็นสิ่งที่ดีที่สุดที่คุณสามารถทำได้เพื่อการมีชีวิตอยู่ มันยากสนุกและสร้างสรรค์ในหนึ่งแพ็คเกจ


3
อาจคุ้มค่าที่จะตรวจสอบMonoGameแทน XNA Microsoft ได้หยุดพัฒนา XNA และขาดการสนับสนุน Windows 8 Metro UI จากการโพสต์บางข้อความที่ฉันอ่านใน Reddit ตัวแทนของพวกเขาแนะนำ MonoGame จริงๆ และคุณจะได้รับแพลตฟอร์มข้าม (Linux, OSX, Android, iOS)
ดาวิดซี. บิชอป

17

ไม่มีอะไรผิดปกติกับการใช้เครื่องมือที่มีอยู่มันลงสู่เป้าหมายของคุณทั้งหมด

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

หากคุณต้องการเป็นโปรแกรมเมอร์เกมคุณต้องเข้าใจสิ่งต่าง ๆ ในระดับที่ต่ำกว่า กรอบอย่าง XNA เป็นจุดเริ่มต้นที่ดี คุณสามารถพึ่งพาเฟรมเวิร์กในการทำให้สิ่งต่างๆทำงานและเริ่มจากนั้นเปลี่ยนส่วนต่างๆของเฟรมเวิร์กด้วยโค้ดของคุณเองขณะที่คุณเรียนรู้วิธีสร้างส่วนประกอบแต่ละส่วนของเกม


1
ฉันชอบคำตอบของคุณมากกว่าของฉัน +1 สำหรับคุณ
Notabene

6
มันมีประโยชน์อย่างยิ่งถ้าคุณต้องการเป็นโปรแกรมเมอร์เกมเริ่มต้นด้วยเอ็นจิ้นและเมื่อคุณทำการศึกษาด้วยตนเองว่าคนที่คุณใช้เป็นตัวอย่างที่ดี (สมมติว่าคุณสนุกกับการใช้มัน) เพื่อเปรียบเทียบกับแหล่งข้อมูลอื่น ๆ บนสถาปัตยกรรมเครื่องยนต์
michael.bartnett

แต่คุณก็ควรจะเป็นพื้นฐานที่มั่นคงในคอมพิวเตอร์กราฟฟิคแม้ว่าคุณจะใช้เครื่องมือ
Notabene

1

คำแนะนำจากมือสมัครเล่น

// จากศูนย์ถึงมือสมัครเล่นในช่วงปีแห่งการเรียนรู้


ฉันจะอยู่ห่างจากเครื่องยนต์ระดับสูงอย่าง 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;

  1. หากคุณต้องการโปรแกรมเรียนรู้ที่จะเป็นโปรแกรมเมอร์

  2. หลีกเลี่ยงการใช้เอนจิ้น แต่อย่าโง่และไม่สนใจห้องสมุดที่มีประโยชน์อย่างเหลือเชื่อ

  3. หากคุณต้องการเป็นนักออกแบบเกมลองใช้เครื่องมือ WYSIWYG และเพิ่มความสนุกให้กับเกมเหล่านั้น!

  4. หากคุณต้องการเป็นGame Programmerให้หลีกเลี่ยงเอนจิ้นอย่าง crutch

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

จำนวนการเรียนรู้ที่ฉันได้รับจากห้องสมุดระดับต่ำในระยะเวลาสั้น ๆ นั้นยิ่งใหญ่กว่าจำนวนที่ฉันได้รับในระยะเวลานานมากโดยใช้กลไกระดับสูงขึ้น **


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