ทำไมการพอร์ตเกมจากคอนโซลสู่พีซีจึงเป็นเรื่องยาก [ปิด]


27

พอร์ตพีซีของเกมคอนโซลมักจะออกมาหนึ่งหรือสองเดือนหลังจากนั้น ทำไมนี้

เกมเขียนด้วยภาษาที่คอมไพล์บนพีซีด้วยดังนั้นตรรกะของเกมจึงควรคอมไพล์โดยไม่มีปัญหา ตอนนี้อะไรกันบ้าง? มันเป็นรหัสการแสดงผลหรืออะไร


3
อาจเป็นเพราะข้อเสนอการเผยแพร่ พวกเขาได้รับเงินจากเช่น Sony เพื่อสร้างชื่อพิเศษ ps3 / ps4
Aurus

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

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

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

คำตอบ:


47

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

ปรับการควบคุมและการเล่นเกม

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

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

ฮาร์ดแวร์นามธรรม / การกระจายตัว

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

หากคุณไม่เคยใช้โปรแกรมเพื่อสร้างเวอร์ชั่น PC คุณต้องตั้งรหัสฮาร์ดแวร์ให้เป็นนามธรรม เกมบางเกมต้องการรองรับ DirectX หลายรุ่นและ OpenGL สำหรับ Linux / Mac และทั้งหมดนี้ต้องใช้เวลาในการเขียนหากยังไม่เคยทำมาก่อน

การช่วงชิงทรัพยากร

บนคอนโซลเกมไม่ต้องแข่งขันกับระบบปฏิบัติการสำหรับทรัพยากรและอื่น ๆ - ไม่มีสิ่งต่าง ๆ มากมายดำเนินการในพื้นหลัง

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

การปรับปรุงสินทรัพย์

ด้วยคอนโซลคุณมีเป้าหมายที่แน่นอนดังนั้นคุณจึงเขียนเฉดสีและอื่น ๆ เพื่อให้ตรงกับเป้าหมายนั้น

ในพีซีการ์ดกราฟิกบางรุ่นรองรับคุณสมบัติขั้นสูงและบางทีคุณอาจต้องการใช้ shader ที่ดีกว่าสำหรับสิ่งเหล่านั้น นั่นหมายความว่าคุณต้องเขียน shader นั้น

เนื้อหาเฉพาะแพลตฟอร์ม

Console SDKs อาจมีคุณสมบัติที่สะดวกมากมายที่ไม่ได้แมปเข้ากับพีซีได้ง่ายตัวอย่างเช่นอาจให้ตัวจับเวลาฮาร์ดแวร์หรือ API เสียงที่ดี

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


4
ที่เกี่ยวข้องกับส่วนควบคุมอินเทอร์เฟซผู้ใช้คุณยังสามารถเห็นสิ่งนี้ได้มากมายซึ่งเมนูบนเดสก์ท็อปพีซีนั้นไม่สามารถใช้งานได้กับเมาส์เช่นพวกเขาได้ทำการแมป 1: 1 จาก d-pad ไปยังแป้นพิมพ์ ปัญหาที่อาจเกิดขึ้นอีกอย่างหนึ่งคือภาษาที่ดีกว่าและรองรับไดรเวอร์
แคสเปอร์เบเยอร์

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

6

เหตุผลง่ายๆคือคอนโซลมีฮาร์ดแวร์ชุดเดียวที่เหมือนกันต่อคอนโซล

XBox, PS3 และ Wii ของคุณทั้งหมดมีฮาร์ดแวร์เดียวกันกับเพื่อนบ้าน XBox, PS3 และ Wii ของคุณ อย่างไรก็ตามคอมพิวเตอร์ของคุณมีซีพียูที่แตกต่างกัน, การ์ดกราฟิกที่แตกต่างกัน, จำนวนแรมที่แตกต่างกัน, ในความเป็นจริงการตั้งค่าทั้งหมดและการตั้งค่าระบบปฏิบัติการ, ไดรเวอร์ที่ติดตั้งอาจเป็นวิธีการเปลี่ยนรูปแบบที่ไม่ซ้ำใครอย่างสิ้นเชิง

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

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


5

การย้ายรหัสไปยังแพลตฟอร์มใหม่ต้องใช้เวลา การสร้างตัวจับเวลา nanosecond สำหรับ Xbox 360 (ฉันไม่เคยพัฒนาใน XNA) จะต้องมีการนำไปใช้ที่แตกต่างจากตัวจับเวลา nanosecond เดียวกันใน Linux, Mac หรือ Windows ทีนี้ลองนึกภาพว่าคุณมีฟังก์ชั่นหลายร้อยชนิดที่ต้องการการย้ายพอร์ตนับพันหากเครื่องยนต์มีขนาดใหญ่พอ

อาจใช้เวลาหนึ่งหรือสองเดือนของการเข้ารหัสเพื่อเพิ่มในการปรับใช้ที่แตกต่างกันเหล่านี้สำหรับแพลตฟอร์มใหม่ นอกเหนือจากนี้คุณไม่สามารถใช้ไลบรารีเดียวกันบน Xbox 360 ได้เท่าที่คุณสามารถทำได้บน Windows, Playstation 3 หรือแพลตฟอร์มอื่น ๆ ซึ่งหมายความว่าคุณอาจต้องใช้ไลบรารีใหม่ทั้งหมดเพื่อทำสิ่งเดียวกับที่คุณทำกับเวอร์ชัน Xbox 360

โดยรวมแล้วสิ่งเหล่านี้รวมกันเป็นจำนวนมาก การย้ายไปยังแพลตฟอร์มใหม่นั้นไม่ใช่เรื่องง่ายสำหรับชื่อ AAA ขนาดใหญ่


3

มันแทบจะไม่มีอะไรเกี่ยวข้องกับความยากลำบากในหลาย ๆ กรณี

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

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


1

เริ่มแรกเกมยากที่จะทำบนคอนโซลกว่าบนพีซี ด้านบนของมันคอนโซลมีรายละเอียดที่แตกต่างกันมากและฮาร์ดแวร์ที่แตกต่างกันระหว่าง nintendo, sony และ microsoft ซึ่งไม่เพียง แต่ส่งผลให้มีประสิทธิภาพที่แตกต่างกัน แต่ยังหมายถึงปัญหาคอขวดที่แตกต่างกัน

โดยปกติเกมจะปรับแต่งเครื่องยนต์เพื่อเพิ่มคุณภาพและประสิทธิภาพสูงสุดในแต่ละคอนโซล

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

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

บนพีซีมันแย่กว่านั้นเพราะมีฮาร์ดแวร์มากมายอยู่ที่นั่น แต่ให้อิสระมันมีอิสระมากขึ้นเกมที่ดูดีที่สุดนั้นจะอยู่บนพีซีเสมอเพราะพีซีนั้นมักจะตกเลือด

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

การเปลี่ยนรหัสเพื่อปรับให้เข้ากับการ จำกัด หน่วยความจำนี้ส่วนใหญ่มักจะหมายถึงการเขียนโปรแกรมใหม่ทั้งหมด

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

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

TL; DR consoles นั้นมีคุณสมบัติเหมือนกันและเป็นเกมคอนโซลรุ่นล่าสุดรุ่นหนึ่งพีซีที่มีความหลากหลายและฮาร์ดแวร์และ API มีวิวัฒนาการอย่างต่อเนื่อง ค่าใช้จ่ายจะถูกกระจายระหว่างการเขียนโปรแกรมและการสร้างฮาร์ดแวร์ซึ่งเป็นอันตราย

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

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