Hirdetés

PlayStation 4 a Naughty Dog szemével

A Naughty Dog néven működő stúdiót még talán a PC-sek is ismerik, hiszen olyan játékokat raktak le az asztalra, mint az Uncharted sorozat, illetve az előző év legjobb alkotásának tartott The Last Of Us. Gyakorlatilag mára a Sony „sztárfejlesztőinek” számítanak, hiszen nagyon jól kihasználták a PlayStation 3 képességeit, és természetesen ugyanerre készülnek a PlayStation 4 kapcsán is. Az utóbbi gépre azonban egyelőre csak titokban koncentrált a csapat, de nemrég tartottak egy előadást, melyen Jason Gregory, a Naughty Dog vezető programozója fejtette ki nézeteit a PlayStation 4 programozásával kapcsolatban, különösen figyelve a PlayStation 3-ról való áttérés elemzésére.


A PlayStation 3 képességeinek határait feszegető The Last Of Us

A Jason Gregory elsődlegesen beszélt arról, hogy mégis hogyan kell egy AAA kategóriás játékhoz nekiállni, illetve menedzselni a teljes csapatot, hogy egyszer se csússzon ki a talaj a fejlesztés alól. Ennek érdekében a Naughty Dog többek között a többi stúdiótól némileg eltérő struktúrával működik, mindenki beleláthat mindenbe, illetve érdekes, hogy nagyon sok információt megosztanak más stúdiókkal, melyek műhelytitkok is lehetnek, amit a legtöbb cég féltve őriz. A Naughty Dog szerint azonban ezek kiadása nem gond, mivel nem elég, ha valaki tudja a helyes utat, járni is kell rajta.

Hirdetés

Vezető programozóról lévén szó Jason Gregory a technológiai részre hegyezte ki az előadást. A fejlesztés legfontosabb eleme azonban a munka tökéletes összehangolása, amelyet több, jellemzően egyszerű megoldással ér el a cég. A technikai oldalon viszont a legfontosabb dolog a rendelkezésre álló memória hatékony használata. Ez a PC-től eltérő felfogás, hiszen a konzolokon a szó kisarkított értelmében nincs végtelen mennyiségű memória. Alapvetően PC-n sincs, de az operációs rendszer gondoskodik arról, hogy ha el is fogy a fizikai memória, akkor is fusson tovább a program. Ez ugyan nem lesz kellemes, de működik. A konzolokon viszont bele kell férni a PlayStation 3 esetében 256 MB-ba, míg a PlayStation 4-nél 5 GB-ba. Mindezek mellett nagyon kritikus a memóriamenedzsment. A memória allokációja többek között nem ingyenes, még akkor sem, ha annak látszik. Ez igaz konzolra és PC-re is. Utóbbi gépeken nem lehet sokat tenni, mivel a konfigurációk különböznek egymástól, így muszáj a hagyományos utat járni, és szépen lefoglalgatni a memóriaterületeket. A konzolok esetében viszont a memória mérete fix. Éppen ezért sokkal kifizetőbb már az elején lefoglalni a teljes kapacitást, vagy annak egy akkora részét, ami elég lesz, és a továbbiakban az allokációt manuálisan kell elvégezni. Ezzel kapcsolatban a legnagyobb gond a memória töredezése. Az egyes adatblokkok ugyanis nem ugyanolyan méretűek, így ezek felszabadításával viszonylag sok helyhez lehet jutni, de esetleg az új blokk nem fér be a régi helyére, így a program még azelőtt kifut a memóriából, mielőtt ténylegesen betelt volna.

A Naughty Dog a fenti problémára különböző koncepciókat fejlesztett. Az egyik, hogy az adatblokkok ugyanolyan méretűek legyenek, aminek kivitelezése sajnos nem egyszerű. Viszont ha az egyik blokk által elfoglalt memóriahelyet felszabadítja a program, akkor az új blokk pont be fog férni a helyére. A másik opció eltérő méretű blokkok esetére vonatkozik, és a lefoglalt memória elején és végén kezdődik el a blokkok beírása. Majd a legutoljára beírt blokk felszabadításával szinte biztos, hogy bármilyen blokk beírható a helyére. Az előbbi megoldásokkal azonban még mindig vannak problémák. A Naughty Dog éppen ezért egy érdekes rendszert alkalmaz. Mivel az allokáció a már lefoglalt memórián belül nagyon gyors, így igen kedvező dolgokat is meg lehet tenni a konzolon. Például azt, hogy az egyes blokkok között felszabadított részekre egyszerűen rátolható a következő blokk. Ezzel az a gond, hogy a pointer ilyenkor rossz címre fog mutatni, hiszen a memóriában tárolt adat konkrétan elmozdult, erre viszont be van építve a programba egy mechanizmus, ami a mozgatás után korrigálja a pointereket, így azok mindig jó helyre mutatnak. Jason Gregory szerint ez a rendszer nagyon trükkös és rengeteg munkát igényel a megvalósítása, de ha egyszer működik, akkor tökéletes hatékonysággal használható ki a hardver.

A memórián túllépve a processzor került középpontba. Naughty Dog mindig is nagyon hatékonyan használta ki a PlayStation 3 erőforrásait. Ennek lényegében csak az volt az alapja, hogy ami nem megy jól a hardvernek azt nem érdemes erőltetni a program oldalán. Éppen ezért nagyon fontos megismerni a konzol képességeit, hiszen csak így lehet direkten optimalizálni a hardverre. A PlayStation 3 és a PlayStation 4 lényegében többmagos rendszerek, így koncepcionálisan akkora eltérés azért nincs köztük. Habár az kiemelendő, hogy a Cell esetében a feltételes elágazásokat, főleg a ciklusokban nagyon ajánlott volt elkerülni, míg a Jaguar magoknak ez nem okoz gondot. Jason Gregory szerint a PlayStation 4 processzora esetében arra kell figyelni, hogy a processzormagok két blokkba rendeződnek, egy-egy megosztott L2 gyorsítótárral. Utóbbi elérése blokkon belül 26 ciklus, ami rendben is van, de az egyik blokk processzormagja a másik blokk L2 gyorsítótárát 190 ciklus alatt éri el, ami már sok, de ezt szerencsére nagyon egyszerűen lehet kezelni a programkódban.


[+]

A Naughty Dog egyébként PlayStation 3-hoz egyfajta job (munka) rendszert használt, amit manapság egyre több fejlesztő bevezet. Ennek az alapja, hogy jobb lehet a többszálú feldolgozás hatékonysága, mivel van egy főszál, ami fut az egyik processzormagon és kioszt különböző munkákat a többi processzormag számára. A koncepció egyetlen hátránya, hogy az egy- és kétmagos processzorokon leginkább lassulást okoz a hagyományos programozási modellhez képest, de mivel ma már ezek inkább kifutó termékek, így a fejlesztők bátrabban nyúlnak hozzá ehhez a koncepcióhoz a három, négy, vagy még több maggal rendelkező processzorokon elérhető gyorsulást figyelembe véve.

A PlayStation 3-on a Cell processzor fő magjának számító PPU irányította a munkafolyamatokat, míg a hat darab SPU-n futottak a job feladatok. A PlayStation 4-be került egyedi tervezésű AMD APU esetében a rendszer annyiban módosult, hogy a fejlesztők számára elérhető hat darab processzormag közül az egyik az irányító, míg a másik öt a job feladatokat futtatja. Aktív résztvevő lett azonban az integrált grafikus vezérlő is, ami Jason Gregory szerint bőven megfelel arra, hogy Full HD-ben 60 képkocka/másodperces sebességgel futtassa a játékokat, sőt leginkább túl erősnek is számít, így a Naughty Dog pár feldolgozót statikusan leválaszt az IGP-ről, és azon általános számítási feladatokat futtatnak, amivel megoldható a folyadékok, vagy más fizikai hatások szimulációja. Erre a stúdió GPGPU Wavefronts néven utal.

Azt még nem tudni, hogy a Naughty Dog mivel készül a PlayStation 4-re, de az látszik, hogy kielemezték a hardvert. Ha legalább olyan címeket hoznak a gépre, mint amiket hoztak a PlayStation 3-ra, akkor a Sony biztosan sokat nyer a „sztárfejlesztőivel”.

  • Kapcsolódó cégek:
  • Sony

Azóta történt

Előzmények

Hirdetés