Lead programmer - Rikard Blomberg
Rikard har jobbat mycket med AI, men det är inget favoritämne. Det kommer ofta som det sista steget i utvecklingen, det är ont om tid och man får kompromissa mycket. Som Lead Programer hjälper han till där det behövs. Av de olika sorternas programmering tycker Rikard att rendering är väldigt intressant men där finns det ju en ständig teknikutveckling så där gäller det att hålla sig a jour.
Beskriv en vanlig dag.
- Det är stor skillnad i olika faser i projekt. I början gäller det samla information, ta reda på vad man ska göra och hur man ska göra det. Strukturera upp arbetet. Under projektet är det självklart mer "vanligt arbete" där man kan sitta en halv dag med ett problem och testa olika lösningar. Just nu, i slutet av vårt nuvarande projekt, är det ganska hektiskt så då gäller det att hela tiden lösa de kritiska problem och buggar som uppstår. Det varierar med årstiderna, säger han och skrattar.
- Vanligtvis sitter man och programmerar, samtidigt som det är mycket kommunikation med leveldesigners, grafiker och andra programmerare. Det är speciellt viktigt när man sitter utspridda på olika fysiska platser så att alla vet vem som gör vad och varför. Instant messengers och Skype används flitigt.
Hur svårt är det att planera programmering?
- Det är ofta väldigt svårt att estimera hur lång tid det tar att genomföra något, och det är ett vanligt nybörjarmisstag att grovt underskatta tidsåtgången. I värsta fall är kravställaren, en leveldesigner eller gamedesigner, inte tillräckligt specifik i sina inledande specifikationer vilket gör att det kommer nya features och nya problem som måste lösas efterhand.
- Programmerare är nog den yrkesroll som är mest logiskt tänkande och därför är det viktigt att en kodare är med redan från början i ett projekt, när man diskuterar gamedesign, inte bara för titta på rent programmeringstekniska lösningar utan för att hitta logiska luckor i resonemang som andra kanske förbiser och stoppa det redan i ett tidigt skede.
Vad är det vanligaste missförståndet för nya programmerare?
- Man är kanske van att jobba hyfsat brett i skolmiljö men på ett företag får man oftast en specifik uppgift. Det tar väldigt lång tid att sätta sig in i stora produktioner och stora system. I värsta fall är det också dåligt dokumenterat och under ständig utveckling.
Rikard Blomberg
- Att bli snabb på att sätta sig in i stora system är något du nästan bara kan bli med erfarenhet. Man kan vara jätteduktig som nyexaminerad eller med bakgrund i olika hobbyprojekt men den stora utmaningen är att jobba tillsammans med andra i riktigt stora projekt, med kanske totalt 20 programmerare. Du kan inte bestämma allting, de lösningar man själv tycker är bra kanske inte gillas av andra. Det gäller att kompromissa och samsas. Ibland kan nytt folk komma in och tycka att saker är dåligt genomförda och vill riva upp och skriva bättre, göra snyggt. Det är sällan så enkelt som att börja om från början.
- Man ska såklart inte försvara dålig kod men ofta finns det en anledning till något som verkar vara konstigt. Någon som arbetat med samma sak tidigare har kanske upptäckt något som kräver ett specialhack men glömt att kommentera det. En ny person förstår inte det, gör om det och först ett år senare märker man att allt inte fungerar som det ska.
- Man kan inte alltid förvänta sig ett API (Application Programming Interface, regelverk för hur program kommunicerar med varandra) som är väldokumenterat och fungerar, eller att en spelmotor fungerar. Inte ens de stora kommersiella motorerna fungerar till 100% som utlovat utan man måste bolla med tillverkaren och förstå vad som har gått fel. Det är mycket sådant man lär sig den första tiden som programmerare på ett spelföretag.
Vad har du för tips till de som vill börja utveckla spel?
- Det är alltid bra att jobba själv med hobbyprojekt, det behöver inte vara stort. Det kan också vara en fördel när man söker jobb att försöka specialisera sig lite inom till exempel lågnivåprogrammering, rendering, AI, kontroller, gränssnitt och så vidare. Väldigt många som söker som programmerare vill jobba med AI, för att man tror att det är det häftigaste, att det finns så mycket man kan göra bättre. Det är ofta inte så enkelt.
Går det att bygga en perfekt AI?
- Det beror på vad man menar. AI i spel är ofta väldigt långt ifrån det som finns i forskningsvärlden. En del kommer från en lång akademisk utbildning, och läst mycket om AI och har stora visioner om hur det går att implementera i spel. Den typen av AI som används i spel är ofta ganska simpel, och den stora utmaningen är ofta att få någonting att fungera med spelet över huvudtaget, inte att göra något revolutionerande. Man ska vara glad om man har kommit så långt.
- Det som också ofta svårt att utveckla AI innan resten av spelet är färdigt för att det är så beroende av allt annat. Den ska ju analysera vad som händer och finns det inget färdigt spel är det svårt att veta hur det kommer att fungera. Visst, man kan bygga upp teoretiska modeller men det är inte alltid de fungerar i praktiken. Då kan det bli så i slutskedet att alla skriker efter en färdig AI men den beter sig som en idiot.
De här gossarnas beteende är bland annat Rickards förtjänst. Eller skuld.
- Många utvecklare vill att AI ska vara riktigt smart men det viktiga är att spelaren uppfattar den som smart och det är alls inte samma sak. Det går till exempel att uppnå en illusion av intelligens med lite billiga trick och de är mycket enklare att implementera än en generellt bra AI. När vi jobbade med #Ghost Recon AW som konsulter försökte vi göra en väldigt smart AI. Problemet med det var att den gjorde bra saker i 99% av fallen, men ibland gjorde den helt galna saker och det är det som spelare kommer ihåg.
- Fördelen med ett sådant spel är att dum AI är väldigt förlåtande, gör motståndaren ett misstag leder det till hans död och spelaren blir nöjd. Andra enkla exempel specialgjorda ageranden för en bana, det behöver inte nödvändigtvis vara AI utan kan istället vara scriptade sekvenser. Det ger än känsla av att motståndaren är mer verklig och mänsklig. Andra knep är att låta AI:n göra slumpmässiga saker ibland, bara för att det ska bli mindre förutsägbart. Feedback via ljud är också viktiga, att motståndarna säger rätt saker vid rätt tillfällen.