ทำไม XNA ไม่ถือเป็นเอ็นจิ้นเกม


13

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

ทำไม XNA ไม่ถือเป็นเอ็นจิ้นเกม


19
@Miro นั่นไม่สมเหตุสมผลเลย
The Duck คอมมิวนิสต์

2
ประเด็นคืออะไร? ถ้าเป็นงานที่คุณต้องการให้ใช้ ถ้าไม่เช่นนั้นไม่ได้ ใครสนใจว่าคนเราเรียกมันว่าใคร มันเป็นเพียงป้ายกำกับส่วนใหญ่ใช้จากลิงตลาด;)
Maik Semder

มันเป็นเพียงเพราะความคิดเห็น The Communist Duck ตอบกลับความคิดเห็นของฉันในคำถามนี้
Ali1S232

4
@Maik Semder มันไม่ใช่ป้ายกำกับเลย เอ็นจิ้นและเฟรมเวิร์กเป็นสองสิ่งที่แตกต่างและแยกออกจากกันและ XNA เป็นสิ่งหลัง มันมีประโยชน์ที่จะแยกแยะและเข้าใจว่า XNA ไม่ใช่เอ็นจิ้นมิฉะนั้นคุณอาจสับสนมากเมื่อคุณค้นพบว่าคุณอาจจำเป็นต้องสร้างเอ็นจินใน XNA หรือว่ามันไม่มีปลั๊กอินใด ๆ ความสามารถในการเล่นเหมือนเครื่องมือจริงทำ
doppelgreener

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

คำตอบ:


28

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

มันถูกออกแบบมาเป็นกรอบ - ในความเป็นจริง XNA เป็น Microsoft XNA Framework - ดังนั้นในทางเทคนิคแล้วมันไม่ใช่เอ็นจิ้นตามชื่อ

ไม่มี 'เอ็นจิ้น' - ถ้าคุณสังเกตเห็นคุณได้คลาสหลักของคุณจาก XNA.Framework.Game และต้องแทนที่ฟังก์ชันการวาดและอัปเดตด้วยตัวคุณเอง ไม่มีระบบเรนเดอร์ส่วนกลางหรือระบบอินพุตหรือระบบเสียงที่พร้อมใช้งาน มี SpriteBatch และคลาสจุดสุดยอดมี KeyboardState และมีบางคลาสเสียง .. แต่พวกเขาเป็นเพียง abstractions มากกว่ารหัสการวาดภาพระดับต่ำ

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

เพื่อล้างสิ่งที่ค่อนข้าง: ฉันกำลังพัฒนาเครื่องยนต์ใน XNA เห็นได้ชัดว่าฉันไม่สามารถทำสิ่งที่ไม่จริงเหมือนโจนาธานได้กล่าวถึง อย่างไรก็ตามมีบางสิ่งที่ฉันรู้สึกว่าสำคัญที่ XNA ไม่มี:

Plug-n-play: ฉันต้องการสร้างเทมเพลตบางประเภท - มี HP, mesh นี้, แอนิเมชันนี้และ BOOM! ฉันมี NPC ในเกมของฉัน

ระดับต่ำที่ซ่อนอยู่ - XNA ทำสิ่งนี้แล้ว แต่ฉันไม่ต้องการทำเล่น ๆ กับ GameServiceProviders ฉันแค่ต้องการที่จะผลักสิ่งต่าง ๆ เข้าด้วยกัน

เกมแยกจากเอนจิ้น - อาจมีคลาส 'เกม' แต่ฉันต้องการแยกตรรกะและรหัสออกจากระบบพื้นฐาน ฉันไม่ต้องการif(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)ผสมกับการอัปเดตบัฟเฟอร์บนตัวแสดงกราฟิกของฉัน


ฉันยอมรับว่าคุณต้องแทนที่คุณวาดและอัปเดตการตั้งค่า แต่นั่นไม่ได้หมายความว่ามันไม่มีเอ็นจิ้นการแสดงผลประเด็นคือมันทำให้ทุกสิ่งพร้อมสำหรับคุณที่จะวาดและสิ่งเหล่านั้นไม่เพียง แต่เป็นนามธรรม มันมีอะไรไม่น้อยกว่า Gamedine 2 มิติ (ฉันไม่ได้ตรวจสอบสิ่งต่าง ๆ 3 มิติ) และเท่าที่ฉันจำได้ว่ามันมีตัวควบคุมอินพุตและฉันหมายความว่ามันเป็นเพียงกรอบงานเพราะไมโครซอฟท์ตั้งชื่อมันหรือมีเหตุผลเชิงตรรกะ ?
Ali1S232

1
@Gajet: พิจารณาสักครู่ว่ามีการอภิปรายเกี่ยวกับวิธีสร้างเครื่องยนต์ใน XNAแต่ไม่ใช่สำหรับ Unreal Engine หรือ CryEngine ฉันคิดว่าลักษณะทั่วไปของเอ็นจิ้นเกมคือคุณเพียงแค่เสียบบิตและบางสิ่งจะเกิดขึ้น ( TV Tropes ยืนยันว่าเอ็นจิ้นสามารถขับเคลื่อนข้อมูลได้ค่อนข้างดีในเรื่องนี้ ) ในทางตรงกันข้าม XNA ทำให้คุณต้องทำงานทุกออนซ์ด้วยตัวเองโดยที่คุณไม่ต้องสร้างมิดเดิลแวร์เพื่อเชื่อมต่อกับอุปกรณ์
doppelgreener

1
นอกจากนี้ฉันไม่เชื่อว่าฉันพบคำจำกัดความที่ชัดเจนของเกมเอ็นจิ้นแล้ว แต่สิ่งที่ฉันรู้ก็คือมีเอ็นจิ้นเกมและ XNA ไม่ได้ทำสิ่งใด ๆ ที่พวกเขาทำ (ยกเว้นมีมิดเดิลแวร์และบางตัว ส่วนประกอบระดับต่ำที่ง่ายมาก)
doppelgreener

@ Jonathan Hobbs: ตอนนี้ฉันสามารถเห็นสิ่งที่คุณกำลังพูดถึง แต่อีกครั้งฉันได้ลอง GameBryo (NetImmerse) และนั่นถือเป็น gameengine แต่จนกระทั่ง lightspeed มีคุณสมบัติน้อยกว่า XNA ตัวเองมันแค่กลางคนดังนั้นฉันคิดว่าเรา สามารถเปลี่ยนชื่อคำถามเป็นwhat makes an sdk to be called a GameEngine?
Ali1S232

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

5

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

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


2

ฉันไม่เคยใช้ 'เครื่องมือสร้างเกม' แต่ความเข้าใจของฉันเกี่ยวกับเรื่องนี้เป็นมากกว่าชุดเครื่องมือที่กำหนดไว้ล่วงหน้าซึ่งมาพร้อมกับโครงสร้างเกมโครงกระดูกที่กำหนดไว้ล่วงหน้าสำหรับการพัฒนาเกมประเภทใดประเภทหนึ่งโดยเฉพาะ และแน่นอนว่าโครงสร้างสำหรับการพัฒนาเกมบางประเภทนั้นเป็นปัจจัยหลักที่กำหนดในกลไกของเกมมันดูเหมือนจะเป็นสิ่งที่บทความ Wikipedia ดังกล่าวมีเสน่ห์ สำหรับฉันเฟรมเวิร์ค XNA นั้นคล้ายกับชุดของห้องสมุดบุคคลที่สามมากกว่าเช่น AJAX ซึ่งมันเพิ่มงานประจำที่สร้างไว้ล่วงหน้าให้กับภาษาโปรแกรมที่ไม่มีกระดูก ไม่มีข้อ จำกัด หรือแนวทางใด ๆ เกี่ยวกับสิ่งที่คุณในฐานะโปรแกรมเมอร์สามารถและไม่สามารถทำได้ด้วยรูทีนไลบรารีเหล่านี้ ในใจของฉันที่ไม่คล้ายกับเครื่องยนต์ แต่อย่างใด จากนั้นฉันก็มาจากพื้นหลังศูนย์กลางธุรกิจซอฟต์แวร์ / เว็บ

ฉันได้สร้างเฟรมเวิร์กสำหรับไอเดียเกมโดยใช้ XNA และรู้สึกอย่างแน่นอนว่าฉันใช้ไลบรารี่ตัวอื่นมากกว่า C # ฉันจะใช้กระบวนการที่ฉันแฮ็คในโปรแกรมทดสอบเพื่อสร้างเกมสองหรือสามเกมสำหรับ windows และ Xbox

ดังนั้นอย่างที่ฉันพูดในใจของฉันนี้อยู่ไกลจากสิ่งที่ฉันเข้าใจว่าเป็น 'Games Engine' ดังนั้นเมื่อฉันเจอโพสต์นี้ฉันก็ไม่รู้ว่าทำไมมีคนเปรียบเทียบกัน ฉันผิดหรือเปล่า?

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