เทคโนโลยีใดที่ใช้สำหรับการพัฒนาเกมในปัจจุบัน? [ปิด]


14

เมื่อใดก็ตามที่ฉันถามคำถามเกี่ยวกับการพัฒนาเกมในฟอรัมออนไลน์ฉันมักจะได้รับคำแนะนำเช่นอัลกอริทึมการวาดเส้นการเรียนรู้การจัดการรูปภาพระดับบิตและการบีบอัดวิดีโอเป็นต้น

อย่างไรก็ตามการดูเกมอย่าง God of War 3 ฉันคิดว่ามันยากที่จะเชื่อว่าเกมเหล่านี้สามารถพัฒนาได้โดยใช้เทคนิคระดับต่ำเช่นนี้

ความสุดยอดที่แท้จริงของเกมดังกล่าวท้าทายวิธีการเขียนโปรแกรมที่เข้าใจได้ (สำหรับฉัน)

นอกจากฮาร์ดแวร์เกมมันเป็นสัตว์ประหลาดวันนี้ ดังนั้นจึงเป็นเหตุผลที่นักพัฒนาจะทำงานในระดับที่สูงขึ้นของสิ่งที่เป็นนามธรรม

วิธีการพัฒนาล่าสุดในอุตสาหกรรมเกมคืออะไร? เป็นอย่างไรบ้างที่ทีมนักพัฒนา 30-35 คน (ซึ่งส่วนใหญ่เป็นผู้บริหารและนักการตลาด) สามารถทำให้เกมนี้น่าเหลือเชื่อ?

หากคำถามดูเหมือนกว้างเกินไปคุณสามารถอธิบายสถาปัตยกรรมของ God of War 3 ได้หรือไม่ หรือว่าจะผลิตโคลนอย่างไร? ที่ฉันคิดว่าควรจะตอบได้อย่างเป็นกลาง


2
มีคนสนใจอธิบายการลงคะแนนเสียงไหม?
Monika Michael

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

2
@ 9000 และคำถามนี้มีคุณสมบัติอย่างไรว่าไม่สร้างสรรค์?

1
@delnan: อาจเป็น downvoters ไม่พอใจกับวลีเช่น"วิธีการพัฒนาล่าสุดในอุตสาหกรรมเกมคืออะไร?" . สำหรับฉัน"คุณจะผลิตโคลนอย่างไรดีกว่า"
9000

4
สิ่งนี้จะไม่สมเหตุสมผล กว่าหรือไม่ที่gamedev.stackexchange.com
Dan เล่นซอโดย Firelight

คำตอบ:


12

ข้อจำกัดความรับผิดชอบ: ฉันไม่ใช่นักพัฒนาวิดีโอเกม แต่ฉันมีความสนใจในงานอดิเรก


เกม AAA ส่วนใหญ่ที่คุณเห็นนั้นสร้างโดยใช้เครื่องมือ พวกมันไม่ได้ถูกเขียนขึ้นมาจากพื้นดิน นึกถึงเครื่องยนต์เหมือนกรอบ คุณมี. NET Framework, Java SDK, ชุดเครื่องมือ Cocoa

ทุกสิ่งที่จะทำให้งานของคุณในการสร้างซอฟต์แวร์ง่ายขึ้นและย่อไปจากรหัสอ่างครัว มันจำเป็น แต่การเขียนทุกครั้งนั้นไม่ก่อผลมาก

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

ตัวอย่างเช่นUnreal Engine 4มีชุดพัฒนาและสตูดิโอนักฆ่า:

http://www.youtube.com/watch?v=MOvfn1p92_8

ป้อนคำอธิบายรูปภาพที่นี่

มีเครื่องยนต์ที่แตกต่างกันออกไปมากมาย บางคนจ่ายเงินฟรีบางคนลงไปที่โลหะบ้างคนอื่นเสนอสิ่งที่เป็นนามธรรมให้สูงขึ้น

ตัวอย่างเช่น:

  • ผีปอบ
  • Unreal Engine
  • เอกภาพ
  • แหล่ง
  • และอื่น ๆ อีกมากมาย...

5

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

ประสบการณ์ของฉันคือการเขียนโปรแกรมเกมโดยเฉพาะเกมเรียลไทม์เป็นประสบการณ์ที่แตกต่างจาก ... เกือบทุกการพัฒนาซอฟต์แวร์อื่น ๆ ที่ฉันทำไปอาจจะยกเว้นงาน GUI มันเป็นสิ่งที่คุณต้องลอง!


4

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

ในโลก OSS ลองดูOgreสำหรับเกมเชิงพาณิชย์ที่คุณมีของอย่างSource

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


แน่นอนว่าเอ็นจิ้นเหล่านี้เป็นเพียงปกติ (แม้ว่าจะได้รับการปรับให้เหมาะสมที่สุด) การสร้างโค้ด C / C ++ ที่เป็นนามธรรมบนยอด APIs ระดับล่าง (เช่น DX หรือ OpenGL สำหรับกราฟิก)

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

4

Unity3Dนั้นดีจริงๆ นี่คือบางจุดที่ฉันชอบเกี่ยวกับมัน:

  • มันช่วยให้คุณสร้างเกมในแบบไม่เชื่อเรื่องพระเจ้าแพลตฟอร์มและสร้างการปรับใช้โดยอัตโนมัติสำหรับ Windows, Mac OS X, Android, IOS สิ่งนี้เป็นจริงสำหรับเวอร์ชันปัจจุบัน (3.x) Apparentlly เวอร์ชัน 4 จะช่วยให้คุณสามารถปรับใช้บน Linux ได้เช่นกัน:

http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features

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

http://unity3d.com/unity/licenses

  • ทำงานร่วมกับซอฟต์แวร์การสร้างแบบจำลอง 3 มิติส่วนใหญ่ (ฉันชอบ 3d Studio Max แต่มันก็รองรับคนอื่นเช่นกัน):

http://unity3d.com/unity/editor/importing (เลื่อนลงเล็กน้อย)

  • การเข้ารหัส (การเขียนสคริปต์) สามารถทำได้ใน C # ซึ่งเป็นภาษาที่ดีกับ API ที่ดีและการตรวจสอบเวลารวบรวม มาพร้อมกับสภาพแวดล้อมการพัฒนาที่ดี (IDE และทุกอย่าง) หากคุณต้องการสิ่งที่แตกต่างก็รองรับจาวาสคริปต์เช่นกัน

  • มีการสนับสนุนทางฟิสิกส์ที่ดีมาก (การชนแรงโน้มถ่วงแรง ฯลฯ ):

http://docs.unity3d.com/Documentation/Manual/Physics.html

  • มีร้านค้าสินทรัพย์ที่ให้คุณซื้อโมเดลสคริปต์ภาพเคลื่อนไหวและอื่น ๆ และขึ้นอยู่กับความสามารถของคุณ (และกระเป๋าเงิน) คุณสามารถรับ / ดัดแปลงเพื่อให้ได้ทรัพยากรที่เหมาะสมสำหรับเกมของคุณ

  • สุดท้าย แต่ไม่ท้ายสุดมันเร็วพอสมควร ลองชมการสาธิตมือถือ IMHO พวกมันเคลื่อนไหวได้ค่อนข้างดีและมีกราฟิกที่ดีมาก:

http://unity3d.com/gallery/made-with-unity/game-list

นี่เป็นหนึ่งในโครงการ Unity ที่ดีฉันกำลังรอ:

ความสูญเปล่าของ Brian Fargo 2

พวกเขามีความสุขรายการบล็อกเกี่ยวกับทำไมพวกเขาเลือกความสามัคคีเช่นเดียวกับคนอื่น ๆ พูดถึงวิธีการทำงานกับมันไปพร้อม


3

ซอฟต์แวร์ ID เป็นหนึ่งในผู้ขายซึ่งโดยปกติจะเผยแพร่เกมที่ทันสมัย ไม่กี่ปีต่อมาพวกเขามักจะปล่อยพวกนั้นเป็นโอเพ่นซอร์ส บนhttp://fabiensanglard.net/quake3/index.phpคุณสามารถค้นหาการวิเคราะห์ของรหัสที่มา Quake3 นี่เป็นคำอธิบายที่ค่อนข้างละเอียดและถึงแม้ว่า Quake3 จะค่อนข้างเก่าในขณะที่แนวความคิดที่ควรจะยังคงเกี่ยวข้องกับเกมสมัยใหม่

และถ้าคุณต้องการสร้างเครื่องมือเกมที่ทันสมัยและมีการแข่งขันสูงคุณจะต้องรู้จักชิ้นส่วนระดับต่ำเหล่านั้นทั้งหมด หากคุณไม่ต้องการที่จะใส่ใจกับสิ่งเหล่านี้: มีเอ็นจิ้นต่าง ๆ (quake3 เอ็นจิ้นหรือจากคำตอบอื่น ๆ ) แต่ก็ใช้ได้ แต่คุณก็ไม่ได้สร้างเกมปฏิวัติใหม่ ;-)


จากลักษณะของการวิเคราะห์นั้น Quake 3 มีเทคนิค "ระดับต่ำ" ที่สำคัญในการพัฒนาเกมในปัจจุบันค่อนข้างน้อย สำหรับ starters, shaders (จัดทำ OpenGL)

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

อีกบทความที่เกี่ยวข้องกับคณิตศาสตร์ระดับต่ำไบนารีในเกม 3 มิติโดยใช้ Quake เป็นตัวอย่าง: blog.quenta.org/2012/09/0x5f3759df.html
johannes

1

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

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

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