Peliohjelmoinnin opas - Vinkit, työkalut ja urat

tekijä Connor Taylor

Peliohjelmoija on henkilö, joka ottaa suunnittelijan vision ja saa sen toimimaan pelimoottorissa, jota käytämme. Työskentelen mobiilipeliohjelmoinnin tiimissä Kwaleella, joten meillä se on ensisijaisesti Unity. Esimerkiksi, jos suunnittelija haluaa noppien pyörähtävän tietyllä tavalla, kirjoitan skriptin, joka hoitaa logiikan. Teemme myös yhteistyötä pelitaiteilijoiden kanssa varmistaaksemme, että pelimme näyttävät upeilta ja saavuttavat erinomaisen suorituskyvyn laitteilla.

Tässä blogissa käytän hyväkseni viiden vuoden kokemustani Kwaleella työskentelystä ja jaan olennaisia näkemyksiä ja neuvoja peliohjelmoijana olemisesta. Esittelen joitain käyttämiämme kieliä, työkaluja ja periaatteita, uravinkkini sekä aloittelevien ja edistyneiden vinkkejä.

Mitä Peliohjelmoija Tekee?

Kirjoitamme koodia ja autamme pelin toteutumisessa. Pelisuunnittelijat luovat käsitteet ja pelitaiteilijat luovat resurssit, mutta ohjelmoija luo toiminnallisen ja pelattavan kokemuksen. Luomme ja optimoimme pelin suorituskykyä ja korjaamme tunnistettuja ongelmia.

Varmistamme, että peli tuntuu hyvältä ja toimii erittäin sujuvasti. Tämän saavuttaaksemme meidän on varmistettava, että itse koodi on puhdasta ja laajennettavaa, mikä on vaikeampaa kuin luulisi. Käytämme koodaustandardeja ylläpitääksemme yhtenäistä laatua kaikissa tiimeissämme - dokumentti saattaa sisältää nimeämisstandardeja, muotoilua jne. Kuitenkin joskus asiat eivät ole aina niin yksinkertaisia, ja silloin tällöin joudut ajattelemaan laatikon ulkopuolella saadaksesi asiat tehtyä ajallaan.

Tehtäviimme kuuluu myös pelin varmistaminen, että peli toimii hyvin loppukäyttäjän laitteistolla. Esimerkiksi mobiilipeleissämme meidän on vältettävä vanhempien laitteiden ylikuumenemista, joten työskentelemme taiteilijoiden kanssa optimoidaksemme piirto-komentojen määrän. Piirto-komento on käsky, joka lähetetään keskusyksiköstä (CPU) grafiikkaprosessoriyksikölle (GPU) piirtämään kohde näytölle - se kertoo GPU:lle piirtää graafisia elementtejä, kuten tekstuureja, verkkoja tai sävyttimiä. Meidän on minimoitava näiden piirto-komentojen määrä pelissämme, koska liian monet niistä voivat aiheuttaa ongelmia, kuten ruudunpäivitysnopeuden laskua tai nykimistä. Tämä on erityisen tärkeää mobiilissa, koska markkinoilla on niin monia erilaisia laitteita, joilla on vaihtelevat tekniset spesifikaatiot.

Mitkä Ovat Tärkeimmät Peliohjelmointikielet?

Suurimman osan ajastamme päivittäisinä peliohjelmoijina käytämme ohjelmointikielten skriptausta - olemme toisentyyppisiä ohjelmistokehittäjiä. Kielivalikoima on laaja. Jotkut näyttävät helpommilta kuin toiset, mutta kun olet oppinut ja hallinnut yhden, voit varmasti oppia muita - suurin haaste on saada jalka oven väliin.

Tässä on johdantoihinkin joihinkin suosituimpiin peliohjelmointikieliin:

  • C# - monipuolinen ja suosittu ohjelmointikieli, jota käytetään laajasti pelikehityksessä. Se on yksi helpoimmista aloittelijoille. Yksi sen parhaista ominaisuuksista on automaattinen roskien kerääminen - se hallitsee muistiallokointia puolestasi - erittäin hyödyllinen me kaltaisillemme kiireisille ohjelmoijille.
  • C++ - toisin kuin C#, tämä on hallitsematon kieli, joten sinun on manuaalisesti allokoitava ja vapautettava muisti, mikä tekee siitä monimutkaisemman ja vaikeamman. Kuitenkin se mahdollistaa suuremman nopeuden, hallinnan ja suorituskyvyn.
  • Java - kuten C#, Java hallitsee itse muistin hallinnan ja roskien keräyksen, mikä tekee kehittäjille muistinhallinnan helpommaksi ilman, että he juuttuvat yksityiskohtiin. Sitä käytetään laajasti verkkokehityksessä ja yrityssovelluksissa, vaikkei se (kiistatta) olekaan ykkösvalinta pelikehitykseen, se on edelleen vankka vaihtoehto skaalautuvien ja tehokkaiden sovellusten luomiseen.
  • Swift - tämä on Applen oma kieli sovellusten ja pelien kehittämiseen iOS:lle ja macOS:lle. Tämä tekee kuitenkin siitä vähemmän hyödyllisen ristialustakehityksessä - sillä tavoitteenamme on aina julkaista mobiilipelimme sekä Androidille että iOS:lle.

Miten Tulla Peliohjelmoijaksi?

Peliohjelmoijaksi voi tulla monella eri tavalla. Oma reittini on melko perinteinen - opiskelin pelisuunnittelua ja -ohjelmointia Staffordshiren yliopistossa. Alun perin luulin meneväni pelitaiteeseen - olin aina ollut intohimoinen taiteesta lapsena, ja lisäksi nautin todella yliopiston taidemoduuleista, mutta siellä huomasin todella nauttivani pelimekaanikan luomisesta. Yhden korkean poly mallin luomiseen saattoi kulua useita päiviä, mutta pystyin saamaan ankan lentämään ja räjähtämään puolet ajasta. Prototyyppien avulla voin nähdä tuloksen nopeasti suoraan edessäni.

Kuitenkin pelien ohjelmoinnin kauneus on, että se on käytettävissä useimmille ihmisille, vaikka et tulisikaan perinteiselle reitille. Minulla oli ystäviä yliopistossa, jotka olivat yli 50-vuotiaita - koskaan ei ole liian myöhäistä kokea jotain uutta. Kwaleella olemme jopa palkanneet jonkun, joka oppi pääsääntöisesti YouTube-videoiden kautta ja teki pelin huvin vuoksi. Nykyään on niin monia mahdollisuuksia uusille ja innokkaille lahjakkuuksille. Kun katson uusien opiskelijoiden portfolioita, heillä on niin paljon enemmän hallussaan. Näemme loistavaa lahjakkuutta ilmestyvän ja tämä on jännittävä aika alalla.

Kysymys, jota todennäköisesti haluat kysyä - vaikuttaako tekoäly ohjelmointiin urana? Se voi olla erittäin hyödyllinen, ja se paranee koko ajan. Täydellinen, jos tarvitset jotain selitettyä tai olet kiinni ongelmassa. Voit käyttää sitä virheiden vianetsintään tai koodin uudelleenjärjestämiseen (siivoukseen) liittämällä sen uusimpaan ChatGPT:hen. Kuitenkin kun katsomme portfolioita, haluamme nähdä tekemäsi työt ja mistä olet ylpeä, AI on hyvä käyttää, mutta yritä olla käyttämättä sitä korvaamaan omia taitojasi.

Millainen On Tyypillinen Päivä Peliohjelmoijan Elämässä?

Annan esimerkin omasta elämästäni. Olen pääohjelmoija (kutsun sitä unelmatyökseni), joten se on loistava sekoitus käytännön työtä ja muiden ohjelmoijien hallinnointia!

Tyypillinen päiväni on tulla sisään, ottaa latte, tarkistaa QA-tiimin virheet tai esteet. Tarkistan tiimiltä, tarvitseeko kukaan minua tekemään mitään heidän työnsä vapauttamiseksi. Sitten musiikki päälle ja tehtävälista esille. Jaamme etenemisvideoita Slackin kautta saadaksemme nopeaa palautetta, samalla kun pomppimme 2-3 projektin välillä tukeaksemme tiimini jäseniä. Käytämme myös paljon aikaa yhteisiin järjestelmiin investoimiseen, jotta ohjelmointimme olisi tehokkaampaa - kaikki on ylläpidettävä, päivitettävä ja korjattava säännöllisesti, jotta asiat toimisivat sujuvasti.

Aloittelijan Peliohjelmointivinkit

Jos olet aloittelemassa ja tähtäät täysissä määrin ohjelmoijaksi, tässä on aloittelijan vinkkini!

  • Verkossa on niin paljon opittavaa, YouTubessa on paljon esimerkkipelejä, joista sinulla ei ole tekosyitä olla oppimatta! Suositut moottorit ovat ilmaisia ja niitä on hauska käyttää!
  • Täysin eri ääripäässä, se saattaa olla 30 vuotta vanha, mutta sinun pitäisi yrittää lukea vaikuttava kirja "Design Patterns: Elements of Reusable Object-Oriented Software" niin sanotuilta Gang of Four -kirjailijoilta, joka esitteli joitakin jokapäiväisessä ohjelmoinnissa käyttämiämme pelimallien perusteita.
  • Saatat omata omia ideoitasi, mutta varmista, että aloitat yksinkertaisesti, jotta olet perusasioiden pohjalla.
  • Kun et ole sidottu kaupalliseen projektiin, voit kirjoittaa niin paljon koodia kuin haluat, joten pidä hauskaa luomalla villejä asioita.
  • Portfolion rakentaminen on todella tärkeää (ja se on se, miten sain työni). Mutta ole erittäin varovainen, ettet lataa samaa vanhaa tavallista yliopistoprojektia, koska näemme paljon näitä hakemuksia. Jopa ylimääräisen päivän käyttö skinnauksen muuttamiseen ja lisäominaisuuksien lisäämiseen auttaa sinua erottumaan.
  • Oman reaalimaailman pelin luominen on myös fiksu idea - pelin saaminen Google Play -kauppaan on hyvin halpaa, joten julkaise jotain, jonka voit näyttää rekrytoijille/julkaisijoille/perheelle/lemmikeille puhelimellasi. Saatat jopa tehdä muutaman tuhat dollaria vuodessa, kunnes pääset yksinoikeudella kokopäiväiseen työhön, joka on bonus! Tai se voi houkutella sinua tekemään oman täysimittaisen pelin ja kumppanuuteen julkaisijan kanssa.
  • Älä pelkästään opettele ohjelmointia - opi taiteesta, suunnittelusta, QA:sta ja muista aloista, joiden kanssa olet vuorovaikutuksessa. Esimerkiksi, kannattaa tutustua QA-menetelmiin, koska voit jäädä kiinni siihen ansaan, että jotain toimii, mutta sinun on pelattava sitä käyttäjänä, ei henkilönä, joka kirjoitti koodin ja jolla on määritelty näkemys siitä, miten sen 'pitäisi olla pelattava'. Olette tuhoavia, kokeilkaa asioita, joita ihmiset saattavat tehdä, painelemalla satunnaisia painikkeita ja muita outoja käyttäytymisiä.

Edistyneen Ohjelmoijan Vinkit

Tässä on joitain vinkkejä, jotka ovat auttaneet minua siirtymään harjoittelijasta, ohjelmoijaksi, vanhemmaksi ohjelmoijaksi ja pääohjelmoijaksi.

  • Voit aina hyötyä uusista opppimisista, ja muista, että ilman virheitä emme voi oppia!
  • Jos olet todella intohimoinen jostakin - voisit erikoistua. Esimerkiksi, jos rakastat leikkiä sävyttimien ja renderöintiputkien kanssa, opi lisää, miten käyttää graafisia sävyttimiä laajentaaksesi kykyäsi renderoida monimutkaisia visuaalisia tehosteita ja käyttää renderöintiputkia optimoidaksesi suorituskyvyn tai tehdäksesi upeita tehosteita.
  • Voisit tehdä jotain todella hienoa, kuten monimutkaisen järjestelmän, ladata sen omaisuusmyymälään esitelläksesi sen, jos sopimuksesi sallii ja näyttääksesi kehittyneitä teoksiasi. Voisit kehittää tietynlaisen ohjelmoijan kapean kustannusalueen, kuten pelimekaanikon, palvelinohjelmoijan, graafisen ohjelmoijan tai moninpeliohjelmoijan.
  • Vaihtoehtoisesti voit mennä johtamisen tielle kuten minä, ja ohjata ihmisiä. Strategiani urani edistämiseen on ollut uusien vastuualueiden ottaminen. Ensiksi aloin parantaa pieniä asioita, eli pieniä työnkulun muutoksia.. Sitten tein prosessit helpommiksi käyttämällä malleja ajan säästämiseksi, kun luon uusia projekteja. Sitten sain maistaa mentorointia ja johtamista, mikä auttoi minua saamaan enemmän itseluottamusta ja nyt otan osaa vertaisarvioihin, koodiarvioihin, työpajojen isännöintiin ja johtamaan tiimejä projekteissa.

Etkä sitten ole pelkästään tiimin jäsen tai johtajana, on yhtä tärkeää antaa kehuja kuin rakentavaa kritiikkiä. Kun tarkistetaan koodia, on hyvä hypettää ihmisiä!

Peliohjelmoinnin Keskeiset Periaatteet

On olemassa joitain keskeisiä aiheita, jotka yksinkertaisesti on sisällytettävä peliohjelmointia käsittelevään blogiin. Nämä ovat joitakin tärkeimpiä asioita, joita otamme huomioon.

Lähdekontrolli/Versiokontrolli

Aivan kuten peleissä on tallennuspisteitä, myös projektien kehityksessä on tallennuspisteitä. Ne toimivat yleisinä tallennuspaikkoina projektille ja tarkoittavat, että kolme tai neljä ohjelmoijaa voi työskennellä järjestelmän parissa samanaikaisesti, tehdä muutoksen ja siirtää sen palvelimelle. Se antaa meille mahdollisuuden seurata noita muutoksia ja helposti palauttaa, jos jotain menee pieleen. Jos kaksi kehittäjää työskentelee samassa tiedostossa, tuo tiedosto tulee osaksi yhdistämistä, jos on ristiriitoja voimme sitten manuaalisesti ratkaista ne tai valita yksilön muutokset sovellettavaksi. Tämä tapahtuu paljon, kun käytetään Unityn Prefabeja tai Kappaleita.

Nämä termit saattavat joskus päällekkäisiä, mutta yleensä lähdekontrolli keskittyy koodiin ja versiokontrolli kattaa kaikki projektitiedostot, resurssit ja dokumentaation.

Kun aloitat ensimmäistä kertaa Lähdekontrollin käytön, se voi tuntua hieman pelottavalta aluksi, se voi vaikuttaa hyvin ylivoimaiselta ja konfliktien yhteydessä saatat löytää itsesi epäröivilta. Mutta versiokontrollin luonne auttaa sinua tallentamaan hetkiä ajassa, joten jos päivität usein ja käytät yksityiskohtaisia sitoutumisviestejä, se on uskomattoman hyödyllinen ja turvallinen. Voit palata useisiin pisteisiin, olla useita haaroja jne. Ajattele sitä kehittäjien turvaverkona, jotta voimme välttää version Toy Story 2:sta - vahingossa poistettua ja sitten palautettua heidän teknisen johtajansa kotona olevalta kiintolevyltä, sen sijaan kaikki on turvallisesti palvelimella.

Oliokeskeinen ohjelmointi

Tämä on ohjelmointityyppi, jota pääasiassa käytämme Kwaleella. Se käyttää objekteja kuvaamaan todellisia asioita tai abstrakteja käsitteitä ja pyrkii organisoimaan koodikannan käyttäen periaatteita, jotka peilaavat tapaa, jolla näemme ja vuorovaikutamme objektien kanssa todellisessa maailmassa. Se auttaa ylläpitämään monimutkaisia järjestelmiä organisoimalla koodin erillisiin luokkiin, joita voit käyttää uudelleen, skaalata ja ylläpitää helpommin.

Tietysti on keskustelua siitä, onko se hyvä vai ei. Vaikka se ei olekaan korkein suorituskyvyn suhteen, se toimii hyvin. Kuten kielten kanssa, jokaisella on omat hyvät ja huonot puolensa ja sinun pitäisi oppia yksi aloittaaksesi ja saadaksesi otetta kielten ja kääntäjien (ihmiskoodin muutto konekieleksi) toiminnasta. Voit harkita myös muita tyyppejä, kuten funktionaalinen ohjelmointi, joka kohtelee sitä enemmän kuin matematiikkaa, looginen ohjelmointi, joka käyttää faktoja ja sääntöjä tai proseduraalinen ohjelmointi, joka käyttää askel-askeleelta dataa.

Ohjelmointimallit

Nämä ovat ihanan hyödyllisiä asioita - uudelleen käytettäviä ratkaisuja, jotka voivat auttaa yleisissä ongelmissa, joita kohtaat ohjelmistosi suunnittelussa. Ne antavat sinulle mallin ongelman korjaamiseksi, joten sinun ei tarvitse keksiä pyörää uudelleen joka kerta ja voit seurata todistettuja ratkaisuja.

Esimerkiksi Singleton-suunnittelumalli auttaa sinua varmistamaan, että sinulla on vain yksi instanssi luokasta, kuten peliasetusten hallinnoinnista koko pelissäsi, ja antaa sinulle globaalin pääsyn siihen. Tämä mallin koodi tarkoittaa, että vain yksi SettingsManager-luokan instanssi on olemassa, joten sinun ei tarvitse luoda tai monistaa sitä uudelleen joka kerta, kun tarvitset sitä.

On myös Factory-malli, joka voi auttaa sinua luomaan objekteja järjestäytyneemmällä ja joustavammalla tavalla. Voit määritellä menetelmiä tietyn tyyppisten objektien, kuten hahmojen tai esineiden, luomiseksi syöteparametrien perusteella, mikä mahdollistaa helposti useampien samanlaisten objektien luomisen ilman, että aloittaisit alusta joka kerta.

Toivon, että tämä blogi on antanut sinulle makua peliohjelmoinnista, olet sitten uusi alalla tai kokenut ohjelmoija! Jos olet ahkera mutta hauska ihminen, sopisit tiimiimme, joten tutustu Kwalee-uramahdollisuuksiin. Voit myös oppia lisää mobiilipeleistämme tai julkaisemisesta ja tutustua lisää siihen, mitä julkaisijana ja kehittäjänä julkaisemme.

Tietoa kirjoittajasta:

Connor Taylor, Kwaleen johtava peliohjelmoija, kukoistaa pelien tekemisessä ja tukevan, hauskan tiimin kehittämisessä. Yli 5 vuoden kokemuksella hän on luonut hittejä kuten Jetpack Jump ja toimii mentorina Unity-kehityksessä.

Aiheeseen liittyvät artikkelit

Jaa tämä artikkeli: