Kort efter at have gennemført Portal 2 satte jeg mig ned med programmøren Jeep Barnett fra Valve, til en snak omkring udviklingen af spillet. Det blev til en meget teknisk men ganske spændende diskussion omkring udfordringerne med portaler, opgraderinger af spilmotoren og hvad Steam på PS3 er for en størrelse. Interviewet indeholder måske nogle ganske milde spoilers, men ikke af noget væsentligt.
Jeg er programmør. Jeg startede hos Valve med Portal 1, jeg var del af den oprindelige gruppe der kom ind med det spil, og jeg har arbejdet på en masse forskellige ting mellem Portal 1 og 2 - Left 4 Dead, Alien Swarm, alle dem der. Med Portal 2 har jeg mest arbejdet på co-op.
Programmering, det er et ret bredt felt
[Griner] Det er sandt. Mange folk i spilbranchen er meget specialiserede, især hos nogle firmaer. Sådan, "jeg er netværksfyren, jeg er grafikfyren" og sådan noget. Jeg er mere en generalist, og jeg vil sige at hos Valve er det meget almindeligt. Alle laver lidt af hvert. En anden ting er, at på Portal og Alien Swarm, og endda Portal 2 på co-op-siden, har der været ret få programmører, det har været ret små hold. Så hvad end der skal laves, så er jeg din mand. Så må jeg lære at lave hvad der nu skal laves.
Så alt fra gameplay-mekanikker til spilmotoren til...
Nemlig!

Hvad synes du har været den største enkelte udfordring med Portal 2?
At leve op til forventningerne har været den største udfordring, for det er ligesom hele spillet? Men vi har prøvet at regne ud... Der er et paradoks, som er, at hvis vi laver Portal 2 meget ligesom Portal 1, vil vi ikke føle at vi lever op til forventningen om at gøre noget nyt og anderledes, men hvis vi gør noget fuldstændig nyt og anderledes -
Så er det ikke længere Portal?
Præcis, så er det ikke længere Portal, det vil ikke leve op til forventningerne hos dem, der vil have en efterfølger, der ligger i forlængelse af det første spil. Så der lå en udfordring i virkelig at finde balancen mellem de to yderpunkter, og essentielt være i stand til at gøre noget nyt, men stadig få det til at føles som en fortsættelse af det der kom før. Så det var en af de største ting.
Med hensyn til mere programmeringsrelaterede opgaver, så er det at lave multiplayer-portaler svært af en hel masse grunde. At have to sæt portaler er sindsygt intenst i forhold til hvad det kræver af grafik-regnekraft. For med to portaler, hvis du kan se en portal gennem en portal, ender du med at skulle rendere verdenen fem gange, mener jeg det er, i værste fald. Men med fire portaler bliver det værste tilfælde 16 gange, og med splitscreen ender det med 32, fordi du er nødt til at rendere begge skærme, ikke? Så vi har måtte lave en sindssyg mængde optimering for at sikre, at det kører flydende i det værste scenarie.
Og på mange måder føler jeg, at vi har genlavet portal-renderingsteknologien helt fra bunden, så det kunne lade sig gøre, og gentænkt hvordan pipelinen fungerer med hensyn til at rendere alle de sæt gennem de forskellige dybder af portaler.
Så det er ret kringlet, og så er der også en anden ting. Portal bruger en slags, man kan kalde det ikke-euklidisk eller ikke-lineært 3D-rum, det er næsten et firedimensionelt rum i den forstand, at du kan bevæge dig gennem og bevæge dig fra ét sted til et andet, der ellers ikke hænger direkte sammen i spilverdenen. Og netværksdelen i multiplayer-spil generelt, og især i vores spil, har en afhængighed i forbindelse med at rykke spillere glat fra et sted til et andet, og tage højde for netværksforsinkelser, så man er nødt til at lave en masse blanding mellem de positioner. Og man er også nødt til at tage højde for hvad klienten tror er sket, hvad serveren mener er sket, og hvis de er uenige om hvad der sker inden for det tredimensionelle rum, er du essentielt nødt til at spole tiden tilbage, beslutte hvad der faktisk er sket, og så rykke frem igen. Så man hopper lidt frem og tilbage i tidslinjen over hvad der foregår, for at løse kollisioner i spillet.
Og når du så har spillere, der bevæger sig fra den ene ende af banen til den anden gennem portaler, så bliver det endnu sværere?
Lige præcis. Du har ikke-lineære bevægelser gennem ikke-lineær tid, og det er ikke kun svært at programmere til, men også helt vildt forvirrende bare at tænke over [griner]. Så det vil jeg mene er en af de største udfordringer.

Hvor mange opgraderinger af spilmotoren har I lavet i forhold til tidligere spil?
Jeg vil sige at vi altid gør fremskridt i et støt tempo når det kommer til at skrive ting til motoren. Hvis du ser på hvad vi gjorde med Left 4 Dead, hvor vi tilføjede farvekorrektion og skarphedsfiltre og den slags, såvel som muligheden for at rendere hundrede zombier på skærmen ad gangen, så skubbede vi nogle grænser i Left 4 Dead der var med til at opgradere motoren. I Portal 2 har vi tilføjet dynamisk lys, og det har vi udnyttet meget. Man kan se det meget prominent i de sektioner hvor Wheatley har sin lommelygte fremme og den slags, men vi bruger det alle mulige steder på virkelig raffinerede måder, der får omgivelserne til at poppe lidt mere end de plejde at gøre.
Jeg tænkte, geometrien i testkamrene er ret simpel, og det er vel bevidst - det hele er vinkelrette plader og sådan - men spillet ser stadig langt bedre ud end Portal 1, og det er vel mest på grund af lyset.
Ja, der er lyset, og så har vi også gjort en masse med det, vi kalder detaljerede teksturer, som er, hvis du nærmer dig en overflade, har vi på en måde teksturer inde i teksturen, der tilføjer en masse detaljer så den ikke bliver sløret når du står helt op af den. Og så har vi også tilføjet en efterligner-teknologi, der basalt set er et system, der renderer en genstand, og så gentager den på en lignende måde, mange gange inden for samme scene. Det ser man meget i de senere dele af spillet, hvor der er de her store rum med rigtig, rigtig mange objekter i dem. Så det er på en måde sådan vi opnår den effekt af at have helt vildt mange ting, og det virker næsten som om det burde være umuligt at rendere noget i den stil med så mange detaljer, men vi kan gøre det gennem det nye system.

Jeg kan huske at Half-Life 2 gjorde den her ting, hvor du er udenfor og det store Citadel tårner sig i baggrunden, og i virkeligheden er det en miniaturemodel, der befinder sig i et andet rum med et kamera, som så bare bliver projekteret i himlen. Laver i nogen tricks i den dur i Portal 2?
Den teknik kaldes 3D skybox, og måden det fungerer på rent visuelt er, at den 3D-kasse, du befinder dig i, essentielt betragtes som at være i en uendelig render-dybde, og dele inde i den kan bevæge sig, fordi vi flytter kameraet inden for den tredimensionelle kasse. Men det fungerer kun med ting, der betragtes som om de ikke er i vejen eller er meget langt væk. Vi laver en lille smule med skyboxes, men det giver os ikke så meget af den effekt vi ønsker. Så derfor har vi været nødt til at lave en masse ting, der faktisk er i samme rum som dig, men igen ved hjælp af efterliger-teknologien kan vi rendere virkeligt detaljerede og gentagende objekter direkte i scenen.
Når man er ude på gangbroerne og kigger op og ned, virker nogle af afstandende meget større end hvad jeg mindes at have set i andre Source-spil.
Jeg tror det er lidt et mentalt trick, i og med at de genstande faktisk er tættere på dig end genstande, du finder i andre Source-spil, men fordi de ikke er del af en skybox og ikke er på den der uendelige afstand, virker de mere ægte i en vis forstand, og derfor virker de fjernere. Det er sjovt som den slags fungerer.

I gør den her nye ting med co-op på tværs af platforme via Steam. Hvordan kom det på plads?
Grundlæggende er det en konstant udvikling. Vi har lavet Steam Play med PC og Mac, hvor vi essentielt vil behandle vores kunder og fans, der har købt spillet, grundlæggende kan de spille spillet på den platform, de nu vælger. Og når vi siger hvilken som helst platform, så er PS3 nu en del af det. Vi betragter dem ikke som PS3-spillere og PC-spillere, de er de samme spillere, og de vil alle sammen gerne spille Portal 2, og de vil gerne gøre det sammen. Så det er hvad det grundlæggende er, vi prøver at tage hvad der engang var to seperate universer og kalder dem én stor familie.
Men som regel er multiplayer på konsol en slags lukket samfund. Jeg mener Id Software prøvede det med Quake III på Dreamcast, men udover det er spil på tværs af PC og konsol ikke så udbredt, så I må have regnet noget ud som de andre udviklere ikke har.
Jeg forstår hvad du mener, nu har jeg snakket om filosofien bag, men hvordan gjorde vi i praksis? Jeg tror at, du ved, vi snakkede med Sony, og de kunne vel se værdien i det vi prøvede at få ud af situationen, og vi sagde "vi mener kunderne vil finde værdi i det her, ikke kun vores men også jeres". Og de var enige, så vi besluttede at lave et eksperiment. Som med alt andet vi gør, prøver vi noget af og ser hvordan det går, og så tager vi den derfra. Men forhåbentlig bliver det en succes, jeg tror det kommer til at fungere. Men essentielt prøver vi vandene og ser om det er en funktion, folk synes er vigtig.
Hvor meget af det skyldes Steam? Jeg mener at have hørt nogen sige at Steam lader jer skubbe opdateringer til spillet ud hurtigere, end det normalt ville gå gennem det sædvanlige konsolfabrikant-økosystem.
Vores opdateringer skal stadig certificeres. Hovedtingen vi gør med Steam er, at det bruger vores matchmaking-systemer for at finde ud af hvem der spiller, og det at kunne chatte med hinanden, gemme sine spil online, det er alt sammen ting der bruger Steam. Af PSN-funktioner bruger vi vennelisten og muligheden for også at forbinde med dem, og dele af din fremgang i multiplayer gemmes også af PSN. Så det bruger lidt af hvert, det er lidt Frankenstein, men vi prøver at gøre det så gnidningsløst som overhovedet muligt for spilleren. De behøver ikke bekymre sig om hvilket system det benytter, for vi limer dem på en måde sammen og kalder dem ét stort system.
