När man tittar på status för PC-utgåvor 2023 är det lätt att börja peka finger. Spelet är inte optimerat (vad det än betyder), eller så har utgivaren rusat ut det för snabbt, eller så kommer grafikkorten som Nvidia har sålt till oss med för lite VRAM. Men dessa anklagelser är i de flesta fall halvdana och förmätet, och även om de antyder verkligheten berättar de inte hela historien.
Innehåll
- Vad är problemet?
- Vad du kan göra rätt
- Vägen framåt för PC-portar
Rekommenderade videor
Jag ville veta vad som faktiskt pågick, så jag satte mig ner med några utvecklare för att förstå läget för PC-spel och varför så många utgåvor har kommit med så stora problem. Ännu viktigare, jag ville veta vad utvecklare och utgivare kan göra för att lösa dessa problem, och även om vägen framåt inte är tydlig, blir det uppenbart att utvecklare vet att det finns en problem.
Vad är problemet?
Först måste vi identifiera kärnproblemet med PC: n, särskilt när spel skickas i spelbara (om inte perfekta) tillstånd på konsoler men kommer fruktansvärt trasiga på PC. På hög nivå är problemet med PC: n som plattform just det som gör den så lockande i första hand: flexibilitet.
Relaterad
- Med exklusiva PC-partnerskap förlorar alla
- Konsoler har fortfarande en stor fördel, och det skadar PC-spel
- Hur ett viralt bodycam-spel lurade internet att tro att det var riktiga bilder
Marc Whitten, senior vice president och general manager för Unity Create, säger att "den stora mångfalden och variationen i PC-konfigurationer som spel kommer att spelas på... definitivt kan avslöja oväntade problem." Whitten pekar också på "olika operativsystem och nya drivrutinsuppdateringar, värme och latens och användaranpassning" som faktorer som kan spela in i problemet.
Det är svaret, jag är säker på, att de flesta antar är förklaringen.
Men problemet, enligt Whitten, är inte en brist på testning i sig. Han hävdar att spel "generellt testas omfattande under utvecklingen." Problemet kommer ner till omfattningen av olika konfigurationer som utvecklare behöver testa, samt variabler som de inte kan ta hänsyn till för.
Som ett tankeexperiment, låt oss säga att en utvecklare fäste 100 olika PC-konfigurationer för att testa, varierande CPU, GPU, Bagge, och hårddisk mellan dem. För ordens skull är det här en siffra jag bara drar fram, inte något som en utvecklare faktiskt refererade till som ett realistiskt mål. Ta nu alla dessa konfigurationer och multiplicera dem med dussintals ytterligare faktorer: Vilket OS använder du? Vilken version av det operativsystemet? Vad sägs om drivrutinsversionen? Vilka BIOS-inställningar är aktiverade? Har du någon programvara som körs i bakgrunden som Razer Synapse eller Corsair iCue?
Omfattningen av möjliga konfigurationer går långt utöver bara vilken CPU och GPU du har i ditt system, och dessa faktorer kan lätt multiplicera till tiotusentals scenarier som utvecklare helt enkelt inte kan ta hänsyn till för. I en idealisk värld kan utvecklare fixa de största problemen för de mest populära PC-konfigurationerna med de senaste drivrutinerna och OS-uppdateringarna, vilket bara lämnar små, specifika problem att lösa efter lanseringen.
Whitten är inte ensam om denna känsla heller. John Johanas, spelledare för Hi-Fi Rushoch Ondskan inom 2, säger att "det är ganska orealistiskt att tro att du kan göra en produkt som fungerar felfritt på vad känns som en obegränsad konfiguration av CPU: er, GPU: er, minne och mer troligt, vad som körs i bakgrund."
Hideyuki Miyashita, systemprogrammerare på Hi-Fi Rush, överens, men pekade specifikt på kostnaden för att optimera ett spel för alla möjliga konfigurationer: "In vad gäller PC-prestanda, vilket gör varje grafikfunktion skalbar för olika konfigurationer idealisk; utvecklingskostnaderna sätter dock ett övre tak för realistiskt skalbarhetsstöd.”
Det här är ingen ny historia. Den stora mängden PC-konfigurationer är den vanliga boven i allt från hur svårt det är att optimera spel på PC till varför vi inte har sett Xboxs snabba CV visas i Windows. Frågan är vad utvecklare kan göra trots den begränsade tid och pengar de har. Eftersom datorer inte blir enklare, och spel fortfarande kommer till plattformen trasiga.
Vad du kan göra rätt
Vi har många exempel på spel som gör fel PC-stöd i år. Ett primtal exempel är Star Wars Jedi: Survivor, som för närvarande har en "Blandad" recensionsstatus på Steam trots att det är ett av årets mest hyllade spel. Topprecensionen lyder: "En enda krasch skadade min 140-timmars 99,8% NG+ spara fil." Usch.
Jag kontaktade utvecklingsteamet för att få en uppfattning om vad som gick fel, och även om de initialt var mottagliga gick EA in och slutade skicka tillbaka mina e-postmeddelanden. Så istället för att titta på vilka spel som gör fel på PC, måste vi titta på vad utvecklare gör rätt.
Hi-Fi Rush är en främsta fallstudie. Det är ett nytt spel från en AAA-studio, och det använder den ökända Unreal Engine 4. Du kanske tror att det är att jämföra äpple med apelsiner mellan Hi-Fi Rush och ett spel som Star Wars Jedi: Survivor, men de har mer gemensamt än du kanske misstänker. Som Johanas påpekar, "... det faktum att spelet har en tecknad estetik kommer att ge vissa användare en uppfattning om att spelet inte borde vara ett problem att köra på någons dator. Realistiskt sett gör spelet många saker för att uppnå det utseende vi gick efter och ständigt en rörlig värld som är väldigt påfrestande... Jag visste det när jag gick in och såg till att vi försökte träffa dem förväntningar.”
Att sätta det målet från början verkade viktigt för Hi-Fi Rushs stabilitet. Utvecklarna noterar att det var ett designmål från början att bibehålla minst 60 bilder per sekund (fps) på grund av att det både är ett rytmspel och ett actionspel, där en brist på det märket skulle orsaka "hicka [som] kan resultera i en desynkronisering från musik och en upplevd dålig spelupplevelse", enligt Johanas.
Hur lyckades teamet på Tango Gameworks? Det kokar allmänt ner till tre huvudpunkter: noggrann VRAM-övervakning, asynkrona operationer och PSO-cache.
Enligt Kosuke Tanaka, ledande grafikprogrammerare för Hi-Fi Rush, teamet övervakade VRAM-användningen under varje steg i utvecklingen. Det inkluderar förstås att övervaka varje nivå, men också varje konstsektions VRAM-användning, att be artister att sänka textur eller mesh-minnesanvändning för att passa inom spelets budget. Detta är inte heller ovanligt inom spelutveckling.
Vad som fungerar i Hi-Fi Rush's fördel är dess starka konstnärliga riktning. Som Tanaka påpekar: "Vår konststil hjälpte oss lite eftersom vi inte kräver traditionella PBR-texturer som normala kartor, grovhet kartor eller metalliska kartor." Det är ett bevis på att arbeta med kreativa begränsningar, och hur det kan påverka stabiliteten i finalen produkt. Johanas säger att det inte var en fråga om en mindre omfattning – det handlade om att ha "inget behov av att gå stort utan anledning."
Jag frågade laget vad det lärde sig av Hi-Fi Rush att det skulle kunna genomföras i större, bredare projekt, men det är inte exakt hur Tango tar lärdomar från spelet. Faktum är att utvecklingsteamet berättade för mig att de lärde sig mycket mer om optimering från Ghostwire: Tokyo, som passar in i mer av den traditionella AAA-formen, och den förde in dessa idéer Hi-Fi Rush, inte tvärt om.
"Vi lärde oss mycket av vår kunskap om hur man hanterar stamning i spelet Hi-Fi Rush från vår erfarenhet av att optimera Ghostwire: Tokyo,” berättade Miyashita för mig. En stor del av det var Pipeline State Object (PSO) cachning. Det här är en funktion tillgänglig i Unreal Engine 4 som hjälper till att minska stamning genom att förkompilera shaders innan du kör spelet.
Huvudproblemet är att Unreal Engine 4 inte gör detta automatiskt, vilket leder till situationer där shaders måste kompilera medan du spelar spelet, vilket orsakar en stamning. Miyashita säger "det här resulterade i att vissa postprocesser och VFX orsakade stamning." Programmeraren säger också att PSO-cache är valfritt, så det måste vara ett specifikt fokus för utvecklaren.
Caching löser dock inte alla problem, och det är där asynkrona operationer kommer in. De Hi-Fi Rush teamet använde asynkron kompilering – där shaders kompileras separat från speltråden – men det var också ett stort fokus med tanke på att spelet kördes på Unreal Engine 4.
Som vi har sett med andra Unreal Engine 4-spel som Star Wars Jedi: Survivor och Redfall, motorn är inte särskilt bra på att skala till de många trådar som finns tillgängliga på moderna processorer. Som Miyashita förklarar: "Hur svårt det kan vara att stödja flergängad gängning beror mycket på den använda motorn arkitektur. Tyvärr kommer UE4 lite kort i detta avseende.”
I synnerhet placerar Unreal Engine 4, enligt utvecklaren, skapande av skådespelare (objekt/karaktärer) och widget (UI och överlagring) på samma CPU-tråd som spelet. Det betyder att närhelst spelet till exempel vill ladda in en ny karaktär så tar det prioritet på tråden. Miyashita säger "det här kan resultera i att komplexa skådespelare och widgetskapande blockerar speltråden under lång tid." Det är en stamning.
Lösningen är asynkrona operationer. Miyashita säger att teamet använder analysverktyg för att lokalisera vad processorn gör när objekt tas med in, och att de anstränger sig för att flytta dessa uppgifter till olika trådar så att spelet inte saktar ner ner. Denna specifika inriktning kan också hjälpa till med resursladdning. Att flytta dessa operationer till en parallell struktur kan undvika fallgroparna med strömmande stamning som finns i spel som Dött utrymme.
Vägen framåt för PC-portar
Spelen som kommer ut i katastrofala tillstånd idag började utvecklas för flera år sedan, så även om jag är hoppfull att PC-utgåvorna kommer att förbättras under året, kan det dröja flera år innan vi ser dessa kärnfrågor adresserad.
Whitten säger att "utvecklare är lika bekymrade över prestanda som spelare", och det är en känsla jag har hört flera gånger. Det finns sätt att optimera PC-releaser, från pre-caching shaders till asynkrona operationer till validering på en mängd olika hårdvara. Men verkligheten är att utvecklare inte kan redogöra för allt, på grund av tid eller pengar, och vanligtvis både och.
Vägen framåt här är enkel. Låt först utgivarna av dessa spel veta att du hellre ser en fördröjning än ett trasigt spel. Att skrika på utvecklare kommer inte att göra mycket - de känner redan till problemet, och de skulle förmodligen vilja att det löste lika mycket som du. För det andra, var försiktig med att köpa ett nytt PC-spel på releasedagen. Det är svårt att ha tålamod när man ser fram emot något (tro mig, jag vet), men väntar med att köpa ett spel tills problem har åtgärdats sänder en stark signal till utgivare att investera mer tid och resurser för att se till att spelen är polerade på PC.
Det är lätt att glömma att detta fortfarande är okänt territorium. Nu mer än någonsin kommer spel till PC samma dag som de kommer till konsoler, mycket till skillnad från för några år sedan där PC-portar kom månader (eller till och med år) senare. För två konsolgenerationer sedan skickades de flesta spel bara samma dag till en plattform; i föregående generation var det två. Nu förväntas utvecklare att skicka till minst tre plattformar samma dag, och ibland uppåt fem om de har en senaste generationens version.
Det är inte svårt att se varför det finns problem på PC med tanke på det sammanhanget, men förhoppningsvis är mer polerade utgåvor på väg.
Denna artikel är en del av ReSpec – en pågående kolumn varannan vecka som innehåller diskussioner, råd och djupgående rapportering om tekniken bakom PC-spel.
Redaktörens rekommendationer
- Jag försökte återuppleva det bortglömda arvet från Halo som en Mac-franchise - och det var en katastrof
- De sämsta PC-portarna genom tiderna – och varför de var så dåliga
- Star Wars Jedi: Survivor recenseras på Steam som en "total crap" PC-port
- Hur Unreal Engine 5 tar itu med det största problemet inom PC-spel
- AI kommer för dina PC-spel, men du borde vara exalterad, inte orolig