Nejdražší na zapojení přístupnosti do her je zápal vývojářů » Vortex
V úvodu našeho seriálu o přístupnosti jsme se seznámili s aktuální neutěšenou situací u soudobých videoher pro úplně nevidomé hráče. Potvrdili jsme si, že v tomto ohledu The Last of Us Part II stále nemá konkurenci, protože žádná jiná velká videohra na žádné jiné platformě, kterou by si mohl nevidomý člověk plnohodnotně zahrát, zatím neexistuje. Článek jsem uzavřel teaserem, že se blíží zásadní změna pro nevidomé hráče, protože jedna taková je téměř za dveřmi. A teď se tedy konečně blíže podíváme na to, jak se taková funkční, plnohodnotná přístupnost do soudobé videohry implementuje.
Contents
První kontakt
Když jsme ve streamu s Jirkou předváděli, jak se hraje The Last of Us Part II poslepu, neměl jsem tušení, k čemu to povede. Během několika dnů se mi ozval vývojář hry, kterou si zde rozebereme, jestli bych neměl zájem podílet se na jejím vývoji. Měl jsem mu poradit, jak nejlépe implementovat přístupnost pro nevidomé, aby byla hra hratelná i pro tuto cílovou skupinu přinejmenším stejně dobře jako právě The Last of Us Part II, a v ideálním případě ještě líp. Je myslím zřejmé, že zájem jsem měl, a to je ještě slabé slovo!
Prvních pár týdnů spolupráce probíhalo nesmírně intenzivně. Vlastně hned druhý den poté, co jsme se na ní domluvili, jsme několik hodin mluvili na Discordu. O hře jsem se dozvěděl mnohem víc, než bylo do té doby veřejně známo, abych mohl co nejdřív začít plánovat, jak její jednotlivé aspekty zpřístupnit. Její autor taky dostal spoustu informací, možná až příliš najednou, a sice základy filosofie, vnímání a chápání nevidomého, aby si i on mohl lépe představit, co je pro nevidomého hráče nezbytné, co je vítaný bonus a co by ho už naopak mohlo přehltit nebo dokonce odradit. A oba jsme zjistili, že nacházíme společnou řeč. Od slov k činům je dlouhá cesta, ale moje nadšení pro věc se od našeho prvního hovoru už jen a jen prohlubovalo.
Už teď, v pořád ještě nedokončené fázi, jsem na výsledek našeho společného úsilí natolik hrdý, že ho neváhám prezentovat veřejně.
Na tomto místě musím vyzdvihnout a pochválit autorův naprosto bezpříkladný pozitivní přístup k celému nápadu a spolupráci. Ještě teď, po tři čtvrtě roce, mě nepřestává fascinovat. Když měl jeden nebo druhý někdy pochybnosti, jestli se to či ono podaří dotáhnout do použitelné podoby, zápal toho druhého nakonec misky vah vždycky převážil k lepšímu. Už teď, v pořád ještě nedokončené fázi, jsem na výsledek našeho společného úsilí natolik hrdý, že ho neváhám prezentovat veřejně. Pokud jen tahle skutečnost sama o sobě není dostatečně vypovídající, pak už nic.
Jeden den jsme tedy vedli rozhovor, ve kterém jsme si navzájem sdělili úplné základy: Kterým směrem se vydat, co je pro přístupnost nejdůležitější, jak v principu implementovat klíčové funkce a čeho bychom chtěli nakonec dosáhnout. Druhý den jsem dostal na testování úplně první extrémně raný build, který položil základní kameny slepecké herní přístupnosti v České republice! K dokonalé hratelnosti nás čekala ještě dlouhá cesta, ale tímto dnem se pro mě osobně začaly přepisovat dějiny. Když spustíte 99 % současných videoher poslepu, můžete se maximálně kochat hudbou v hlavním menu, případně intrem. Já jsem si v naší tajemné hře už teď mohl všechno nastavit dle libosti, začít hrát, ukládat, načítat i mazat savy, zjistit, kde jsem, pohybovat se a do jisté míry interagovat. Neuvěřitelný, nepopsatelný zážitek!
U určitých herních žánrů se samozřejmě přístupnost nabízí a hodí víc než u jiných. Pokud bychom měli zpřístupňovat rychlou online střílečku jako třeba Battlefield nebo Call of Duty, a pokud možno tak, aby zůstala i nevidomým zachována schopnost být kompetitivní, musel bych ještě mnohem víc uvažovat, jak se kterého kroku zhostit. Tedy s daleko méně zřetelnou vizí konečného výsledku, než jakou jsem od začátku měl v tomto případě. Poměrně lineární, ale zato značně rozsáhlá příběhová akční adventura s prvky a atmosférou RPG, jakou je právě hra, o které budeme mluvit, má už jen díky svému žánru a zasazení daleko příznivější předpoklady a výchozí podmínky k tomu, aby byla zpřístupněna. Nic na tom nemění ani skutečnost, že se jedná o indie hru s omezeným rozpočtem a možnostmi. Argument, že na zpřístupnění svého titulu nemají prostředky, o kterém jsem mluvil v minulém článku, slýcháme i z úst malých nezávislých vývojářů přinejmenším stejně často jako od těch největších studií. V následujících odstavcích a článcích vám proto názorně ukážu, že odpověď na otázku, jestli ten který titul může nakonec být přístupný, závisí daleko spíš na přístupu, zájmu a ochotě jeho vývojářů než na prostředcích nebo lidských zdrojích. Zároveň uvidíte, že ani okolnost, že vývoj hry byl už v době, kdy jsem se k němu připojil, alespoň v polovině, nebyla v tomto případě na překážku a nemusí být ani u jiných her.
Cílem, který jsme si od začátku vytkli, ale bylo kompromisy dělat tak, aby co možná nejméně ovlivňovaly celkový zážitek ze hry.
Bez ohledu na to, jestli s přístupností počítáte od samého začátku vývoje nebo dokonce už ve fázi předprodukce a designu, nebo ji do svých plánů zahrnete až později, je logické a nezbytné počítat s určitými kompromisy. Ani v našem případě tak například nevidomému hráči nezprostředkováváme informace o přesné podobě každého jednotlivého nepřítele, předmětu nebo lokaci ve hře, o barvách, způsobu odívání apod. Takové informace na hratelnost, nebo jinými slovy na schopnost hru hrát tak, abyste ji měli pod kontrolou, vědomě se rozhodovali, co a proč právě děláte, a mohli si to navíc užít, ve výsledku nemají žádný vliv. A na atmosféru mají dopad jen minimální. Cílem, který jsme si od začátku vytkli, ale bylo kompromisy dělat tak, aby co možná nejméně ovlivňovaly celkový zážitek ze hry. Na rozdíl od obligátní The Last of Us Part II, u které se celkový dojem a zážitek ze hry na mnoha místech dost výrazně liší podle toho, jestli hru hrajete poslepu, nebo s vizuálním vjemem, my jsme se snažili poskytnout co možná rovnocenný zážitek všem bez rozdílu. Jedna skupina hráčů určité informace (jména a vzdálenost nepřátel, dostupnost interaktivních předmětů, vzhled lokace, cestu k cíli,…) vnímá zrakem, jiná zvukem nebo textem; všichni však dostávají tytéž informace ve stejnou chvíli.
Klíčovým principem filosofie, jak přístupnost v naší hře implementovat, bylo od začátku také chytré a předvídavé rozhodnutí napojit co možná nejvíc prvků přístupnosti na už existující herní mechanismy. Proč znovu vymýšlet kolo a dublovat si práci tím, že byste vytvářeli třeba celou slepeckou navigaci, když už dostatečně pokročilé navigační systémy ve hře máte? Navigace má od začátku detailní představu o tom, kde se hráč právě nachází a kam odsud může pokračovat. Nevidomý hráč jen zkrátka v některých případech má možnost nechat si touto navigací pomoct víc, než to potřebuje vidící. Neznamená to samozřejmě, že by nebylo potřeba vytvářet vůbec nic nového. Znamená to jen, že je dobré uvědomit si, kde všude si můžete ušetřit práci hospodárným využitím funkcí, které už ve své architektuře máte, jen třeba způsobem, na který jste dosud nepomysleli.
Konečně tedy nastal čas rozebrat si podrobně jednotlivé prvky přístupnosti, které hra musí mít, aby ji bylo možné poslepu hrát, všechny výzvy a nejasnosti, které jsme cestou překonávali, a zkušenosti, které jsme takto získali. Projdeme si naučnou stezku naší spolupráce, od prvních krůčků až k cíli, a u těch nejzajímavějších pamětihodností se na chvíli zastavíme a řekneme si k nim něco víc. A nejlepší bude začít, jak jinak, od začátku.
Text = základ všeho
Poučeným čtenářům, hráčům a vývojářům bude tato část možná připadat naprosto zřejmá. Stejně jako dům nebo jakýkoli jiný aspekt herního vývoje, ani přístupnost nemůžete budovat od střechy – musíte začít od základů. Přesto funkci předčítání textu v té či oné podobě několik odstavců věnuji, protože je potřeba zdůraznit, jak nezbytná pro nevidomé je.
Vidící hráč libovolné hry od okamžiku jejího spuštění automaticky intuitivně chápe, že se nachází v hlavním menu, že zde má možnost začít hrát a případně si vybrat obtížnost, změnit si některá nastavení podle vlastního přání nebo se dozvědět informace navíc, aniž by mu to někdo musel dlouze explicitně vysvětlovat. Když spustí vlastní hru, jednoduše zrakem vnímá a chápe, co se kolem něj děje, už z pohledu na monitor. Kde na pochopení jednotlivých mechanismů nestačí prostý pohled na vizuální stránku herního světa, dostane v řadě her srozumitelné interaktivní tutoriály přesně v okamžiku, kdy je potřebuje. Když sebere zbraň, brnění, munici, lékárničku nebo kterýkoli jiný předmět. Zkrátka vidí, co sebral. A ještě se může jediným rychlým pohledem přesvědčit o statistikách a atributech konkrétního předmětu podle dané hry; například tedy, jestli se zrovna v Horizon Forbidden West, Resident Evil Village nebo Returnalu zbraně rozbíjí, nebo vydrží neomezeně dlouho.
Vidící prostě vidí názvy jednotlivých položek menu a pozici kurzoru v něm. Nevidomí nemají jinou možnost, jak se tyto a všechny ostatní zmíněné věci dozvědět, než tak, že se je dočtou textově.
Pokud vaše hra nicméně neumí vlastní menu, rozhraní, vyskakovací hlášky a další textové informace číst, nebude vám nic platná pokročilá navigace ani dodatečná zvuková návěstí ušitá na míru nevidomým. Pokud nevidomý nebude vědět, ve kterém menu se zrovna nachází a na které jeho položce právě stojí kurzorem, nebude si všechny tyto ostatní vychytané funkce schopen ani zapnout. Nebude si schopen nic nastavit, vybrat obtížnost, ani se vůbec dostat do vlastní hry, natož se řídit tutoriály, orientovat se po světě a sbírat zbraně a ostatní předměty… Vidící prostě vidí názvy jednotlivých položek menu a pozici kurzoru v něm. Nevidomí nemají jinou možnost, jak se tyto a všechny ostatní zmíněné věci dozvědět, než tak, že se je dočtou textově, v tomto případě doslechnou, protože jim budou čteny syntetickým hlasem. Je to stejný nezbytný základ, který potřebují všichni hráči bez rozdílu; liší se jen forma, jakou ten který typ hráče tento základ vnímá.
Hra by měla hned při prvním spuštění hráče alespoň hlasem upozornit, jakým postupem si předčítání textu (TTS, syntézu řeči, menu / UI narration atd.) může zapnout. V ideálním případě by měla rovnou detekovat přítomnost mechanismu (odečítače obrazovky / screen readeru), který nevidomý hráč standardně používá při běžném ovládání systému, a aktivovat předčítání bez dalších otázek sama. Kdo odečítač v žádné podobě nepoužívá, nebude ničím obtěžován. Tento přístup úspěšně použila i právě The Last of Us Part II. Na PS4 pouze v USA, na PS5 už naštěstí ve všech regionech při spuštěném odečítači obrazovky začne hra své rozhraní od okamžiku prvního spuštění automaticky číst příslušným hlasem podle nastaveného jazyka systému. Samozřejmě i toto předčítání textu, stejně jako kteroukoli jinou volbu v nastavení, následně můžete kdykoli zase vypnout.
Číst… Ale jak?
I tak základní prvek slepecké přístupnosti může představovat větší implementační výzvu, než by se mohlo zdát. Existují přinejmenším dva relevantní přístupy, jak tento problém uchopit, a každý z nich má svá pro i proti a svá úskalí.
The Last of Us Part II se vydala cestou tzv. self-voicingu, tedy předem připravených nahrávek jednotlivých fragmentů řeči (slov, částí vět atd. – názvy předmětů, zbraní, položky menu, upozornění, dialogová okna), které se poté dynamicky přehrávají podle potřeby. Na jedné straně se tímto způsobem můžete coby first party konzolový vývojář vyhnout potenciálně dost značným licenčním poplatkům za hlasové syntézy pro jednotlivé podporované jazyky a máte za všech okolností naprosto precizní kontrolu nad tím, kdy kterou část textu přečíst (zde spíš přehrát). Víte, kdy hráč třeba neúmyslně stiskem tlačítka přerušil čtení potenciálně důležité zprávy, můžete je volně řadit za sebe, přeskakovat nedůležité, prioritizovat důležité, zopakovat ty přerušené atd.
Na druhou stranu ztrácíte flexibilitu v možnosti rychle a jednoduše kdykoli změnit nebo přidat libovolný textový řetězec. Pokud byste do své hry v patchi po vydání přidali např. novou zbraň, museli byste pořídit nahrávku jediného slova dejme tomu pro brokovnici ve všech jazycích, do kterých je vaše hra lokalizovaná. A to už vůbec nemluvím o více typech brokovnic, množných číslech nebo třeba 4. pádě („brokovnici“), dalších nahrávkách pro náboje do brokovnice, a takhle bych mohl pokračovat až do konce článku.
Tím, že se svou hru rozhodnete ozvučit tímto způsobem, značně zvětšujete její velikost na úložišti pro všechny uživatele a přidáváte třeba v případě právě The Last of Us Part II doslova tisíce souborů navíc. Zvyšujete, byť třeba zanedbatelně, nároky na operační paměť, musíte ještě víc přemýšlet o tom, jak se vypořádat s loadingy, protože musíte načítat víc dat, a především omezujete uživatele v každém jazyce na jedinou syntézu (hlas) dle vašeho výběru. Co když si uživatel chce změnit jeho rychlost, nebo mu celkově obtížně rozumí a rád by použil jiný? Řešit to formou DLC? V takovém případě si můžete rovnou ušetřit práci. Je zbytečné dělat DLC pro někoho, kdo vaši hru po vydání nainstaluje, spustí a po pár minutách hned zase odinstaluje, protože mu text sice čtete, ale nesrozumitelně, příliš pomalu, takže nemá šanci stíhat reagovat v akčních pasážích, nebo v jazyce, který neovládá. Nedokážu ani spočítat, kolikrát jsem v The Last of Us Part II zemřel, s českou i anglickou lokalizací, jen proto, že než se použitý hlas při zjišťování stavu mé postavy na vyžádání dostal až k tomu, kolik nábojů mi zbývá do aktuální zbraně, bylo už pozdě.
Největším nebezpečím tohoto řešení, které TLOU2 opět zdařile demonstruje, je nicméně prostá skutečnost, že čím víc textu potřebujete číst, tím víc práce budete mít. Naughty Dog proto přistoupil k poměrně nešťastnému kompromisu, kdy sice např. i v češtině je hra opatřena kompletní lokalizací včetně veškerých dialogových titulků, ale titulky zkrátka a dobře nejsou čteny. Nevidomí hráči, do jejichž mateřštiny hra není nadabovaná, ale textově lokalizovaná ano, a kteří neumí anglicky natolik, aby si mohli příběh plně vychutnat jen z anglických dialogů, tak mají jednoduše smůlu. Mohou hru hrát, mohou využívat všech dalších funkcí přístupnosti, craftovat, upgradovat své zbraně i postavu a všechno ostatní, ale neznají motivace postav ani žádné podrobnosti příběhu, který je jedním z hlavních pilířů hry.
Druhým možným řešením je jednoduše využít toho, že na všech hlavních platformách (Windows, macOS, Linux, iOS, Android, PlayStation i Xbox, pouze Nintendo Switch ne…) je v té či oné podobě už přítomný funkční a naprosto dostačující odečítač obrazovky. V případě Windows a Androidu, díky otevřenosti těchto systémů, dokonce existuje několik alternativ na výběr, mezi nimiž nevidomí uživatelé volí jen a pouze na základě vlastních preferencí, předchozích zkušeností, nadstavbových funkcí, jež ten který odečítač nabízí, a případně ceny, stejně jako uživatelé všech ostatních typů softwaru. Drtivá většina těchto odečítačů už řadu let nabízí vlastní API, jejichž prostřednictvím můžou vývojáři ostatních programů předávat textové informace, které potřebují přečíst, přímo odečítači k dalšímu zpracování.
Pokud váš program obsahuje kromě grafiky a ikon i standardní textovou vrstvu, nemusíte dělat v podstatě nic navíc.
Odpadá tak celá řada starostí spojených s tím, jakým způsobem, kterým hlasem, jakou rychlostí nebo snad v jakém konkrétním pořadí by měly tyto informace být uživateli prezentovány. Pokud váš program obsahuje kromě grafiky a ikon i standardní textovou vrstvu, nemusíte dělat v podstatě nic navíc. Pokud je nicméně designován primárně vizuálně, můžete na pozadí předávat textové alternativy k ikonám jednotlivých prvků uživatelského rozhraní přímo odečítači, aniž by doplnění těchto dodatečných textů (přístupnostních popisků – accessibility labels) jakkoli narušovalo design vašeho rozhraní.
Existuje dokonce několik knihoven nad těmito API (některé z nich i multiplatformní), které proces komunikace mezi odečítačem a vaším programem ještě víc abstrahují. Stačí se tedy naučit používat pouze jednu knihovnu navíc oproti vašemu běžnému workflow. Pokud některou z nich do svého programu, nebo v tomto případě hry, integrujete, nemusíte už vůbec řešit, který konkrétní odečítač a dokonce i na které konkrétní platformě neznámý koncový uživatel vlastně používá. Tím pádem vynaložíte v podstatě totožné úsilí bez ohledu na to, jestli budete potřebovat přečíst v celé aplikaci 10 řádků textu, nebo tisíce stránek dialogů v deseti jazycích.
Univerzální řešení přístupnosti? Na konzolích si ještě počkejte!
Když se tedy situace má takhle, nabízí se otázka, kde je vlastně problém a proč tu či onu formu čtení textu neobsahuje devět z deseti her napříč platformami dávno standardně. Dvěma slovy, protože konzole. Xbox od verze One a PlayStation 5 konečně také mají integrovaný velmi schopný odečítač obrazovky. Stejně jako historické verze dodnes používaných odečítačů na ostatních platformách však ty konzolové zatím neobsahují zmíněné API pro přímou komunikaci s externími programy. Ve zkratce to znamená, že sice tyto odečítače dokážou obsloužit celý operační systém (základní UI) své konzole, ale už nedokážou žádným způsobem odečítat text v jednotlivých aplikacích. Dokonce i ve chvíli, kdy se vám ve hře objeví standardní systémová klávesnice na obrazovce, jen proto, že po vás hra chce, abyste zadali své jméno, už si odečítač na PlayStationu a Xboxu neporadí. Přestože stejnou klávesnici v systému čte bez potíží, na úrovni jednotlivých aplikací je zatím bezmocný. Klávesnice je komponenta, kterou zná, ale tentokrát spuštěná v rozhraní, ke kterému zatím nemá žádným způsobem přístup.
Na rozdíl od desktopových a mobilních operačních systémů na konzolích zatím neexistují žádné standardní prvky uživatelského rozhraní, které by jednoduše vývojářům stačilo použít a tím by měli větší část slepecké přístupnosti vyřešenou automaticky a bez práce, protože systém na ně myslí. Na konzolích tomu tak není. Systém myslí na to, že se v něm samotném budou potřebovat pohybovat nevidomí hráči, ale ještě v tomto směru není tak daleko, aby myslel i na vývojáře, kteří by mohli chtít své tituly zpřístupnit nevidomým.
Nevím, jak vám, ale mně to v roce 2022 připadá smutné, tristní a neuvěřitelné. Subjektivně řečeno, dokud se pohybujete po domovské obrazovce, knihovně, příslušném storu dané platformy, v nastaveních atd, jste v pohodě. Ve chvíli, kdy spustíte kteroukoli nainstalovanou hru s výjimkou těch, které jsou na vás připravené a daly si práci navíc, octnete se o 30 let technologického vývoje zpátky. Ticho, nulová odezva, nic. Slepecký ekvivalent černé obrazovky. Nebudu chodit kolem horké kaše: Výrobci konzolí mají ještě pořád dost co dohánět…
Z předchozích řádků jste už tedy nejspíš pochopili, že pokud cílíte i na konzole, práci navíc v podobě prvního zmíněného řešení čtení textu se bohužel zatím nevyhnete. A aby toho nebylo málo, totéž platí i v případě, že používáte Unreal Engine (bez ohledu na verzi) nebo jiný z běžně rozšířených herních enginů. I pokud byste se v Unreal nebo jiném enginu rozhodli použít některou ze zmíněných multiplatformních knihoven na komunikaci s odečítači, na konzolích vám tato knihovna zatím fungovat nebude. Ze strany samotných odečítačů na konzolích chybí jakákoli technická podpora komunikace. Prostě nemáte které API volat, a tím nemáte funkčnost takové knihovny vůbec na čem postavit. Máte program, který by vaše texty mohl číst, ale nemáte s ním jak interagovat, jak mluvit. Nemáte s ním doslova společný jazyk.
V jednotě je síla
Nejjednodušší to v tomto ohledu mají ti vývojáři, kteří pracují v Unity, což je naštěstí případ i naší hry. V Unity Asset Storu je (aktuálně zdarma, původně za 70 USD) k dispozici UI Accessibility Plugin od MetalPop Games, který čtení textu řeší z větší části za vás. Jedná se právě o takovou mezičlánkovou knihovnu mezi uživatelovým odečítačem a vaší hrou. A protože jde o engine s příznačným názvem Unity, bude vám plugin bez další práce fungovat stejně dobře na Windows, macOS, iOS i Androidu. Zbytek už je na uživateli. Stejně jako nemáte kontrolu nad monitorem, grafickou kartou, rozlišením nebo frame ratem, s jakým bude vaši hru hrát běžný vidící hráč, nemusíte – a vlastně byste se ani neměli snažit – řešit, který odečítač používá kdo z vašich nevidomých hráčů. Tomu se říká síla multiplatformních nástrojů.
No jo, ale ty konzole… Za to, že na konzolích UAP nefunguje, bohužel nemůže Unity ani plugin jako takový, ale nedostatečná podpora na úrovni API ze strany samotných konzolí. Stále tedy před sebou máme určité výzvy k překonávání, stále máme co požadovat od výrobců konzolí, a to i v kontextu tak základního kamene veškeré slepecké přístupnosti, jakým je právě čtení textu.
Coming soon
Technický a spíše na vývojáře orientovaný úvod máme tímto za sebou. Dál už konečně přijde ke slovu kreativita, fantazie, originalita a zápal pro něco jiného, nového a neznámého. To, co budeme rozebírat v dalších článcích, a sice navigace, interakce, zvukové signály a mnoho dalšího, už bude moct využít kterýkoli vývojář na libovolné platformě, stejně jako samotní nedočkaví hráči. Prozatím se tedy rozloučím obehraným, ale stále platným sloganem: „The sky is the limit!“