Hvordan ble du utvikler? 📚
Startet tidlig da jeg var yngre og eksperimenterte på en demokode-disk som fulgte med Playstation 2. Var et program som demonstrerte hvordan man kunne lage spill til Playstation og lot deg skrive noen simple programmer selv. Dette var vel rundt ungdomskoletiden.
Senere, på videregående, programmerte vi Lego RCX-enheter. Blant annet lagde vi en maskin nesten helt ut av Lego som automatisk produserte en kopp med kakao; kokte vann, helte vann og kakaopulver i koppen, og rørte rundt. Den brukte fire minutter på å lage èn kopp.
- Å gi ut mobilspill er som å kjøpe Flax-lodd
Siste året så programmerte vi Parallax Boe Bots i PBasic (ParallaxBasic) - en versjon av vanlig Basic spesifikt for robotene til Parallax. Vi satte flere sammen og lagde en maskin som sorterte Lego Technic-brikker.
Studerte så spilleprogrammering på NITH (nå Westerdals), hvor det gikk mest i Java og litt C++. Samt C# og Unreal-scripting i noen sideprosjekter og valgfag.
Bachelor-hovedprosjektet var å lage et spill i Unity og C# for Snowcastle Games. Fikk jobb der i etterkant. Jobber der fremdeles.
Hva jobber du med for tida? 💪
For tre år siden gikk vi over fra Unity til Unreal Engine. Så til daglig jobber jeg i Unreal Editor sammen med Jetbrains Rider for Unreal, på spillprosjektene til Snowcastle Games, og bruker Perforce og Unreal Game Sync for versjonskontroll.
Hvordan ser en typisk arbeidsdag ut for deg? ☕
Siden pandemien startet så flyttet vi til hjemmekontor, og der har jeg blitt værende. Trives veldig med det.
Jobber som regel rundt 10-18, men det varierer, siden jeg står opp når jeg våkner, uten noen alarmklokke, det er herlig. Samt at det kan hende jeg løper noen ærend på dagen mens det er lys ute. Viktig å få litt bevegelse i kroppen også. Superfornøyd med at jobben er såpass fleksibel.
Møter tas på Discord-serveren vår, og det har ikke endret seg noe særlig, siden jeg hadde mange eksterne kollegaer allerede før hjemmekontor, som jeg hadde regelmessig møter med.
Oppgaver jeg jobber med er blant annet å kode gameplay-funksjonalitet, kode spillarkitekturen for å sørge for at spillet kjører og fungerer optimalt, fikse bugs rapportert av de andre utviklerne, vedlikeholde versjonskontroll og build-serveren vår, og sette opp og distribuere spillet for testing på utvikler-hardware slik som Playstation, XBox, og Switch.
Build-serveren kjører Team City, som automatisk bygger ny versjon av spillet for hver submit til Perforce gjort av en utvikler, og distribuerer til interne Steam-branches, slik at den nyeste implementerte funksjonaliteten er tilgjengelig for testing så fort som mulig, samtidig som den sjekker at ikke noe ble ødelagt.
Spesifikt, noe av det siste større jeg jobbet på, var å lage et system for å laste inn og spawne objekter dynamisk som spilleren har plassert ut i verden tidligere, når man laster en save. Man kan ikke laste inn alle på én gang, siden man ikke har plass til alle i minnet, og dette ville også ha skapt for mye lag på oppstart. Systemet jeg lagde gjør dette gradvis rundt spilleren mens de beveger seg rundt i verden.
Hva er ditt beste tips til et verktøy andre burde begynne å bruke? 🔨
Hvis man er et team som utvikler i Unreal, så føler jeg at å bruke Unreal Game Sync, sammen med et eller annet automatiserings system som TeamCity, er et must.
Dette sørger da for at alle jobber på riktig versjon av prosjektet, og hjelper til med å distribuere binaries til artister og designere slik at de ikke trenger å kompilere prosjektet selv lokalt.
Det reduserer da kompleksiteten av å sette opp et utviklermiljø for de som ikke jobber direkte i kode. Og at det i tillegg reduserer hvor mye de trenger å spørre meg om hjelp med akkurat dette, er selvfølgelig en fin liten bonus.
Diablo-utvikleren: - Kult at koden lever videre!
Hva har du lyst til å lære mer om framover? 🦉
Jeg ønsker å lære meg mer om grafikk/shader-programmering for spill og har startet så vidt litt på det, siden det er veldig mye fascinerende funksjonalitet man kan få til med shadere.
Nye Unreal Engine 5 er på vei, og der er det mye snacks av funksjonalitet som jeg vil sette meg inn i, også. Spesielt deres nye World Partition-system, som gjør det mye enklere å bygge opp store verdener, sammen med OneFilePerActor, som gjør det mulig for flere utviklere å jobbe på samme levels samtidig.
Hva er det verste du kan bli spurt om på jobben? 🔥
Nettverksprogrammering er hands down det verste for meg. All funksjonalitet tar tre ganger så lang tid å programmere inn når det må fungere over et nettverk også, og det gjør det så altfor kjedelig å kode. Systemet tar lang tid å få inn i spillet, og enda lenger å teste at fungerer skikkelig - for ikke å snakke om å optimere nettverkstrafikken.
Når ble du sist flau, nervøs eller stressa for noe på jobb? 😅
Blir vel ikke så mye flau på jobb, selv om jeg muligens burde blitt det?
Ikke noe slår stresset fra da jeg fikk beskjed bare én dag i forveien om at vi skulle lansere et prosjekt vi jobbet på. Det ble hektiske 24 timer. Fikk det ut i tide, men det måtte patches kort tid i etterkant av en eller annen mystisk grunn.
Ble også relativt nervøs en dag da jeg kom på kontoret og ingen fikk startet prosjektet, og systemene rapporterte en drøss med feilmeldinger og problemer. Viser seg at en av designerne våre hadde ved et uhell slettet en hel mappe med animasjoner fra prosjektet. Var veldig glad for at vi hadde versjonskontroll på plass da, ja. Rullet tilbake endringene og alle kunne fortsette.
Hva synes du norske utviklere bør bli flinkere på? 🙏
Vi bør alle bevege oss mer i løpet av arbeidsdagen, meg inkludert. Ikke sunt for noen å sitte stille i en kontorstol åtte timer hver dag. Hjemmekontor kan hjelpe veldig på dette, som nevnt tidligere, ved å ofte kunne være mer fleksibel på arbeidstiden.