V čem je háček
Kapitoly článků
Pokud píšete kód nějaké „supermoderní“ hry, pak potřebujete kromě dokonalé znalosti samotného DirectX rozhraní také co nejlepší spolupráci s výrobci GPU, kteří realizují jeho praktickou implementaci. Potřebujete vědět, jak co nejlépe v rámci možností napsat/rozběhat váš kód na jejich GPU a potřebujete mít co nejlepší podporu v ovladačích Catalyst a GeForce. Jinými slovy potřebujete úzce spolupracovat. To se samozřejmě už dlouhá léta děje ve všech firmách, mezi výrobci grafik se pak samozřejmě bavíme hlavně o AMD a nVidii. Příslovečným vrcholem co nejlepší spolupráce s herními vývojáři je pak u nVidia program TWIMTBP, o kterém si za chvíli opět něco povíme. Nyní ale zpátky k tématu.
Po uvedení tedy na základě spolupráce s ATI Developer Relations týmem a optimalizacích možných díky novému rozhraní DirectX 10.1 přišel Assassin's Creed na svět s optimalizacemi pro lepší a svižnější chod tam, kde systém nabízí DirectX 10.1, tedy na strojích s grafikami AMD/ATI. A zde přichází na scénu skandál dle TG Daily. Assassin's Creed je, jako většina těch velkých novodobých her, vyvíjena v rámci nVidia TWIMTBP. Pro herní vývojáře je velmi výhodné být v tomto programu, neboť to znamená výraznou pomoc při vývoji a optimalizacích kódu hry, kterou nVidia poskytuje zdarma (tedy, ono to tak zcela zdarma nebude, takové logo nVidia TWIMTBP, které hráč uvidí při spuštění hry je samo o sobě dost dobrá reklama).
Okamžitě po zveřejnění informací o patchi odstraňujícím výhodu karet AMD oproti nVidia se na různých fórech a jinde začaly objevovat dohady na téma, že nVidia nehraje fér a vyhrožuje Ubisoftu. TG Daily v této věci dostali několik emailů od různých výrobců grafických karet, a to z ATI i nVidia tábora, což je dovedlo k vlastnímu malému vyšetřování:
„Jedna z věcí, kterou vývojáři hry zatím nedokázali uspokojivě vyvětlit, je to, jakými způsoby je pod DirectX 10.1 a DirectX 10.0 verzemi realizován antialiasing. Pod DirectX 10.0 je nemožné přistupovat k informacím pro každý vzorek z depth bufferu, což vede ke zpomalení operací antialiasingu. Verze 10.1 naproti tomu umožňuje shader jednotkám přístup ke všem antialiasing bufferům, takže tento problém zde není.“
Na základě tří nezávislých informací od softarových vývojářů lze tuto záležitost vysledovat na všech DirectX 10 hrách, jeden z vývojářů blízkých Ubisoft, který si však přál zůstat v anonymitě, k tomu dodává, že firma se svým vysvětlením ohledně stažení DirectX 10.1 bruslí na tenkém ledě:
„Způsob jakým DirectX 10.1 fungují je, že odstraňují nadměrné množství výpočetních průchodů a eliminují režii, což se pod DirectX 10.0 děje. Právě režie implementovaná v DirectX 10.0 je hlavním problémem a DirectX 10.1 ji poměrně elegantně řeší.“
Další vývojář pracující s DirectX 10.1 přidává další komentář:
„Samozřejmě že odstraňuje renderovací průchod! Takto to 10.1 dělá! Proč nikdo nepoukazuje na to, že korektní způsob, jak to implementovat je ten, jakým je to implementováno v 10.1. Stejné efekty v 10.1 zvládnete jedním průchodem, zatímco v 10.0 potřebujete dva.“
A do třetice vývojář pracující na multiplatformním vývoji:
„Náš port DX10.1 kódu se nijak neliší od DirectX 10.0, ale pokud vlastníte DirectX 10.1 grafiku, ať již od nVidie nebo ATI, výkon FSAA vzroste.“
Tolik tedy tři nejmenovaní vývojáři, ale co na to v následném telefonním hovoru PR představitel Ubisoftu, Michael Beadle a Jade Raymond, producent hry? Dle nich bylo rozhodnutí odstranit DirectX 10.1 podporu učiněno samotnými vývojáři hry. Nebyl zde prý žádný vnější vliv, který by naznačoval, že by na toto rozhodnutí měla vliv nVidia. DirectX 10.1 vlastnosti implementované a otestované na DirectX 10.1 mašinách při vývoji hry nebyly otestovány na velké škále rozličných DirectX 10 strojů, což ve výsledku vedlo právě k problémům se stabilitou.
Ubisoft tak říká, že selhalo testovací oddělení, byl vydán nehotový a neodladěný kód, který způsobuje padání na starších kartách, ať již GeForce (8, 9) nebo Radeonech 2900 a dalších.
Nicméně přestože na základě vyjádření v začátku článku lze usuzovat na to, že v Ubisoftu tedy tento nehotový DirectX 10.1 kód dokončí a zpět do hry přidají, zatím nikde ani vidu po oficální informaci, že tomu tak bude. Tím se obratem vracíme k drbům na téma vyhrožování ze strany nVidie. Dohadhy hovoří o tom, že nVidia by mohla hrozit třeba ukončením vzájemných reklamních vztahů, které jen tak mimochodem prý činí co do objemu nějaké dva milióny dolarů. A asi jen hloupý majitel herního studia či vydavatel hry by kvůli jedné hře pohřbil takový kšeft, zvláště když je to jen jedna část vzájemných firemních vztahů.
Derek Perez, PR ředitel nVidie, se proti takovému nařčení ostře ohrazuje. Firma prý nikdy Ubisoftu za nic neplatila a nikdy ani platit nebude, celé to dění kolem patche na AC je jen falešná spekulace. Naproti tomu Michael Beadle z Ubisoftu reagoval na dotaz tvrzením, že tu byly nějaké [reklamní] peníze, ale daná transakce je již uzavřena a nemá nic do činení s vývojářkým týmem nebo hrou Assassin's Creed. Jinými slovy nVidia tvrdí, že Ubisoftu za nic neplatila a Ubisoft tvrdí, že platila, ale už je to uzavřeno. Tož babo raď.
Jen pro úplnost dodejme, že AMD má taktéž finanční vztah podobného charaketeru, ale v řádově menších finančních objemech.
Pokusme se tedy shrnout body a dosadit je do kontextu…
- 2006 - nVidia uvádí GeForce 8800, které se stávají hitem, přinášejí obrovské zisky
- 2007 - ATI, nyní již AMD, po delších odkladech přispěchává s Radeony HD 2900, které tak úspěšné nejsou
- říjen 2007 - nVidia uvádí GeForce 8800 GT a GTS 512, v podstatě jen „die shrink“ bez DX 10.1
- listopad 2007 - DirectX SDK přináší finální specifikace verze 10.1
- listopad 2007 - vychází Assassin's Creed pro PS2 a Xbox 360
- listopad 2007 - AMD uvádí Radeony HD 3800 s DirectX 10.1
- 2008 - nVidia recykluje G92 v nových kartách řady GeForce 9, přidává GPU G94 (GeForce 9600), vše stále jen s DirectX 10.0
- rekordní zisky nVidie vedou k vyhlášení americkou společností roku magazínem Forbes.
- leden 2008 - ATI uvádí duální Radeon HD 3870 X2
- únor 2008 - vychází SP1 pro Windows Vista, přináší DirectX 10.1
- duben 2008 - vychází Assassin's Creed pro Windows, hra s DirectX 10.1 podporou, vyvíjená mimo jiné v rámci TWIMTBP
- duben 2008 - hlášení o chybách a nestabilitě, Ubisoft oznamuje přípravu patche odstraňujícího DX 10.1 podporu.