เหตุใดเกมต่างๆจึงทำงานดีกว่าใน Windows มากกว่าใน OSX


11

ตัวอย่างเช่นใน Mac Mini ของฉันกับ Bootcamp Team Fortress 2 ทำงานที่ประมาณ 20fps ใน OSX และ 80fps ใน Windows นี่เป็นกรณีทั่วไป ทำไมนี้


มันเป็นเครื่องเดียวกันที่บูทคู่ในระบบปฏิบัติการ
sans

บูตคู่ใน "ไม่ใช่เครื่องเสมือน" ถูกต้องไหม
horatio

1
ใช่บูตเครื่องเข้าสู่ระบบปฏิบัติการโดยตรง
sans

1
ฉันมักจะพบคำถามเหล่านี้ที่น่าสนใจ - ตราบใดที่พวกเขาไม่ได้มีส่วนร่วมในการพูดจาโผงผาง / ลุกเป็นไฟ - เพราะในฐานะผู้ใช้ Mac (จาก 10 เดือน) ฉันได้เห็นความเข้าใจผิดของผู้ใช้ Windows
Ricket

คำตอบ:


15

ไดรเวอร์ Direct3D บน Windows ได้รับการปรับแต่งอย่างน่าขันบางครั้งสำหรับเกมเฉพาะและพัฒนาโดยผู้จำหน่ายฮาร์ดแวร์รายบุคคล

ไดรเวอร์ OpenGL ของ Apple ได้รับการเขียนและดูแลรักษา (AFAIK) โดย Apple และมีไว้สำหรับการใช้งาน "ทั่วไป" ของระบบปฏิบัติการรวมถึง UI และอะไรก็ตาม ไม่มีการเพิ่มประสิทธิภาพมากนักสำหรับการเล่นเกมและปริมาณงานที่มีประสิทธิภาพสูง

โดยทั่วไปจำนวนมากของทรัพยากรจากจำนวนมากของแหล่งที่มาได้ไปเข้าสู่การทำ DirectX รวดเร็วบน Windows, ในขณะที่ทรัพยากรน้อยลงมากพร้อมที่จะทำเช่นเดียวกันบน Mac


ฉันจะเอนตัวไปที่คอมไพเลอร์ shader ในไดร์เวอร์มากขึ้นโดยเฉพาะว่าเป็นส่วนหนึ่งของความแตกต่าง altdevblogaday.com/2011/07/20/…กล่าวว่าสำหรับเกมยอดนิยม NV / AMD จะส่งมอบความสมบูรณ์แบบให้กับฮาร์ดแวร์ของพวกเขา
อดัม

5
มันไม่เพียง แต่ไดรเวอร์ .. แต่ยังเป็นผู้พัฒนาเกม พวกเขามักจะลงทุนทรัพยากรมากขึ้นเพื่อปรับให้เหมาะสมสำหรับ Direct3d / DirectX แทน OpenGL อีกกรณีหนึ่งคือเมื่อเกมได้รับการพัฒนาเริ่มแรกสำหรับ windows และได้รับการย้ายในภายหลัง นั่นจะต้องเป็นพอร์ตที่ดีจริงๆ (เช่นอาจส่งผลให้มีการเขียนโค้ดใหม่จำนวนมาก) ถ้ามันควรจะมีประสิทธิภาพที่คล้ายกัน ... ซึ่งส่วนใหญ่ไม่ได้เป็นเช่นนั้น
bummzack

ดังนั้น Team Fortress 2 จึงแสดงผลใน OpenGL บน OSX แต่ D3D บน Windows?
sans

sans, ใช่ Direct3D นั้นเป็น Windows เท่านั้นดังนั้นเกมใด ๆ บนแพลตฟอร์มอื่นใดที่แสดงผลโดยใช้ OpenGL (หรือซอฟต์แวร์ .. ) Windows รองรับ OpenGL เช่นกัน แต่เกมเวอร์ชั่น Windows ส่วนใหญ่จะใช้ Direct3D เพราะดังที่กล่าวไว้แล้วไดรเวอร์สำหรับ Windows มักจะได้รับการปรับให้เหมาะสมที่สุดสำหรับ D3D
Ricket

13

ในขณะที่ฉันจะไม่ลดประสิทธิภาพการปรับแต่งที่ Microsoft อาจใส่ลงใน Windows และ / หรือ DirectX ฉันเชื่อมั่นอย่างยิ่งว่าโปรแกรมส่วนใหญ่จะทำงานได้ดีขึ้นบน Windows เพียงเพราะนั่นคือสิ่งที่นักพัฒนาให้ความสำคัญ พวกเขาตัดสินใจเกี่ยวกับการออกแบบโดยคำนึงถึง Windows จากนั้นจึงพยายามทำให้มันใช้งานได้ในระบบปฏิบัติการอื่น (Mac, Linux, ฯลฯ ) ฉันพบปัญหานี้ในที่ทำงาน: โครงการอื่นมีปัญหามากกับการย้ายระบบไปยังระบบที่ไม่ใช่ Windows เพราะนักพัฒนาถือว่ามันเป็นความคิดที่ดี ฉันได้เขียนโปรแกรมซ้ำ ๆ ที่สร้างขึ้นบนหลาย ๆ OS ด้วยความพยายามเพียงเล็กน้อยเพราะฉันวางแผนตั้งแต่ต้น เมื่อคุณพยายามทำมันจริงๆ (ซึ่งตรงกันข้ามกับการทำพอร์ตอย่างไม่เต็มใจ) คุณจะได้เรียนรู้สิ่งที่ต้องใช้และต้องใช้ความพยายามเพิ่มขึ้นเล็กน้อย


ความอยากรู้ของผู้ที่ไม่ได้เป็น coder ที่นี่: จะเกิดอะไรขึ้นกับประสิทธิภาพเมื่อคุณออกแบบสำหรับหลายแพลตฟอร์ม? ตัวอย่างเช่นเกมแบบหลายแพลตฟอร์มของคุณจะทำงานเร็วบน Windows เหมือนกับเวอร์ชันที่เน้น Windows หรือไม่
Jason Pineo

@ Jason: มันเพิ่มเติมเกี่ยวกับเวลาที่ใช้และความจำเพาะของแพลตฟอร์ม ไม่มีอะไรหยุดนักพัฒนาจากการเขียนโค้ดที่ปรับให้เหมาะกับ Windows อย่างสมบูรณ์การเขียนโค้ดแยกต่างหากซึ่งได้รับการปรับให้เหมาะสมที่สุดสำหรับ OSX และจากนั้นเพียงแค่สลับซึ่งใช้บนแพลตฟอร์ม อย่างไรก็ตามเวลาและทรัพยากรที่ใช้ในการทำเช่นนั้นมักจะเกินดุลประโยชน์ของการทำเช่นนั้น
Jordaan Mylonas

@ Jason: ในกรณีนี้มันขึ้นอยู่กับว่าคุณออกแบบเกมของคุณได้ดีแค่ไหน (และเมื่อฉันพูดถึงการออกแบบฉันหมายถึงการวางแผนไม่ใช่การเข้ารหัสจริง) และความแตกต่างของระบบปฏิบัติการที่แตกต่างกันอย่างไร หากพวกเขาแตกต่างกันมากความคิดเห็นของ Jordaan ก็เหมาะสมที่คุณจะต้องพูดถึงระบบปฏิบัติการแต่ละระบบแยกกัน แต่ด้วยอินเทอร์เฟซทั่วไปเช่น OpenGL และเมื่อเวลาผ่านไป API ที่ต่างกันยืมแนวคิดจากกันและกันพวกเขาทั้งหมดค่อนข้างคล้ายกัน ดังนั้นวันนี้มันเป็นแบบฝึกหัดเพิ่มเติมในการจับคู่คุณสมบัติและออกแบบซอฟต์แวร์ของคุณเพื่อให้สามารถใช้คุณสมบัติแต่ละอย่างได้โดยไม่ต้องยกเว้นระบบปฏิบัติการ
Klox

7

ในฐานะผู้ใช้ Mac ฉันอยากจะเสนอปัจจัยเพิ่มเติม: ตัวกำหนดตารางเวลา CPU ใน OS X นั้น "ยุติธรรม" มากกว่าใน Windows

นี่เป็นหัวข้อวิทยาศาสตร์คอมพิวเตอร์ที่ซับซ้อนดังนั้นนี่เป็นวิธีคิดง่ายๆเกี่ยวกับตัวกำหนดตารางเวลา CPU ของคุณ: โปรเซสเซอร์ของคุณจะต้องทำงานหลายอย่างพร้อมกัน (โปรแกรมที่เปิดอยู่ทั้งหมดของคุณรวมถึงกระบวนการระบบเบื้องหลัง) จริงๆแล้วมันสามารถทำสองสามอย่างพร้อมกันได้ (จำนวนของคอร์คูณจำนวนเธรดต่อคอร์เช่น dual-core i7 สามารถทำงานได้ 4 งานพร้อมกันเป็นต้น) ดังนั้นมันจึงแยกงานทั้งหมดออกเป็นชิ้น ๆ และสลับไปมาระหว่างกันเพื่อให้ดูเหมือนว่าจริง ๆ แล้วมันทำอะไรหลายอย่างพร้อมกัน เมื่อคุณรันโปรแกรมสองโปรแกรมตัวประมวลผลจะสลับไปมาระหว่างการประมวลผลทั้งสองโปรแกรมนั้นเร็วมาก (เช่นไม่กี่ไมโครวินาทีที่นี่แล้วจากนั้นสองสามไมโครวินาที)

รูปแบบที่จะดำเนินการสิ่งต่าง ๆ ตามลำดับและระยะเวลาที่ตัดสินใจโดย "อัลกอริทึมการตั้งเวลา" ตัวอย่างเช่นตัวจัดตารางรอบ robin เพียงจัดเรียงงานในวงกลมและประมวลผลตามลำดับ ตัวจัดตารางเวลาอื่นอาจจัดเรียงงานจากเวลาที่เหลือน้อยที่สุด - งานเล็ก ๆ จะเสร็จอย่างรวดเร็วและงานใหญ่อาจต้องรอสักครู่ก่อนที่จะทำ

Windows และ OS X นั้นแตกต่างกันมากและอัลกอริทึมการตั้งเวลาของพวกเขาก็แตกต่างกันเล็กน้อยเช่นกัน Windows ค่อนข้าง "ฉลาดขึ้น" เกี่ยวกับการจัดลำดับความสำคัญของสิ่งต่าง ๆ ดังนั้นจึงมีความสำคัญเป็นพิเศษสำหรับโปรแกรมที่มองเห็นเพื่อให้คอมพิวเตอร์ปรากฏเร็วขึ้น อย่างไรก็ตาม OS X มีความเป็นธรรมมากกว่าในกระบวนการเบื้องหลัง อัลกอริทึมโดยรวมนั้นเหมือนกันมากระหว่างสองระบบปฏิบัติการ (ทั้งคู่เป็นข้อเสนอแนะหลายระดับ ) แต่รายละเอียดเล็ก ๆ น้อย ๆ นี้ส่งผลให้ผู้ใช้มีประสบการณ์ที่แตกต่างกัน

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

ประเด็นก็คือประเด็นนี้: เกมแบบเต็มหน้าจอใน Windows จะได้รับความสำคัญสูงใน CPU และสิ่งที่ทำงานในพื้นหลังจะต้องรอ ใน OS X นี่เป็นกรณีที่น้อยกว่า

บางข้อมูลทางเทคนิคเกี่ยวกับกำหนดการจะได้รับที่นี่ ; ส่วนที่เหลือของคำตอบนี้มาจากการศึกษาด้านวิทยาการคอมพิวเตอร์และการใช้งาน OS X ของฉันในช่วง 10 เดือนที่ผ่านมาหลังจากใช้ Windows มานานกว่า 10 ปี (และ Linux เป็นครั้งคราว) บางครั้งฉันก็ผิดหวังกับตัวกำหนดตารางเวลาที่ยุติธรรมกว่า แต่บางครั้งฉันก็ชื่นชมข้อดีของมัน

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


-2

เกมบางเกมที่ถูก "ส่งต่อ" ไปยัง MacOSX นั้นเป็นเกมของWindows ที่ทำงานอยู่ในตัวจำลอง แม้ว่าฉันจะไม่มีรายการตัวอย่างที่สมบูรณ์ แต่ดูเหมือนว่ามี SPORE อย่างน้อยที่เป็นเช่นนั้น:

SPORE ไม่เคยเปิดตัวอย่างเป็นทางการใน GNU / Linux และรุ่น Mac มีอายุต่ำ จริง ๆ แล้วพอร์ตของ Mac นั้นเป็น Windows รุ่นที่บรรจุด้วย Cider ซึ่งเป็นเทคโนโลยีที่ตัดค่าเสื่อมราคาซึ่งครอบคลุม WINE เวอร์ชั่นเก่า (ตอนนี้) รอบ ๆ เกม ( ที่มา )

การรันซอฟต์แวร์ภายในตัวจำลองได้โดยนิยามช้ากว่าการรันแบบดั้งเดิม

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