Peliohjelmoija on henkilö, joka vie suunnittelijan vision ja saa sen toimimaan pelimoottorissamme. Työskentelen mobiilipeliohjelmointitiimissä Kwalee:lla, joten meille kyseessä on pääasiassa Unity. Esimerkiksi, jos suunnittelija haluaa, että noppa pyörii tietyllä tavalla, kirjoitan skriptin, joka hoitaa logiikan. Teemme myös yhteistyötä pelitaiteilijoiden kanssa varmistaaksemme, että pelimme näyttävät upeilta mutta toimivat myös erinomaisesti laitteella.
Tässä blogissa kerron viisivuotisesta työstäni Kwalee:lla tarjoten olennaisia näkemyksiä ja neuvoja peliohjelmoijan työstä. Esittelen joitakin käyttämiämme kieliä, työkaluja ja periaatteita, uraneuvoni sekä aloittelijoiden ja edistyneitä vinkkejä.
Mitä Tekee Peliohjelmoija?
Kirjoitamme koodin ja autamme peliä muuttumaan todellisuudeksi. Samalla kun pelisuunnittelijat luovat konseptit ja pelitaiteilijat luovat grafiikat, ohjelmoija luo toimivan, pelattavan kokemuksen. Luomme ja optimoimme pelin suorituskykyä ja ratkaisemme esiintyviä ongelmia.
Varmistamme, että peli tuntuu hyvältä ja toimii korkealla suorituskyvyllä. Tämän saavuttamiseksi meidän on varmistettava, että koodi on puhdasta ja laajennettavaa, mikä on vaikeampaa kuin luulisi. Käytämme koodausstandardeja säilyttääksemme johdonmukaisen laadun kaikissa tiimeissämme - asiakirja voi sisältää esimerkiksi nimeämisstandardit ja muotoilut. Kuitenkin, joskus asiat eivät ole aina suoria ja ajoittain saatat joutua ajattelemaan laatikon ulkopuolelta saadaksesi asiat aikaan ajoissa.
Vastuumme sisältävät myös sen, että peli toimii hyvin loppukäyttäjän laitteistolla. Esimerkiksi mobiilipeleissämme meidän täytyy välttää vanhempien laitteiden kuumenemista liikaa, joten työskentelemme taiteilijoiden kanssa optimoidaksemme piirto kutsujen määrää. Piirto kutsu on komento, joka lähetetään keskussuoritinlaitteelta (CPU) grafiikkasuoritinlaitteelle (GPU) kuvioiden, verkkojen tai varjojen piirtämiseksi näytölle. Meidän on vähennettävä piirto kutsujen määrää, koska niiden liiallinen määrä voi aiheuttaa ongelmia, kuten kuvataajuuden pudotuksia tai pätkimistä. Tämä on erityisen tärkeää mobiilissa, koska markkinoilla on niin monia eri laitteita, kaikilla eri teknisillä tiedoilla.
Mitkä Ovat Pääasialliset Peliohjelmointikielet?
Suurin osa päivittäisestä ajastamme peliohjelmoijina kuluu skriptaamiseen yhdellä monista ohjelmointikielistä - olemme eräänlaisia ohjelmistokehittäjiä kuitenkin. Voi valita monista kielistä. Jotkut vaikuttavat helpommilta kuin toiset, mutta kun olet oppinut ja hallinnut yhden, voit varmasti oppia toiset - tärkein haaste on saada jalka oven väliin.
Tässä johdanto joihinkin suosituimpiin peliohjelmointikieliin:
- C# - monipuolinen ja suosittu ohjelmointikieli, jota käytetään laajasti pelikehityksessä. Se on yksi helpoimmista aloittelijoille. Sen parhaisiin ominaisuuksiin kuuluu automaattinen roskienkeruu - joten se hallitsee muistin jakamista puolestasi - erittäin hyödyllinen meille kiireisille ohjelmoijille.
- C++ - toisin kuin C#, tämä on hallitsematon kieli, joten muisti on allokoitava ja vapautettava manuaalisesti, mikä tekee siitä monimutkaisemman ja vaikeamman. Kuitenkin se sallii suuremman nopeuden, hallinnan ja suorituskyvyn.
- Java - kuten C#, Javalla on oma muistin hallinta ja roskienkeruu, mikä tekee kehittäjille helpompaa hallita muistia ilman, että tarvitsee uppoutua yksityiskohtiin. Sitä käytetään laajasti verkkokehityksessä ja yrityssovelluksissa, ja vaikka se ei ehkä ole (väitetysti) parhain valinta pelikehitykseen, se on edelleen vahva vaihtoehto luoda skaalautuvia ja tehokkaita sovelluksia.
- Swift - tämä on Applen oma kieli iOS- ja macOS-sovellusten ja -pelien rakentamiseen. Tämä tarkoittaa kuitenkin, että se on vähemmän hyödyllinen monialustakehityksessä - koska pyrimme aina julkaisemaan mobiilipelimme sekä Androidille että iOS:lle.
Kuinka Tulla Peliohjelmoijaksi?
On olemassa monia eri tapoja tulla peliohjelmoijaksi. Oma reittini oli melko tavanomainen - opiskelin pelisuunnittelua ja -ohjelmointia Staffordshiren yliopistossa. Alun perin luulin ryhtyväni pelitaiteen pariin - olin lapsena aina hyvin intohimoinen taiteesta, ja nautin todella taidekursseista yliopistossa, mutta siellä huomasin todella nauttivani pelin kehittämisestä. Voi kestää useita päiviä luoda yksittäinen korkea poly-malli, mutta voisi saada ankan lentämään ja räjähtämään kaksinkertaisessa ajassa. Prototyyppejä tekemällä voi nähdä lopputuloksen nopeasti suoraan edessäni.
Kuitenkin pelien ohjelmoinnin kauneus on, että se on useimpien saavutettavissa, vaikka ei perinteisen reitin kautta tulisikaan. Minulla oli ystäviä yliopistossa iältään 50+, ei ole koskaan liian myöhäistä kokea jotain uutta. Kwaleessa olemme jopa palkanneet jonkun, joka oppi pääasiassa YouTube-videoiden kautta ja teki pelin hauskuuden vuoksi. Tänään on niin paljon mahdollisuuksia tuoreelle ja innokkaalle kyvylle. Katsoessamme uusien opiskelijoiden portfolioita heillä on paljon enemmän valmiina. Näemme upeaa kykyä tulevan ja se on jännittävä aika alalla.
Kysymys, jota saatat haluta kysyä - vaikuttaako tekoäly ohjelmointiin urana? Se voi olla erittäin hyödyllinen ja se paranee. Täydellinen jos tarvitset jotakin selitettyjä tai olet jumissa ongelmassa. Voit käyttää sitä vikojen selvittämiseen tai refaktoroidaksesi ('siivota') koodiasi liittämällä sen uusimpaan ChatGPT:hen. Kuitenkin kun katsomme portfolioita, haluamme nähdä tekemäsi ja ylpeänä esittämäsi työn, AI on hienoa käyttää, mutta yritä olla käyttämättä sitä omien taitojesi korvikkeena.
Millainen On Tyypillinen Peliohjelmoijan Päivä?
Annan esimerkin omasta elämästäni. Olen lead-ohjelmoija (kutsun sitä unelmatyökseni), joten se on mahtava sekoitus käytännön työtä ja muiden ohjelmoijien hallintaa!
Tyypillinen päiväni sisältää saapumisen, latten hakemisen, sitten kaksinkertaisen tarkistamisen mahdollisten virheiden tai esteiden osalta QA-tiimille. Tarkistan tiimin kanssa, jos joku tarvitsee minua tekemään jotain heidän työnsä estämiseksi. Sitten musiikki soi ja tehtävälista avautuu. Jaamme edistymisvideoita Slackin kautta saadaksemme nopeaa palautetta, samalla kun vaihtelemme 2-3 projektin välillä tiimini jäsenten tukemiseksi. Käytämme myös paljon aikaa yhteisten järjestelmien kehittämiseen, jotta ohjelmointimme olisi tehokkaampaa - kaikki on ylläpidettävä, päivitettävä ja korjattava säännöllisesti, jotta asiat toimisivat sujuvasti.
Aloitteleva Peliohjelmointivinkkejä
Jos aloittelet ja haluat tulla täysiveriseksi ohjelmoijaksi, tässä muutamia aloittelevia vinkkejäni!
- Verkossa on niin paljon opittavaa, YouTubessa ja siellä on niin paljon esimerkkipelien, ettei sinulla ole syytä olla oppimatta! Suosituimmat moottorit ovat ilmaisia ja niitä on todella hauska käyttää!
- Täysin vastakkaisessa päässä, saattaa olla 30 vuotta vanha, mutta sinun pitäisi yrittää lukea vaikutusvaltainen kirja "Design Patterns: Elements of Reusable Object-Oriented Software" niin sanottujen Neljän Kirjailijan kirjoittama, joka esitteli ohjelmointiin käytettyjä peliohjeita, joita käytämme päivittäin.
- Sinulla voi olla omia ideoita, mutta varmista, että aloitat yksinkertaisesti, jotta olet perusasioissa kiinni.
- Kun et ole sidottuna kaupalliseen projektiin, voit kirjoittaa niin paljon koodia kuin haluat, joten pidä hauskaa luodessasi hullunkurisia asioita.
- Portfolion rakentaminen on todella avainasemassa (ja näin sain työpaikkani). Mutta ole erittäin varovainen, ettet vain lataa samankaltaista vanhaa tavanomaista yliopistotyötä, koska näemme paljon tällaisia hakemuksia. Jo ylimääräisen päivän käyttäminen uudelleenskinnaamiseen ja ominaisuuksien lisäämiseen auttaa erottumaan.
- Oman oikean pelin luominen on myös fiksu idea - on erittäin halpaa saada peli Google Playhin, joten julkaise jotain mitä voit näyttää rekrytoijille/julkaisijoille/perheelle/lemmikeille puhelimessasi. Saatat jopa ansaita muutaman tuhatta dollaria vuodessa, kunnes olet valmis yksinoikeudella kokopäiväiseen työhön, mikä on bonus! Tai se saattaa houkutella sinut tekemään oman täysimittaisen pelisi ja solmimaan kumppanuuden julkaisijan kanssa.
- Älä opiskelle pelkästään ohjelmointia - opi taiteesta, suunnittelusta, QA:sta ja muista aloista, joiden kanssa olet yhteydessä. Esimerkiksi, on syytä ymmärtää QA-menetelmiä, koska voit langeta ansaan olettaen, että jokin toimii, mutta sinun täytyy pelata sitä käyttäjänä, et koodin kirjoittajana, jolla on tarkka näkymys siitä, kuinka odotat, että se "pitäisi pelata". Ole tuhoisa, kokeile satunnaisia asioita, joita ihmiset saattavat tehdä, kuten painella satunnaisia painikkeita ja muuta outoa käytöstä.
Edistyneet Ohjelmoijavinkit
Tässä on joitakin vinkkejä, jotka ovat auttaneet minua siirtymään juniorista ohjelmoijaksi, sitten senioriksi ja nyt johtajaksi.
- Voit aina hyötyä lisää oppimisesta, ja muista, että ilman virheitä emme voi oppia!
- Jos olet todella intohimoinen jostakin - voisit erikoistua enemmän. Esimerkiksi, jos pidät shaderien ja renderöintiputkien kanssa työskentelemisestä, opi lisää käyttämään grafiikka shaderit laajentaaksesi kykyäsi luoda monimutkaisia visuaalisia tehosteita ja käyttää renderöintiputkia suorituskyvyn optimoimiseksi tai luodaksesi upeita vaikutuksia.
- Voisit tehdä jotain todella siistiä, kuten monimutkainen järjestelmä, ladata sen asset-kauppaan näyttääkseen sen jos sopimuksesi sallii ja esitelläksesi edistynyttä työtäsi. Voit kehittää niche itsellesi tietynlaisena ohjelmoijana, esimerkiksi peliohjelmoijana, palvelinohjelmoijana, grafiikkaohjelmoijana tai moninpeliohjelmoijana.
- Tai vaihtoehtoisesti, voit mennä hallinta polulle kuten minä, ja mentorina ihmisille. Omataktiikkani urani edistämiseksi on ollut uusien vastuiden omaksuminen. Aloitin pienempien asioiden parantamisesta, eli pienien työnkulun muutosten tekemisestä. Sitten tein prosesseista helpompia käyttämällä malleja, jotka säästävät aikaa uusien projektien luomisessa. Sitten sain maun mentorointi ja johtamisesta, mikä auttoi minua saamaan enemmän itsevarmuutta ja nyt osallistumaan vertaisarviointeihin, koodiarviointeihin, työpajojen järjestämiseen ja tiimien johtamiseen projekteissa.
Olitpa sitten osa tiimiä tai johtajana, on yhtä tärkeää antaa kiitosta kuin rakentavaa palautetta. Kun tarkistamme koodia, on hyvä innostaa ihmisiä!
Mitkä Ovat Peliohjelmoinnin Keskeiset Periaatteet?
On tiettyjä aiheita, jotka on yksinkertaisesti otettava mukaan blogiin, joka kattaa peliohjelmoinnin. Tässä ovat eräät tärkeimmistä asioista, joita otamme huomioon.
Lähde-/versiohallinta
Aivan kuten peleissä on tallennuspisteitä, on projektin kehittämiseen tallennuspisteitä. Ne toimivat yleisenä varastona projektille ja tarkoittavat, että kolme tai neljä ohjelmoijaa voi työskennellä järjestelmän parissa samanaikaisesti, luoda muutoksen ja työntää se palvelimeen. Se antaa meille mahdollisuuden seurata näitä muutoksia ja helposti palata takaisin, jos jokin menisi pieleen. Jos kaksi kehittäjää työskentelee samassa tiedostossa, siitä tiedostosta tulee osa yhdistelmää, jos ristiriitoja syntyy, voimme manuaalisesti ratkaista ne tai valita sovellettavaksi yksittäisen henkilön muutokset. Tämä tapahtuu usein, kun käytetään esineitä tai kohtauksia Unityssä.
Nämä termit joskus menevät päällekkäin, mutta yleensä, lähdehallinta keskittyy koodiin ja versiohallinta sisältää kaikki projektitiedostot, resurssit ja dokumentaation.
Kun ensimmäistä kertaa aloitat lähdehallinnan käytön, se voi tuntua pelottavalta aloittaa, se voi tuntua hyvin ylivoimaiselta ja kun tulee ristiriitoja, saatat huomata olevasi epävarma mitä tehdä. Mutta versionhallinnan luonne auttaa sinua tallentamaan hetkiä ajassa, joten jos päivität usein ja käytät yksityiskohtaisia commit-viestejä, se on uskomattoman hyödyllinen ja turvallinen. Voit palata useisiin pisteisiin, on useita haaroja jne. Ajattele sitä kehittäjien turvaverkkona, jotta voimme välttää Pixarin ToyStory 2:n - vahingossa poistettu ja sitten palautettu heidän teknisen johtajansa kotikoneelta, sen sijaan kaikki on turvallisesti siellä palvelimella.
Olio-ohjelmointi
Tätä ohjelmointityyppiä käytämme pääasiassa Kwaleella. Se käyttää olioita edustamaan todellisia asioita tai abstrakteja käsitteitä, ja pyrkii organisoimaan koodipohjan periaatteiden avulla, jotka peilaavat miten näemme ja vuorovaikutamme esineiden kanssa reaali maailmassa. Se auttaa ylläpitämään monimutkaisia järjestelmiä organisoimalla koodin erillisiin luokkiin, joita voit käyttää uudelleen, skaalaa ja yllä pitää helpommin.
Tietysti, on debatti siitä, onko se hyvä vai ei. Vaikka se ei ole korkeimman suorituskykyinen, se toimii hyvin. Aivan kuten kielillä, jokaisella on omat hyvät ja huonot puolensa ja sinun pitäisi oppia yksi aloittaaksesi ja saadaksesi kiinni siitä, miten kielet ja kääntäjät (ihmiskoodin kääntäjät konekoodiksi) toimivat. Voit myös harkita muita tyyppejä, kuten funktionaalista ohjelmointia, joka käsittelee sitä enemmän kuin matematiikkaa, loogista ohjelmointia, joka käyttää faktoja ja sääntöjä tai proseduraalista ohjelmointia, joka käyttää vaiheittaista tietoa.
Ohjelmointimallit
Nämä ovat ihastuttavan hyödyllisiä asioita - uudelleenkäytettäviä ratkaisuja, jotka voivat auttaa yleisiin ongelmiin, joita kohtaat ohjelmistosuunnittelussa. Ne antavat sinulle mallin ongelman korjaamiseen, joten sinun ei tarvitse keksiä pyörää uudelleen joka kerta ja voit noudattaa todistettuja ratkaisuja.
Esimerkiksi, Singleton-suunnittelumalli auttaa sinua varmistamaan, että tietyn luokan kuten peliasetusten hallitsijan, on vain yksi esiintymä koko pelin läpi, ja antaa sinulle globaalin pääsykohdan siihen. Tämän mallin koodi tarkoittaa, että vain yksi esiintymä SettingsManager-luokasta olemassa, joten sinun ei tarvitse luoda tai kopioida sitä joka kerta, kun tarvitset sitä.
Lisäksi olemassa on Factory Pattern, joka voi auttaa sinua luomaan esineitä organisoidumpana ja joustavammin. Voit määritellä menetelmiä tietyn tyyppisten esineiden, kuten hahmojen tai esineiden, luomiseksi syöteparametrien perusteella, jolloin voit helposti luoda enemmän samantyyppisiä esineitä aloittamatta alusta joka kerta.
Toivon, että tämä blogi on antanut sinulle maistiaisia peliohjelmoinnista, olitpa sitten uusi alalla tai kokenut ohjelmoija! Jos olet ahkera, mutta hauska ihminen, sopisit tiimiimme, joten selvitä lisää Kwalee-työpaikoista. Muutoin, voit oppia lisää mobiilipeleistämme mobiilipelimme tai julkaisusta ja tutustua enemmän siihen, mitä julkaisemme kehittäjänä ja julkaisijana.








