Hirdetés

Vélemény: az új konzolok és a visszafelé kompatibilitás

Számos kérdés merült fel a Sony tegnapi bemutatója kapcsán, ami főleg Mark Cerny technikai információinak köszönhető.

A héten a Microsoft és a Sony kifejtette az új generációs Xbox Series X és PlayStation 5 technikai hátterét, amit pedig mindkét cég kiemelten kezelt az a visszafelé kompatibilitás. Ez nagyon leegyszerűsítve annyit jelent, hogy mindkét érkező konzolon futni fognak azok a játékok, amelyek működtek az Xbox One és a PlayStation 4 termékcsaládon. Sokan azt hiszik, hogy ezt pofon egyszerű megoldani, elvégre a hardvert újra az AMD tervezi, és PC-n sincs gond azzal, hogy évente jönnek új és gyorsabb hardverek, ugyan mi baj lehetne ebből a konzolok tekintetében…

Mark Cerny azonban a Sony tegnapi előadásán egy kicsit belement a részletekbe, és konkrét magyarázatok nélkül sorolt fel pár problémát, amire a felhasználók nem igazán gondolnak. Emiatt kezd kialakulni egy alapvető félreértés, hogy a PlayStation 5-nek a kompatibilitással gondja lesz, pedig valójában nem, az Xbox Series X esetében is ugyanilyen nehézségekkel néz szembe a Microsoft. A részletek megértése érdekében azonban gondosabban elemezzük, hogy miért is nem olyan egyszerű ez a kérdés, mint például PC-n.

Kezdjük azzal, hogy a korábbi és az új generációs konzolok a legkevésbé sem PC-k, bármennyire is hasonlít a bennük rejlő lapka az AMD egyes dizájnjaihoz. Teljesen máshogy érik el magát a hardvert a fejlesztők, mint amire lehetőség van egy személyi számítógépen. Talán a legfőbb különbség az, hogy amíg PC-n az operációs rendszer kezeli a memóriaallokációkat, addig a konzolokon van egy játékok által kifejezetten sűrűn használt működési mód arra, hogy a memória feletti uralmat közvetlenül megkapja a futtatott alkalmazás. Emiatt mondják meg az érintett cégek, hogy a hardver összes memóriakapacitásából, mennyi hozzáférhető a fejlesztők számára. Ez nagyjából a teljes memória 70-80%-a szokott lenni, nem ez a lényeg, hanem az elérhetőségre vonatkozó különbség. Amíg ugyanis PC-n minden memóriára vonatkozó műveletet az operációs rendszer dolgoz fel, addig konzolokon ebbe bele sem szól, a programfuttatáshoz kijelölt memóriát még csak nem is látja. A maradékon természetesen fut a háttérben, és biztosítja az alapvető működéshez szükséges feladatokat.

A fenti eltérés már drámai különbséget jelent a PC és a konzol között, és amíg elméletben egy PC-nél a futtathatóság szempontjából nem gond, ha valaki 8 vagy 32 GB memóriával indít el egy játékot (a teljesítmény tekintetében lehetnek bajok persze), addig a konzolon az eltérő memóriamennyiség már a program allokációs stratégiáját is befolyásolhatja. Persze ez ritka tényezőnek számít, de nem véletlen, hogy az Xbox One X hiába rendelkezik több memóriával, mint a kisebb Xbox One gépek, az erősebb konzolra nem felkészített játékokat egy olyan módban futtatja, amely a memória egy részét lezárja az alkalmazás előtt.

A memória persze csak egy gond a sok közül. Ott van még a processzor felépítéséhez való igazodás, a grafikus vezérlő számára szállított bináris kód kérdése, ezek mind nehezítő tényezők. Például PC-n nem igazán veszik figyelembe a fejlesztésnél a processzorok dizájnját, miközben a konzolon azért alkalmazkodnak hozzá. Az előző generációban az jelentette a tipikus nehézséget, hogy nem minden processzormag érte el ugyanolyan késleltetés mellett a kettébontott, bizonyos magok között megosztott másodlagos gyorsítótárat. Ezt specifikusan kezelték az alkalmazások, hogy ebből ne legyen gyakorlati gond. A visszafelé kompatibilitásnál az érintett kérdést okvetlenül rendezni kell, mert más lett maga a processzor.

Nagyobb gondot jelentenek a binárisan lefordított shaderek. PC-n ilyen egyáltalán nincs. Ez az oka annak, hogy egy korábban kiadott alkalmazás fut a később megjelenő grafikus vezérlőkön. Az új konzoloknál az AMD-nek kellett arról gondoskodnia, hogy a frissebb grafikus architektúrában a korábbi dizájnok utasításai megmaradjanak, vagy legalább hasonló operációkra legyenek felkészítve, hogy az emuláció kifejezetten könnyűvé váljon. Tehát itt sem az történik, hogy magát a binárist szó nélkül elfogadja az új hardver, csupán a tervezés a kompatibilitás figyelembe vételével zajlott, de egy alapvető fordítási réteg azért kell a régi alkalmazások és a friss grafikus vezérlő közé.

És akkor ezeken túl még olyan általánosabb kérdések is felmerülnek, hogy az adott videojáték-motor megfelelő szinkronizációt biztosít-e eltérő teljesítményű hardveren, vagy szimplán összeomlik a játékmenet, amitől folyamatosan jönnek a hibák, így végeredményben valahogy korlátozni kell az új konzolokat, hogy az eredeti kód limitjeihez igazodjanak. Ez talán az egyik legbonyolultabb probléma, ugyanis amíg a fentebb említett dolgok inkább hardveres tényezők, tehát relatíve jól lehet rájuk reagálni általános formában, addig ez kizárólag szoftverből ered. Az optimális módszer az eredeti kód átírása lenne, de ez igen ritka esetben fog megtörténni, így a Microsoft és a Sony is arra kényszerül, hogy elővegyen minden egyes, Xbox One és PlayStation 4 konzolcsaládon futó alkalmazást, majd egyenként tesztelje őket, hogy gondot jelent-e számukra a nagyobb teljesítményű gép. Ha nem, vagy esetleg a program eleve tartalmaz beépített sebességlimiteket, akkor az a legjobb eshetőség, de ellenkező esetben létre kell hozni egy speciális, pusztán az adott játékra szabott működési módot, amely valamilyen formában limitálja az új gépeket, hogy a futtatni kívánt kód ne adja meg magát rajtuk. Alapvetően erre utalt Mark Cerny is, csak kevésbé érthetően fejtette ki, de maga a jelenség nem csak a Sony-t érinti, valószínűleg azt hitte, hogy ez evidens.

Talán még felmerülhet az a kérdés, hogy miért nem úgy csinálja a Microsoft és a Sony, ahogy a PC-kben szokás. Megoldana sok ilyen gondot, ha az operációs rendszer kezelné a teljes memóriát, ha a grafikus vezérlőre nem binárist szállítanának a fejlesztők, hanem lenne egy köztes nyelv, és hasonlók. Erre is van válasz. Az előbbiek PC-kben jók, mert rengeteg eltérő konfiguráció van, de nagy árat is kell fizetni a kompatibilitás oltárán. Ha az operációs rendszer bábáskodik a memória felett, akkor az bizony nem hatékony. Ilyen működés mellett sokkal több memóriát kellene fizikailag tenni a konzolokba, hiszen nem lehet alkalmazásspecifikusra szabni az allokációt. Lenne egy mindenre jó stratégia, ami sehol sem gyors, alapvetően pazarló, lényegében annyi előnye van, hogy stabilan működik eltérő memóriamennyiséggel. Ugyanez igaz a köztes nyelvre, viszont ez komoly, assembly szintű optimalizálási lehetőségektől fosztaná meg a fejlesztőket, amivel ugyanazon a hardveren is jelentősen romlana bizonyos feladatok teljesítménye.

Ha a visszafelé kompatibilitás kardinális kérdés, akkor úgy lehetne tökéletesen kivitelezni, ha az új konzolgeneráció tartalmazná az előző hardverét. Csak ez piszok drága megoldás lenne, és inkább vállalják a cégek, hogy egyenként végigmennek minden kiadott játékon, hogy végeredményben megszabadítsák a hardvert egy jelentős többletköltségtől. Csúnyán fogalmazva ez az olcsóbb irány, de van némi esélye annak, hogy bizonyos játékok csak a start után lesznek futtathatók, sőt, az sem kizárt, hogy egyes címek komolyabb problémákba ütköznek, így sokáig kell majd rájuk várni, ha egyáltalán áthidalhatók a specifikusan felmerült gondok a kód módosítása nélkül.

Azóta történt

Előzmények

Hirdetés