NPC on lyhenne englannin kielen sanoista non-player-character[1] tai non-playable character, jota käytetään roolipeleissä ja videopeleissä. Suomeksi voidaan käyttää myös ilmaisua EPH (ei-pelaaja-hahmo, ei-pelattava hahmo), mutta NPC on yleisemmin tunnettu.
Pöytäroolipeleissä NPC-hahmot ovat pelinjohtajan keksimiä ja ohjaamia sivuhenkilöitä, joita käytetään syventämään tarinaa ja ilmaisua tai vastustamaan pelaajahahmojen aikeita, siten aiheuttaen konfliktin. Joskus NPC:n hallinta voidaan myös siirtää jonkun pelaajan vastuulle, jos tämän pelaajan oma hahmo on kaukana ryhmästä tai muuten estynyt kommunikoimasta muiden pelaajahahmojen kanssa, ja pelaaja jäisi muuten osattomaksi. Hahmon kuollessa pelaajalle annetaan joskus NPC väliaikaisesti pelattavaksi tai mahdollisesti pelaajahahmoksi kohotettavaksi. Tällaisessa tilanteessa voi olla hämärää voiko NPC:tä enää kutsua NPC:ksi, mutta rajan voi vetää vaikka siitä että pelaaminen on tilapäistä eikä hahmo kehity sanottavasti.
Videopeleissä NPC-hahmot ovat automatisoituja ja täten rajoittuneempia kuin pelaajahahmot.[1] Varhaisissa tietokoneroolipeleissä NPC:t jököttivät usein paikallaan odottamassa pelaajan lähestymistä, ja keskustelu hoidettiin avainsanojen avulla. Tällainen järjestelmä osoittautui hankalaksi, sillä ihmisen sanavarasto on laaja eivätkä ohjelmoijat voi ottaa huomioon kaikkia mielleyhtymiä. Vaikka koodaus kykenee poimimaan avainsanat pitemmän tekstin joukosta, pelaaja huomaa pian, ettei lauserakenteilla ole sivuhahmoille mitään merkitystä ja keskustelu latistuu sisältämään vain yksittäisiä arvauksia avainsanoiksi kokonaisten lauseiden sijaan.
Sittemmin yleisemmäksi on käynyt järjestelmä jossa pelaajalle tarjotaan rajoitettu repliikki- tai toiminta-vaihtoehtoja, ja NPC reagoi valintoihin ohjelmointinsa mukaan.
Ohjelmoinnin kehittyessä NPC:t ovat myös saaneet aktiivisempia rooleja. Yksin pelattavissa tietokonepeleissä pelaajahahmo voi saada avukseen tietokoneen ohjaamia partnereita, joille voi yleensä antaa yksinkertaisia ohjeita tai komentoja. Jos NPC-kumppaneita on useampia, ne voivat ohjelmoinnista riippuen jopa ruveta juttelemaan keskenään (esimerkiksi Baldur’s Gatessa) tai muuten reagoida ympäristöönsä. Esimerkkinä Fallout 2 -pelissä tiettyyn paikkaan saapuminen voi laukaista edeltä käsin skriptatun kohtauksen, kun oikea henkilö sattuu olemaan mukana seurueessa. Usein seuralaiset kuitenkin latistuvat tarjoamaan vain ylimääräistä tulivoimaa ja silloin tällöin erikoiskykyjä.
NPC-hahmon kanssa toimiminen on tyypillisesti lyhyttä, kohdistettua ja toimintoperusteista kanssakäymistä. Sosiaaliset roolit ovat hyödyllisiä, koska ne muokkaavat odotuksia hahmon suhteesta toisiin (ihminen tai digitaalinen). Sosiaaliset roolit ovat osa laajempaa sosiaalista rakennetta ja ne ylittävät tarpeen kahden hahmon välisen suhteen neuvottelulle. NPC-hahmoille peleissä asetetaan usein ennalta olemassa oleva sosiaalinen suhde pelaajaan taustatarina tai välikohtauksen avulla. Tällöin pelaajalla on jo käsitys velvollisuuksista ja panostuksesta NPC-hahmoon kuviteltuun menneisyyteen perustuen.[2] Tyypillisiä sosiaalisia rooleja ovat käskyläinen, pelastettava, apuri, lemmikki, liittolainen, opas, ohjaaja, este, vastustaja, kilpailija, pomohirviö, arkkivihollinen, yleisö, isäntä, ilmiantaja/kauppias.[3]
Tyypillisesti peleissä on kiinteästi tehtyjä (kovakoodattuja) vasteita, mutta ennalta on vaikeaa havaita miten hahmo voisi näyttää älykkäältä ja joustavalta.[4] Hahmon toteuttamisessa voidaan käyttää apuna proseduuraalista generointia, jolloin algoritmilla voidaan tuottaa enemmän vastauksia. Proseduraalista menetelmää on käytetty esimerkiksi pelissä Middle-earth: Shadow of Mordor.[5]