เมื่อใดที่คุณควรหมุนเอ็นจิ้นเกมของคุณเอง? [ปิด]


20

ฉันเป็นนักพัฒนาซอฟต์แวร์มา 5 ปีแล้วและฉันต้องการที่จะพัฒนาเกม iOS ฉันได้เล่นกับ iOS SDK เป็นเวลาประมาณ 2 ปีเข้าร่วมการประชุม cocoaheads และฉันรู้สึกว่าฉันมีความเข้าใจที่ดีเกี่ยวกับวัตถุประสงค์ -C โกโก้และแม้กระทั่ง c และ c ++

ฉันมีความคิดเกี่ยวกับเกมและรู้ว่าฉันจะใช้ Box2D แต่ฉันสงสัยว่าฉันควรใช้ cocos2D หรือไม่ เหตุผลหลักคือ:

  1. ฉันอาจต้องการทำสิ่งต่าง ๆ กราฟิกฉลาดที่ไม่มีใน cocos2d
  2. ถ้าฉันหมุนเอ็นจิ้นเกมของตัวเองฉันจะควบคุมได้มากขึ้น

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


7
หากคุณพูดว่า "C / C ++" เป็นไปได้ค่อนข้างที่คุณจะไม่เข้าใจอย่างน้อยหนึ่งในนั้นและอาจเป็นได้ทั้งคู่
DeadMG

10
ฉันเข้าใจว่าบางคนสร้างความสับสนให้กับทั้งสองคนและฉันควรจะพูดว่า C / C ++ / Objective-C เพื่อพูดย้ำว่าฉันเข้าใจภาษาหลักที่คุณสามารถใช้ในการเขียนโปรแกรมบนแพลตฟอร์ม iOS ฉันไม่รู้สึกอยากพูดว่า C / C ++ จะหมายถึงโดยอัตโนมัติว่าฉันสับสนทั้งสองเป็นหนึ่ง
Joey Green

ฉันชอบคำถามนี้เพราะเปลี่ยนจากการต้อนรับปกติ "ฉันจะสร้างเครื่องยนต์ของตัวเองได้อย่างไร" คำถาม +1 สำหรับคุณครับ
Ray Dey

1
@DeadMG ฉันพูดว่า "C / C ++" และมีความเข้าใจที่ดีของทั้งสอง
Ciaran

ผมว่ามันเป็นแม้กระทั่งที่ไม่ได้
bobobobo

คำตอบ:


38

โพสต์อื่น ๆ ส่วนใหญ่จะเป็น "สร้างเกมไม่ใช่เครื่องมือ" แต่ฉันจะสมมติว่าคุณมีเกมเฉพาะที่คุณต้องการสร้างและต้องการทราบเมื่อเป็นความคิดที่ดีที่จะเริ่มต้นด้วยรหัสของคนอื่น ฐานหรือเริ่มจากศูนย์

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

คุณควรมีความเข้าใจในสิ่งต่าง ๆ ต่อไปนี้ (รายการนี้แทบจะไม่ครอบคลุมทั้งหมด)

  • มิดเดิลแวร์ใดที่มีอยู่แล้วที่คุณสามารถใช้ ("เอ็นจิ้น" หรืออื่น ๆ )
  • สิ่งที่มิดเดิลแวร์นั้นนำมาสู่ตารางมีคุณสมบัติที่ชาญฉลาด
  • มิดเดิลแวร์ที่ได้รับการพิสูจน์แล้วว่ามีความเป็นผู้ใหญ่โดยเฉพาะอย่างยิ่งถ้าคุณใส่ใจการสนับสนุนหลายแพลตฟอร์ม
  • เครื่องมือประเภทใดที่มิดเดิลแวร์มีให้หรือไม่จัดหาเพื่อช่วยเร่งการพัฒนา (ไม่ลดเครื่องมือด้วยเทคโนโลยีของคุณเอง)
  • ข้อ จำกัด ใดที่มิดเดิลแวร์มี (ตัวอย่างง่ายๆ Unity 3.x ไม่ได้ทำเงาแบบเรียลไทม์จากไฟแบบไดนามิกบน iOS)
  • อะไรที่เฉพาะเจาะจงให้บริการเกมของคุณโดยเฉพาะจะต้องมี
  • กำหนดเวลาของคุณคืออะไรและคุณต้องใช้เวลาเท่าไรในการรับจนถึงจุดที่มิดเดิลแวร์จะให้คุณเทียบกับค่าใช้จ่ายของมิดเดิลแวร์
  • มิดเดิลแวร์ที่ขยายได้นั้นมีประโยชน์เพียงใด (ตัวอย่างเช่นคุณสามารถแก้ไขปัญหาเงาบน iOS ใน Unity ได้โดยใช้หยดเงาหรืออาจเป็นเงาโครง)

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

โดยส่วนตัวแล้วฉันพบว่าการใช้เทคโนโลยีของคุณเองสำหรับเกมที่มีงบประมาณต่ำนั้นไม่คุ้มค่ากับความพยายาม ปริมาณพลังงานที่คุณได้รับจากเครื่องยนต์ราคาถูกในปัจจุบันนั้นไร้สาระ คุณไม่ได้อยู่ในจุดที่คุณตัดสินใจเกี่ยวกับใบอนุญาตเครื่องยนต์ A มูลค่าหลายล้านดอลลาร์หรือไม่ คุณจะไม่สามารถเอาชนะสิ่งที่พูด Unity เสนอให้คุณสำหรับ $ 3k หรือ Cocos2d สำหรับสิ่งที่มีค่าใช้จ่าย (ไม่ฟรีหรือไม่)

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


7
ตกลง ในฐานะที่เป็น tldr: หากคุณต้องถามคำถามคุณน่าจะดีกว่าถ้าใช้เครื่องยนต์ที่มีอยู่
Chris Subagio

บันทึกย่อของคุณเป็นตัวหนารวมประสบการณ์ของฉัน
วิศวกร

1
ชุมชนก็มีความสำคัญเช่นกัน บางสิ่งที่มีชุมชนเข้มแข็งเช่น XNA ทำให้การแก้ปัญหาเฉพาะง่ายขึ้นเพราะมีคนทำมาก่อนหรือให้คำแนะนำแก่คุณ
ashes999

14

อย่าม้วนตัวคุณเป็นเจ้าของเครื่องยนต์ หมุนคุณเป็นเจ้าของเกม ถ้าคุณเขียนโปรแกรมพร้อมกันก็ดีสำหรับคุณถ้าไม่คุณสามารถ refactor หรือส่วนใดก็ได้ที่คุณอาจต้องการนำมาใช้ซ้ำเพื่อให้เป็น "เครื่องยนต์" มากกว่า

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

ฉันจะใช้เครื่องมือที่มีอยู่เมื่อ:

  • ฉันมีกำหนดส่งแน่น
  • ฉันมีชุดคุณลักษณะคงที่ที่รู้จักเพื่อให้ฉันสามารถเลือกเครื่องยนต์สำหรับสิ่งนั้น

3

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

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

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


หากเป้าหมายของเขาคือการเรียนรู้นั่นไม่ใช่เรื่องเสียเวลา
Ciaran

3

มันง่ายมาก เป้าหมายหลักของคุณคือ: เรียนรู้หรือใช้เวลาในการตลาด

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


0

คุณควรม้วนเครื่องยนต์เกมของคุณเองเมื่อคุณรู้ว่ามีความจำเป็นที่จะต้องให้มัน

ตัวอย่างเช่นสมมติว่าคุณไม่มีเงินที่จะใช้กับ Unity หรือคุณควรจะใช้มันกับฮาร์ดแวร์ใหม่แทน หรือมีปัญหาเกี่ยวกับประสิทธิภาพของเอ็นจิ้นฟรีที่มีให้คุณหรือคุณต้องมีการควบคุมในระดับต่ำ

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

จากนั้นในกรณีนั้นให้เขียนเอนจิ้นของคุณเอง

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