ฉันแค่สงสัยว่า XNA หายไปอะไรเพื่อที่จะถูกพิจารณาเป็นเอ็นจิ้นเกม มันทำทุกสิ่งที่เอ็นจิ้นเกมควรทำ (ยกเว้นส่วนของฟิสิกส์) มันยังมีการสนับสนุนด้านที่กำหนดไว้ในบทความวิกิพีเดียในทุกเครื่องเกม
ทำไม XNA ไม่ถือเป็นเอ็นจิ้นเกม
ฉันแค่สงสัยว่า XNA หายไปอะไรเพื่อที่จะถูกพิจารณาเป็นเอ็นจิ้นเกม มันทำทุกสิ่งที่เอ็นจิ้นเกมควรทำ (ยกเว้นส่วนของฟิสิกส์) มันยังมีการสนับสนุนด้านที่กำหนดไว้ในบทความวิกิพีเดียในทุกเครื่องเกม
ทำไม XNA ไม่ถือเป็นเอ็นจิ้นเกม
คำตอบ:
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)
ผสมกับการอัปเดตบัฟเฟอร์บนตัวแสดงกราฟิกของฉัน
what makes an sdk to be called a GameEngine?
เฟรมเวิร์กจัดเตรียมสถาปัตยกรรมขั้นต่ำที่สร้างขึ้นสำหรับแอ็พพลิเคชันชนิดเฉพาะ มันช่วยลดข้อสมมติฐานเกี่ยวกับรายละเอียดการใช้งานเกินกว่าเป้าหมายที่ระบุไว้ของสถาปัตยกรรม ในขณะที่กรอบการพัฒนาเกมข้ามแพลตฟอร์มอาจมีเป้าหมายในการให้ "สิ่งที่เป็นเรื่องธรรมดา (เกือบ) ทุกเกมคอมพิวเตอร์โดยไม่คำนึงถึงแพลตฟอร์ม" และอาจนำปัจจัยเชิงนามธรรมเช่นการจัดการเวลาและเอนทิตีมาใช้เท่านั้น มีเป้าหมายในการมอบ "สิ่งที่เป็นเรื่องธรรมดาสำหรับเกมคอมพิวเตอร์เกือบทั้งหมดที่เขียนขึ้นเพื่อการใช้งานบน XNA CLR" เนื่องจากโฟกัสนี้แคบมากพวกเขาจึงสามารถรวมคุณสมบัติของเครื่องยนต์เข้ากับการไม่ต้องรับโทษได้ พวกเขารวมเอาไว้ทั้งหมดภายใต้หัวข้อ "Framework" เนื่องจากสิ่งนี้บ่งชี้ว่ามีอิสระในการใช้งานซึ่งคุณจะได้รับจากนักพัฒนาเกม
กรอบการพูดควรเป็นแบบไม่ จำกัด มากที่สุดเท่าที่จะเป็นไปได้ในขณะที่ยังคงให้รากฐานที่มีประโยชน์ ในทางกลับกันเครื่องยนต์มักจะเน้นไปที่คุณลักษณะเฉพาะและในการใช้งานคุณยอมรับว่ามีข้อ จำกัด บางอย่างที่คุณจะต้องผูกติดอยู่
ฉันไม่เคยใช้ 'เครื่องมือสร้างเกม' แต่ความเข้าใจของฉันเกี่ยวกับเรื่องนี้เป็นมากกว่าชุดเครื่องมือที่กำหนดไว้ล่วงหน้าซึ่งมาพร้อมกับโครงสร้างเกมโครงกระดูกที่กำหนดไว้ล่วงหน้าสำหรับการพัฒนาเกมประเภทใดประเภทหนึ่งโดยเฉพาะ และแน่นอนว่าโครงสร้างสำหรับการพัฒนาเกมบางประเภทนั้นเป็นปัจจัยหลักที่กำหนดในกลไกของเกมมันดูเหมือนจะเป็นสิ่งที่บทความ Wikipedia ดังกล่าวมีเสน่ห์ สำหรับฉันเฟรมเวิร์ค XNA นั้นคล้ายกับชุดของห้องสมุดบุคคลที่สามมากกว่าเช่น AJAX ซึ่งมันเพิ่มงานประจำที่สร้างไว้ล่วงหน้าให้กับภาษาโปรแกรมที่ไม่มีกระดูก ไม่มีข้อ จำกัด หรือแนวทางใด ๆ เกี่ยวกับสิ่งที่คุณในฐานะโปรแกรมเมอร์สามารถและไม่สามารถทำได้ด้วยรูทีนไลบรารีเหล่านี้ ในใจของฉันที่ไม่คล้ายกับเครื่องยนต์ แต่อย่างใด จากนั้นฉันก็มาจากพื้นหลังศูนย์กลางธุรกิจซอฟต์แวร์ / เว็บ
ฉันได้สร้างเฟรมเวิร์กสำหรับไอเดียเกมโดยใช้ XNA และรู้สึกอย่างแน่นอนว่าฉันใช้ไลบรารี่ตัวอื่นมากกว่า C # ฉันจะใช้กระบวนการที่ฉันแฮ็คในโปรแกรมทดสอบเพื่อสร้างเกมสองหรือสามเกมสำหรับ windows และ Xbox
ดังนั้นอย่างที่ฉันพูดในใจของฉันนี้อยู่ไกลจากสิ่งที่ฉันเข้าใจว่าเป็น 'Games Engine' ดังนั้นเมื่อฉันเจอโพสต์นี้ฉันก็ไม่รู้ว่าทำไมมีคนเปรียบเทียบกัน ฉันผิดหรือเปล่า?