พอร์ตพีซีของเกมคอนโซลมักจะออกมาหนึ่งหรือสองเดือนหลังจากนั้น ทำไมนี้
เกมเขียนด้วยภาษาที่คอมไพล์บนพีซีด้วยดังนั้นตรรกะของเกมจึงควรคอมไพล์โดยไม่มีปัญหา ตอนนี้อะไรกันบ้าง? มันเป็นรหัสการแสดงผลหรืออะไร
พอร์ตพีซีของเกมคอนโซลมักจะออกมาหนึ่งหรือสองเดือนหลังจากนั้น ทำไมนี้
เกมเขียนด้วยภาษาที่คอมไพล์บนพีซีด้วยดังนั้นตรรกะของเกมจึงควรคอมไพล์โดยไม่มีปัญหา ตอนนี้อะไรกันบ้าง? มันเป็นรหัสการแสดงผลหรืออะไร
คำตอบ:
มีสาเหตุหลายประการที่ทำให้พอร์ตพีซีใช้เวลาสักครู่ (ฉันขอโทษถ้าฉันดูเหมือนจะทำซ้ำตัวเองที่ไหนสักแห่งนี่คือการเขียนเรียงลำดับในทันที)
เมื่อคุณกำลังเล่นบนคอนโซลสิ่งนี้เพียงอย่างเดียวทำให้มีข้อ จำกัด บางประการเกี่ยวกับสิ่งที่คุณสามารถทำได้เนื่องจากผู้ใช้ทุกคนมีแป้นเกม
เพียงแค่สร้างการแมป 1: 1 ระหว่างแป้นคีย์บอร์ดและอินพุตคอนโทรลเลอร์ไม่ใช่ความคิดที่ดีเสมอไป - ถ้าเป็นไปได้ - บางครั้งอาจใช้เวลานานกว่านั้นในการหาทางออกที่ดี
เมื่อคุณพัฒนาเช่น Wii U คุณรู้ว่า Wii U ทำงานอย่างไรเพราะ Wii Us ทั้งหมดเหมือนกัน สิ่งนี้ไม่เป็นความจริงสำหรับพีซี คุณมีการ์ดกราฟิกและซีพียูที่แตกต่างกันจำนวนมากและบางครั้งก็มีบางอย่างที่ใช้ไม่ได้กับการ์ดบางรุ่น ต้องใช้การทดสอบจำนวนมากเพื่อค้นหาข้อบกพร่องเหล่านี้และการแก้ไขข้อผิดพลาดก็ใช้เวลาเช่นกัน
หากคุณไม่เคยใช้โปรแกรมเพื่อสร้างเวอร์ชั่น PC คุณต้องตั้งรหัสฮาร์ดแวร์ให้เป็นนามธรรม เกมบางเกมต้องการรองรับ DirectX หลายรุ่นและ OpenGL สำหรับ Linux / Mac และทั้งหมดนี้ต้องใช้เวลาในการเขียนหากยังไม่เคยทำมาก่อน
บนคอนโซลเกมไม่ต้องแข่งขันกับระบบปฏิบัติการสำหรับทรัพยากรและอื่น ๆ - ไม่มีสิ่งต่าง ๆ มากมายดำเนินการในพื้นหลัง
บนพีซีคุณใช้ระบบปฏิบัติการคุณมีโปรแกรมแบ็คกราวนด์เหลือเฟือและทั้งหมดนี้หมายความว่าคุณจะไม่ได้รับส่วนแบ่งมากเท่าที่คุณคาดหวัง ซึ่งหมายความว่าบางครั้งคุณจำเป็นต้องทำการปรับให้เหมาะสมเพิ่มเติมโดยเฉพาะอย่างยิ่งสำหรับผู้เล่นในระบบระดับล่างสุด
ด้วยคอนโซลคุณมีเป้าหมายที่แน่นอนดังนั้นคุณจึงเขียนเฉดสีและอื่น ๆ เพื่อให้ตรงกับเป้าหมายนั้น
ในพีซีการ์ดกราฟิกบางรุ่นรองรับคุณสมบัติขั้นสูงและบางทีคุณอาจต้องการใช้ shader ที่ดีกว่าสำหรับสิ่งเหล่านั้น นั่นหมายความว่าคุณต้องเขียน shader นั้น
Console SDKs อาจมีคุณสมบัติที่สะดวกมากมายที่ไม่ได้แมปเข้ากับพีซีได้ง่ายตัวอย่างเช่นอาจให้ตัวจับเวลาฮาร์ดแวร์หรือ API เสียงที่ดี
โดยปกติสิ่งเหล่านั้นมักจะไม่มีในพีซี คุณต้องใช้วิธีอื่นในการทำสิ่งเหล่านั้นให้สำเร็จและอาจเปลี่ยนวิธีที่คุณต้องแยกแยะความแตกต่างของแพลตฟอร์ม
เหตุผลง่ายๆคือคอนโซลมีฮาร์ดแวร์ชุดเดียวที่เหมือนกันต่อคอนโซล
XBox, PS3 และ Wii ของคุณทั้งหมดมีฮาร์ดแวร์เดียวกันกับเพื่อนบ้าน XBox, PS3 และ Wii ของคุณ อย่างไรก็ตามคอมพิวเตอร์ของคุณมีซีพียูที่แตกต่างกัน, การ์ดกราฟิกที่แตกต่างกัน, จำนวนแรมที่แตกต่างกัน, ในความเป็นจริงการตั้งค่าทั้งหมดและการตั้งค่าระบบปฏิบัติการ, ไดรเวอร์ที่ติดตั้งอาจเป็นวิธีการเปลี่ยนรูปแบบที่ไม่ซ้ำใครอย่างสิ้นเชิง
นี่คือสิ่งที่ทำให้การพอร์ตไปยังพีซีเป็นเรื่องยาก คุณต้องคำนึงถึงฮาร์ดแวร์ทุกชิ้นที่เป็นไปได้ตามข้อกำหนดขั้นต่ำของระบบและข้างต้น นั่นเป็นกระบวนการที่ยากและยากในการตั้งโปรแกรมและดีบัก มันยากมากสำหรับนักพัฒนาที่จะรู้ว่าการกำหนดค่าทุกอย่างสำหรับโปรแกรมและใกล้เป็นไปไม่ได้ที่จะทำการทดสอบกับการกำหนดค่าเหล่านี้
เมื่อพวกเขาพัฒนามันขึ้นมาสำหรับพีซีมันจะทำการทดสอบอย่างครอบคลุมโดย devs แต่มันก็สามารถพึ่งพาการทดสอบเบต้าจากผู้ใช้ในช่วงสองสามสัปดาห์จนถึงสองสามเดือน การทดสอบจ้างกับผู้เล่นรุ่นเบต้าก่อนที่พอร์ตไปยังพีซีจะเปิดตัวอย่างเป็นทางการโดยทั่วไปคือสาเหตุที่คุณเห็นช่องว่างในวันที่วางจำหน่ายระหว่างคอนโซลและพีซี
การย้ายรหัสไปยังแพลตฟอร์มใหม่ต้องใช้เวลา การสร้างตัวจับเวลา nanosecond สำหรับ Xbox 360 (ฉันไม่เคยพัฒนาใน XNA) จะต้องมีการนำไปใช้ที่แตกต่างจากตัวจับเวลา nanosecond เดียวกันใน Linux, Mac หรือ Windows ทีนี้ลองนึกภาพว่าคุณมีฟังก์ชั่นหลายร้อยชนิดที่ต้องการการย้ายพอร์ตนับพันหากเครื่องยนต์มีขนาดใหญ่พอ
อาจใช้เวลาหนึ่งหรือสองเดือนของการเข้ารหัสเพื่อเพิ่มในการปรับใช้ที่แตกต่างกันเหล่านี้สำหรับแพลตฟอร์มใหม่ นอกเหนือจากนี้คุณไม่สามารถใช้ไลบรารีเดียวกันบน Xbox 360 ได้เท่าที่คุณสามารถทำได้บน Windows, Playstation 3 หรือแพลตฟอร์มอื่น ๆ ซึ่งหมายความว่าคุณอาจต้องใช้ไลบรารีใหม่ทั้งหมดเพื่อทำสิ่งเดียวกับที่คุณทำกับเวอร์ชัน Xbox 360
โดยรวมแล้วสิ่งเหล่านี้รวมกันเป็นจำนวนมาก การย้ายไปยังแพลตฟอร์มใหม่นั้นไม่ใช่เรื่องง่ายสำหรับชื่อ AAA ขนาดใหญ่
มันแทบจะไม่มีอะไรเกี่ยวข้องกับความยากลำบากในหลาย ๆ กรณี
มันไม่ใช่ความสำคัญ พวกเขากำลังหมุนตัวเพื่อออกจากประตูในเวลาที่กำหนด ความแตกต่างทุกนาทีต้องใช้เวลาในการพิจารณา หากคุณสามารถปล่อยบนคอนโซลสองสามเครื่องหรือพีซีตามกำหนดเวลาทำสิ่งนั้นก่อนจากนั้นจึงปิดพอร์ต ปล่อยก่อนทำเงินได้มากขึ้น โดยทั่วไปแล้วคอนโซลจะทำดีกว่าสำหรับเกมแบบกล่องรุ่นนี้ถึงแม้ว่ามันจะเริ่มเปลี่ยนไปแล้ว แต่คอนโซลใหม่อาจเปลี่ยนสิ่งนั้นได้
นอกจากนี้ในบางกรณีผู้ผลิตคอนโซลให้ประโยชน์กับการวางจำหน่ายแบบเอกสิทธิ์ดังนั้นผู้เผยแพร่จะได้รับส่วนลดหรือบางอย่างถ้าพวกเขาปล่อยในคอนโซลแรกและแพลตฟอร์มอื่น ๆ ในภายหลัง ไม่มีอะไรเกี่ยวกับเรื่องเทคนิค
เริ่มแรกเกมยากที่จะทำบนคอนโซลกว่าบนพีซี ด้านบนของมันคอนโซลมีรายละเอียดที่แตกต่างกันมากและฮาร์ดแวร์ที่แตกต่างกันระหว่าง nintendo, sony และ microsoft ซึ่งไม่เพียง แต่ส่งผลให้มีประสิทธิภาพที่แตกต่างกัน แต่ยังหมายถึงปัญหาคอขวดที่แตกต่างกัน
โดยปกติเกมจะปรับแต่งเครื่องยนต์เพื่อเพิ่มคุณภาพและประสิทธิภาพสูงสุดในแต่ละคอนโซล
เมื่อปรับตัวเข้ากับพีซีมีปัญหาอื่น ๆ คอนโซลเป็นเนื้อเดียวกันซึ่งหมายความว่าคอนโซลทั้งหมดมีฮาร์ดแวร์เดียวกัน (PS3 ทั้งหมดมีประสิทธิภาพของฮาร์ดแวร์เดียวกัน) เมื่อคุณสร้างเกมสำหรับพีซีคุณกำหนดเป้าหมายต่ำสุด แต่คุณอนุญาตให้ผู้ใช้เพิ่มคุณภาพสำหรับพีซีที่ทรงพลังกว่า เกมที่กำหนดเป้าหมายสำหรับพีซีนั้นได้รับการปรับให้เหมาะสมน้อยลง
การเขียนโปรแกรมบนคอนโซลมีข้อดีอย่างหนึ่งช่วยให้โปรแกรมเมอร์เพิ่มประสิทธิภาพการทำงานดังนั้นเกมคอนโซลใด ๆ ก็จะทำงานได้ดี
บนพีซีมันแย่กว่านั้นเพราะมีฮาร์ดแวร์มากมายอยู่ที่นั่น แต่ให้อิสระมันมีอิสระมากขึ้นเกมที่ดูดีที่สุดนั้นจะอยู่บนพีซีเสมอเพราะพีซีนั้นมักจะตกเลือด
การย้ายเกมจากคอนโซลไปยังพีซีอาจเป็นเรื่องยุ่งยากเพราะคอนโซลออกแบบมาเพื่อประสิทธิภาพของเกมในขณะที่พีซีไม่ใช่ แต่โดยรวมแล้วการพอร์ตเกมจากคอนโซลไปยังพีซีนั้นทำได้ง่ายกว่าฝั่งตรงข้ามเพราะคอนโซลมีหน่วยความจำน้อยกว่ามาก บางอย่างเช่น 2 หรือ 4 ครั้งน้อยกว่า
การเปลี่ยนรหัสเพื่อปรับให้เข้ากับการ จำกัด หน่วยความจำนี้ส่วนใหญ่มักจะหมายถึงการเขียนโปรแกรมใหม่ทั้งหมด
ฉันไม่คิดว่ามันยากที่จะย้ายเกมจากคอนโซลไปยังพีซีมันเป็นเรื่องของ API บริษัท และโปรแกรมเมอร์ที่ทำงานกับคอนโซลเท่านั้นจะมีความยากในการย้ายไปยังพีซีเพราะพวกเขาไม่คุ้นเคย แต่ก็เป็นเพราะพวกเขาปรับใช้กับคอนโซล API อย่างต่อเนื่องดังนั้นหมายความว่ารหัสของพวกเขามักจะตอบสนองข้อ จำกัด ของคอนโซลคอมไพเลอร์และ ไม่จำเป็นต้องดูแล PC apis
แน่นอนว่าเอ็นจิ้นสามารถตั้งโปรแกรมให้ทำงานบนคอนโซลและพีซีทุกเครื่องเมื่อทำได้ง่ายกว่าดีกว่าบอกโปรแกรมเมอร์ของคุณให้ย้ายพอร์ตเอ็นจิ้นไปยังพีซีหลังจากที่พวกเขาได้รับแจ้งว่าไม่เคยมีการวางแผนมาเป็นเวลา 3 หรือ 4 ปี
TL; DR consoles นั้นมีคุณสมบัติเหมือนกันและเป็นเกมคอนโซลรุ่นล่าสุดรุ่นหนึ่งพีซีที่มีความหลากหลายและฮาร์ดแวร์และ API มีวิวัฒนาการอย่างต่อเนื่อง ค่าใช้จ่ายจะถูกกระจายระหว่างการเขียนโปรแกรมและการสร้างฮาร์ดแวร์ซึ่งเป็นอันตราย
สิ่งหนึ่งที่ดีคือการอนุญาตให้ฮาร์ดแวร์ทั้งหมดทำงานทุกอย่าง แต่ราคาคอนโซลได้รับการชดเชยเนื่องจาก บริษัท เกมจ่ายค่าลิขสิทธิ์ให้กับผู้ผลิตคอนโซลดังนั้นพวกเขาจึงล็อกฮาร์ดแวร์เพื่อทำงานเฉพาะ บริษัท เกมที่จ่ายเงิน มันยุ่ง