13. 11. 2019

Herné konzoly očami vývojárov


Debugger je utilita, či softvérový nástroj, ktorý sa používa ku hľadaniu chýb pri vývoji softvéru vo fáze ladenia, teda de-buggovania. Umožňuje zobraziť zdrojový kód daného programu a vývojárske prostredie ho má buď integrované alebo ho spúšťa ako externý program a v jednom okne môžte kódovať aj debugovať. Je to nevyhnutná, povinná výbava /!!/, veľmi to urýchľuje vývoj a ešte aj také bezvýznamné platformy ako chystaný 8 bit ZX Spectrum Next to má v SDK "štandarde".

Microsoft PIX je veľmi výkonný debugger a nesmierne dobre naprogramovaný a užitočný ladič výkonu aplikácie/hry vyvinutý hlavne pre konzolu Xbox /pre ten úplne prvý/, neskôr adaptovaný aj pre PC pod DirectX. Zachytáva všetky relevantné stavy CPU, GPU a pamäte. Na CPU cyklus, GPU pixel a pamäťový bit presne vidíte v reálnom čase, kde vám hra "stráca" drahocenný čas, kde je úzke miest, kde skrytá rezerva.

Spiderman pre PS4 - aj v tomto baráku /San Mateo, Kalifornia/ sa na tom pracovalo.

  • PlayStation 1:  všetko je tam jednoduché a priamočiare. Ak tomu venujete zopár rokov života, tak pochopíte sám PS1 od podlahy po strop a nikoho viac už k sebe nepotrebujete. V porovnaní s tým, čo zvládlo PC v tých časoch, to bol úžasný stroj. /Pozn.: PS1 CPU na silikóne obsahovalo napríklad aj GTE, engine pre HW akceleráciu geometrických transformácií a nasvietenia, ktoré herné PC dostalo oveľa oveľa neskôr/. Pri každom z prvých krokov pri PS1 ste si však položil otázku "To myslia vážne, že to mám urobiť takto? Dopekla. Dajte mi zopár týždňov nech to do seba vsiaknem". Prakticky žiaden debugger pri štarte.
  • N64: "nejako" to fungovalo.Väčšinou to bolo aj rýchle a flexibilné. Nikdy ste však nemali pocit, že konzolu využívate na maximum jej možností /Pozn. má pravdu, nintendo malo v defaulte málo výkonný mikrokód pre GPU, čo sa zmenilo až príliš neskoro ku koncu života konzoly/. Až tak to ale nevadili, lebo aj prasácky urobené hry vyzerali lepšie ako väčšina tých na PS1. Každý megabajt na kártridži mal bez srandy cenu zlata. Malo to debugger ale sám bol veľmi zabugovaný a mali s tým veľa trpkých high-tech kóderských historiek.
  • Dreamcast: CPU - Hitachi SH-4 bolo čudné /Pozn. RISC procák s SIMD geometry enginom ala GTE v PS1/. GPU bolo čudné /PowerVR s jeho tiled based grafikou, ktorá nielen touto fičúrou predbiehala PC grafiky, ale dosť sme hádali ako ich rutinne používať/. MS sa z toho snažil s WinCE urobiť niečo ako DirectX PC ale príliš to nefungovalo. Inak však pohode ale všetci sme počuli, že PS2 bude super.
  • PlayStation 2: ste obšťastnený 25 centimetrov hrubým manuálom napísaným japoncami. Prvé prečítanie prosté akekoľvek logiky. Pri druhom dáva tretia kapitola zmysel, lebo už poznáte obsah tej ôsmej. Mašina má 10 /!/ rôznych procesorov /IOP, 2xSPU, MDEC, R5900ka, 2xVU, GIF, VIF., GS/, 6 rôznych pamäťových subsystémov /IOP, SPU, CPU, VU, GS/, ktoré pracujú úplne odlišným spôsobom. Možnosti ohromné, množstvo mentálnej práce potrebnej to zvládnuť nezmerateľné. Niektorým tímom trvalo mesiac, kým zobrazili na telke prvý polygón, pretože to vyžaduje žonglovanie dát medzi R5900-VIF-VU-GIF-GS bez spätnej väzby čo robíte zle. Ak ste to tam však dokázali dostať, boli výsledky bezvadné. Bol tam debugger pre CPU, pre ten zvyšok ste to museli napísať "bez chýb". Hrozné.
  • GameCube: dokázal všetko ale v štýle - viem všetko, majster však ani v jednom. GPU nebolo až tak rýchle, ale jeho skutočné možnosti boli objektívne často tragicky nevyužívané. CPU bolo pripojené na RAM s neskutočne nízkou latenciou /pozn. 24 mega 1T-SRAM/ s perfektným, blízko teoretického maxima, využitím zbernice. Akúkoľvek komplikovanú data štruktúru to spapalo bez problémov. Tá druhá RAM zas bola slimák s extra vysokou latenciou /pozn. 16 mega A-DRAM na 8 bit buse/. Rozhodiť si to medzi nimi musíte manuálne sami. SIMD jednotka CPU je ani ryba ani rak - 2xfp výpočty na cyklus namiesto bežných 1 alebo 4 /pozn. išlo v podstate o 1xfp duplikovane, tzv. 2x32 bit SIMD "paired singles"/
  • PSP: tvárilo sa to ako zvonku "orezaná" PS2ka ale zvnútra skôr ako naturbená PS1. Skúsili tam pre uľahčenie kóderom prilepiť množstvo HW udelátok, ale dosť neohrabane a často s pofidérnou funkcionalitou. Rovnaké množstvo RAM ako PS2, teda 32 mega, ale 8 mega si SONY vyhradilo pre seba, ups /pozn. časom sa dalo z tých 8 mega dalo urvať 4 mega nazad za istých "podmienok", volatílna RAM/. A pomalá optická UMD mechanika s 600ms seek časom, uf. Bolo to však úplne jedno, lebo v malom rozlíšení /pozn. 480 × 272/ ste mali fillrate ako PS2 !! A s neskorším firmvérom s "odomknutím" frekvencie CPU a GPU to bolo rýchle ako ďábel. /pozn. CPU z 222 na 33Mhz, GPU z 111 na 166Mhz/. Debugger od SN systems a Performance Tuner boli OK.
  • Xbox: vyzerá ako PC, breše to ako PC a je to PC /pozn. intel Celeron na 733Mhz s custom Nvidia Geforce "3.5"/. Bolo tam niekoľko trikov ako konzolu dostať ďaleko za jej originálne kontra PC súčiastky. A bola to veľká radosť na tom čokoľvek vyvíjať. Špičkový CPU debugger a PIX /!!/ bola mana nebeská zoslaná na zem na krídlach anjelov.
  • Xbox360:  až na to, že IBM CPU je big-endian /pozn. Intel je little-endian, endianita je spôsob uloženia dát-bitov v pamäti-akumulátore/ to vyzeralo ako ďalšie PC. Opak je však pravdou. GPU je skutočne fantastické, až na malú EDRAM, ktorá mohla robiť problém, ak ste chceli splniť úvodnú, neskôr zrušenú požiadavku na "povinnú" 4xMSAA. A kristepane aké obludné množstvo SIMD registrov - 128 reg v 6 bankách,, každa SIMD 4xfp na cyklus. Do rúk dostane Direct9x a všetko funguje rovno z krabice a v hĺbke sa skrývajú ešte oveľa krajšie veci. Nakoniec to nevyzerá ani trochu ako DX9 mašina a funguje to ikskrát lepšie ako predtým. Opäť fantastický debugger a PIX !!
  • PlayStation 3: strašne sa tam na začiatku kazili USB porty a veľa kitov bolo preto reklamovaných. Na začiatku ste inak dostali 40 kilogramov dokumentácie s jednou extra A4kou, kde bolo v 24 krokoch vysvetlený postup zapnutia dev kitu. Všetci vyskúšali, mnohí zlýhali. Nakoniec to jeden dokázal a nám všetkým to pozapínal. Je tam iba jedno CPU /pozn. dvojvlaknové singel core IBM/. Tvári sa, že všetko zvládne, ale nie je tomu tak. SPE jednotky sú na prvý pohľad super ale na druhy nevedia nič z toho čo potrebujete vy. Obrovský problém, ak je dev tím malý, času málo a budget skromný. CPU debugger je OK. Žiaden SPE debugger. Na začiatku nič ako PIX /pozn. neskôr ICE team SONY spolu s SN systems toto manko dobehli a celé SDK bolo veľmi vyzrelé a komfortné/. GPU je veľké, preveľké sklamanie. Niektorí z nás sa teda zavŕtali hlboko do SPE jednotiek a zistili, že sú nekonečne rýchle. Bohužiaľ celý ich pracovný čas musí byť obetovaný na výváženie slabého GPU /pozn. SPE makali v 2 hlavných oblastiach - sub geometry engine, odstraňovanie/culling polygónov so scény a ako ďalšie pixel shader "malé" GPU/.
Bónus - pravdivý príbeh. Jeden chlapík okolo roku 2001 makal pre SONY Santa Monica /herné štúdium, God of War/. SONY inžinieri a Santovia hlasno mleli pantom o excelentných NURBs renderovacích schopnostiach PS2ky. /pozn. Non-uniform rational basis spline, geometria poskladaná nie z polygónov ale definovaná matematickou funkciou, priamka, krivka, je takmer nemožné s tým pracovať aplikačne herne a interakcia NURBs plochy a polygón meshu je nočná mora triedy Freddy Krueger a mimochodom na HW úrovni ju mala v podpore aj PSP, heh/. On a jeho partia sa teda 4 /!/ roky snažili vo voľnom čase tie NURBs z PS2ky dostať. Samozrejme márne, slepá ulička. Dodnes im tento "ftípek" nevedia odpustiť.

Vlastné poznámky. Playstation 5. Žiaden čudný HW. CPU a GPU vychádzajú z overených, z každej strany dobre známych architektúr, bez násľapných mín. Všetky custom úpravy, API extenzie sú dôkladne a dopredu prebrané s veľkými third party vývojármi a ušité adresne pre potreby hier. Dostatok RAM. Konečne SDD, smrť HDD. Low level prístup ku HW /CPU, GPU, SSD/ až na úroveň ručného ASM kódu pre SIMD grafickej karty, teda level ako pri 8 bitoch v 1984, ak si na to trúfnete. Špičkové SDK, debuggery, runtime analýza výkonu systému. Najlepšia, najvýkonnejšia, najflexibilnejšia, najviac user dev friendly playstation všetkých čias. Mať toto na stole chudák v čase PS2 asi mu praskne srdce. A hej - xbox sucks.