Spillprogrammeringsguide - Tips, verktøy og karrierer

av Connor Taylor

En spillprogrammerer er personen som tar en designers visjon og får det til å faktisk fungere i spillmotoren vi bruker. Jeg jobber i teamet for mobilspillprogrammering hos Kwalee, så for oss er det primært Unity. For eksempel, hvis designeren ønsker at en terning skal rulle på en bestemt måte, skriver jeg skriptet for å håndtere logikken. Vi samarbeider også med spillkunstnere for å sikre at spillene våre både ser fantastiske ut og oppnår god ytelse på enheten.

I denne bloggen vil jeg dele innsikt og råd om å være en spillprogrammer basert på mine fem år arbeid hos Kwalee. Jeg vil gå gjennom noen av språkene, verktøyene og prinsippene vi bruker, karriereråd, samt tips for nybegynnere og avanserte.

Hva Gjør En Spillprogrammer?

Vi skriver koden og hjelper spillet til å bli en realitet. Mens spilldesignere skaper konseptene og spillkunstnere skaper ressursene, vil en programmerer skape den funksjonelle, spillbare opplevelsen. Vi skaper og optimaliserer spillets ytelse og feilsøker eventuelle problemer som oppdages.

Vi sørger for at et spill føles bra og har høy ytelse. For å gjøre dette må vi sikre at koden i seg selv er ren og utvidbar, noe som er vanskeligere enn du tror. Vi bruker kodestandarder for å opprettholde en jevn kvalitet på tvers av alle teamene våre - et dokument som kan inneholde navngivningsstandarder, formatering osv. Imidlertid er ikke ting alltid like enkelt, og fra tid til annen kan det være nødvendig å tenke utenfor boksen for å få ting gjort i tide.

Våre ansvar inkluderer også å sikre at spillet fungerer godt på sluttbrukerens maskinvare. For eksempel, i våre mobilspill, må vi unngå at eldre enheter blir for varme, så vi jobber med kunstnere for å optimalisere antall draw calls. En draw call er en kommando sendt fra Central Processing Unit (CPU) til Graphics Processing Unit (GPU) for å gjengi et objekt på skjermen - det forteller GPU å tegne grafiske elementer som teksturer, meshes eller shaders. Vi må minimere antall draw calls i spillet vårt fordi for mange kan forårsake problemer som fall i bildefrekvens eller stotring. Det er mange måter å løse dette på, men ting som å batch flere objekter til én draw call eller redusere antall unike teksturer og materialer kan alle hjelpe. Dette er spesielt viktig for mobil, da det er så mange forskjellige enheter på markedet med varierende tekniske spesifikasjoner.

Hva Er De Viktigste Spillprogrammeringsspråkene?

Som daglige spillprogrammerere bruker vi mesteparten av tiden vår på å skripte i et utvalg av programmeringsspråk - vi er tross alt programvareutviklere av en annen type. Det er mange språk å velge mellom. Noen virker enklere enn andre, men når du først har lært og mestret ett, kan du definitivt lære andre - hovedutfordringen er å komme seg inn.

Her er en introduksjon til noen av de mest populære spillprogrammeringsspråkene:

  • C# - et allsidig og populært programmeringsspråk som er mye brukt i spillutvikling. Det er et av de enkleste å ta opp hvis du er en nybegynner. En av de beste funksjonene er automatisk søppelinnsamling - det håndterer minnetildeling for deg - veldig nyttig for travle programmerere som oss.
  • C++ - i kontrast er dette et uadministrert språk, så du må manuelt tildele og frigi minne, noe som gjør det et større steg opp i kompleksitet og vanskelighetsgrad. Imidlertid tillater det større hastighet, kontroll og ytelse.
  • Java - som C#, har Java sin egen minnehåndtering og søppelinnsamling, noe som gjør det enklere for utviklere å håndtere minne uten å bli for detaljfokusert. Det er mye brukt i webutvikling og bedriftsapplikasjoner, og selv om det (sikkert) ikke er det beste valget for spillutvikling, forblir det et solid alternativ for å skape skalerbare og effektive applikasjoner.
  • Swift - dette er Apples egne språk for å bygge apper og spill for iOS og macOS. Dette betyr imidlertid at det er mindre nyttig for plattformoverskridende utvikling - siden vi alltid sikter på å publisere mobilspillene våre på både Android og iOS.

Hvordan Blir Du En Spillprogrammerer?

Det er flere måter du kan bli en spillprogrammerer på. Min vei er ganske konvensjonell - jeg studerte Spilldesign og Programmering ved University of Staffordshire. Opprinnelig trodde jeg at jeg skulle gå inn i spillkunst - jeg har alltid vært veldig lidenskapelig opptatt av kunst som barn, i tillegg til at jeg virkelig likte kunstmodulene på universitetet, men mens jeg var der oppdaget jeg at jeg virkelig likte å skape spillmekanikk. Det kunne ta meg flere dager å lage en enkelt high poly-modell, men jeg kunne få en and til å fly og eksplodere på halvparten av tiden. Prototyping lar meg raskt se resultatene rett foran meg.

Imidlertid er skjønnheten med å programmere spill at det er tilgjengelig for de fleste, selv om du ikke kommer gjennom en tradisjonell rute. Jeg hadde venner på universitetet som var over 50 år - det er aldri for sent å oppleve noe nytt. Hos Kwalee har vi til og med ansatt noen som lærte primært gjennom YouTube-videoer og laget et spill for moros skyld. Det er så mange muligheter for friskt og ivrig talent i dag. Når vi ser på porteføljene til nyere studenter, har de så mye mer på samvittigheten. Vi ser fantastisk talent komme gjennom, og det er en spennende tid i bransjen.

Et spørsmål du sannsynligvis er ivrig etter å stille - vil AI påvirke programmering som en karriere? Det kan være ekstremt nyttig, og det blir bedre. Perfekt hvis du trenger noe forklart eller hvis du sitter fast med et problem. Du kan bruke det til å feilsøke feil, eller refaktorisere ("rydde opp") koden din ved å lime den inn i den nyeste ChatGPT. Men når vi ser på porteføljer, vil vi se arbeidet du har gjort og er stolt av. AI er fint å bruke, men prøv å ikke bruke det som en erstatning for dine egne ferdigheter.

Hvordan Ser En Typisk Dag Ut I Livet Til En Spillprogrammerer?

La meg gi et eksempel basert på mitt liv. Jeg er en Lead Programmer (jeg kaller det drømmejobben min), så det er en flott blanding av praktisk arbeid og ledelse av andre programmerere!

En typisk dag i min verden er å komme inn, få en latte, og deretter dobbeltsjekke eventuelle feil eller hindringer for QA-teamet. Sjekk med teamet for å se om noen trenger meg til å gjøre noe for å avblokke arbeidet deres. Da går musikken på og oppgavelisten opp. Vi deler framdriftsvideoer via Slack for å få rask feedback, mens vi også hopper mellom 2-3 prosjekter for å støtte medlemmer av teamet mitt. Vi bruker også mye tid på å investere i delte systemer for å gjøre programmeringen vår mer effektiv - alt må vedlikeholdes, oppdateres og fikses regelmessig for å holde ting i gang.

Nybegynnertips For Spillprogrammering

Hvis du begynner og ønsker å bli en fullverdig programmerer, her er mine nybegynnertips!

  • Det er så mye å lære på nettet, på YouTube, og det er så mange eksempeldrakt at du ikke har unnskyldning for ikke å lære! De populære motorene er gratis og er mye moro å bruke!
  • På den helt motsatte enden av spekteret, det kan være 30 år gammelt, men du bør prøve å lese den innflytelsesrike boken "Design Patterns: Elements of Reusable Object-Oriented Software" av de såkalte Gang of Four-forfatterne, som introduserte noen av grunnlagene for spillmønstre vi bruker hver dag i programmering.
  • Du kan ha dine egne ideer, men sørg for at du begynner enkelt slik at du er jordet med det grunnleggende.
  • Når du ikke er bundet til et kommersielt prosjekt, kan du skrive så mye kode du vil, så ha mye moro med å skape vanvittige ting.
  • Å bygge en portefølje er virkelig nøkkelen (og det er slik jeg fikk jobben min). Men vær veldig forsiktig med å ikke bare laste opp den samme gamle standardarbeidet fra universitetet, fordi vi vil se mange søknader med disse. Selv å bruke en ekstra dag på å redesigne og legge til flere funksjoner vil hjelpe deg å skille deg ut.
  • Å lage ditt eget spill i den virkelige verden er også en smart idé - det er svært billig å få et spill på Google Play, så få noe utgitt som du kan vise til rekrutterere/utgivere/familie/kjæledyr på telefonen din. Du kan til og med tjene et par tusen dollar i året til du er etablert med en eksklusiv fulltidsjobb, det er en bonus! Eller det kan friste deg til å lage ditt eget fullstendige spill og samarbeide med en utgiver.
  • Ikke bare lær om programmering - lær om kunst, design, QA og andre disipliner du vil samhandle med. For eksempel kan det være verdt å forstå QA-metoder fordi du kan falle i den fellen å anta at noe fungerer, men du må spille det som en bruker, ikke som en som skrev koden og har et definert syn på hvordan du forventer det "skal spilles". Vær destruktiv, prøv de tilfeldige tingene folk kan gjøre, trykke random knapper og annen bisarr oppførsel.

Avanserte Programmeringstips

Her er noen av tipsene som har hjulpet meg med å gå fra junior til programmerer til senior til leder.

  • Du kan alltid dra fordel av mer læring, og husk at uten feil kan vi ikke lære!
  • Hvis du er virkelig lidenskapelig opptatt av noe - kan du bli mer spesialisert. For eksempel, hvis du elsker å leke med shaders og render pipelines, lær mer om hvordan du bruker grafikkskyggere for å utvide din evne til å gjengi komplekse visuelle effekter og bruke render pipelines for å optimalisere ytelse eller for å lage noen fantastiske effekter.
  • Du kan lage noe virkelig kult, som et komplekst system, og laste det opp til en asset store for å vise det fram hvis kontrakten din tillater det, og vise fram ditt avanserte arbeid. Du kan utvikle en nisje som en bestemt type programmerer, som gameplay-programmerer, serverprogrammerer, grafikkprogrammerer eller multiplayer-programmerer.
  • Alternativt kan du gå ledelsesveien som meg, og veilede folk. Min taktikk for å fremme karrieren min har vært å ta på meg nye ansvar. Først begynte jeg å forbedre mindre ting, dvs. små arbeidsflytendringer. Deretter gjorde jeg prosesser enklere ved å bruke maler for å spare tid når jeg opprettet nye prosjekter. Deretter fikk jeg en smak for mentorship og ledelse, som hjalp meg med å få mer selvtillit og nå delta i kollegiale vurderinger, kodevurderinger, holde workshops og lede team i prosjekter.

Enten du jobber som en del av et team eller som leder, er det like viktig å gi ros som det er å gi konstruktiv kritikk. Når vi vurderer kode, er det godt å hype folk opp!

Hva Er De Viktigste Prinsippene For Spillprogrammering?

Det er noen viktige emner som bare må inn i en blogg om spillprogrammering. Dette er noen av de viktigste tingene vi vurderer.

Kildekontroll/Versjonskontroll

Akkurat som du har lagringspunkter i spill, er det lagringspunkter i prosjektutvikling. De fungerer som generell lagring for prosjektet og betyr at tre eller fire programmerere kan jobbe på et system samtidig, lage en endring og legge det ut på serveren. Det lar oss spore de endringene og enkelt gå tilbake hvis noe skulle bryte. Hvis to utviklere arbeider på den samme filen, blir den filen en del av en sammenslåing, og hvis det er konflikter kan vi manuelt løse dem eller velge en persons endringer som skal brukes. Dette vil skje mye når du bruker prefabrikker eller scener i Unity.

Disse termene overlapper noen ganger, men generelt fokuserer kildekontroll på koden, mens versjonskontroll inkluderer alle prosjektfiler, ressurser og dokumentasjon.

Når du først begynner å bruke Source Control kan det føles litt skummelt i begynnelsen, det kan virke veldig overveldende og når det kommer til konflikter kan du finne deg selv usikker på hva du skal gjøre. Men n&a

Om forfatteren:

Connor Taylor, Lead Game Programmer hos Kwalee, trives med å lage spill og fremme et støttende, morsomt team. Med 5+ års erfaring har han skapt suksesser som Jetpack Jump og veileder andre i Unity-utvikling.

Del denne artikkelen: