Valopistooli (ohjain)

Valopistooli tai valoase on videopelien ohjainlaite. Valopistooleita käytettiin ennen videopelejä myös tutkajärjestelmien ja graafisella näytöllä varustettujen tietokoneiden ohjainlaitteena.

Historia

Ensimmäiset valopistoolit kehitettiin 1930-luvulla. Yleisölle suunnatuissa kolikkopeleissä ensimmäinen laite oli  Seeburg Ray-O-Lite vuonna 1936. Nämä ensimmäiset valopistoolipelit käyttivät yleensä liikkuvia kohteita, joihin oli kiinnitetty valoa-aistivia putkia. Pelaaja käytti ohjainta, yleensä kivääriksi muotoiltua, joka lähetti valonsäteen kun painettiin liipasinta. Mikäli säde osui kohteeseen, "osuma" merkittiin.

Nykyiset valopistoolit toimivat päinvastaiseen tapaan - valoa-aistiva sensori on ohjaimessa ja kuvaruutu lähettää valoa. 

Valopistoolin kaltainen ohjain oli käytössä Whirlwind I -tietokoneessa ja sen seuraajissa TX-2 ja DAC-1 -tietokoneissa sekä SAGE-tutkajärjestelmän työasemilla.

Valopistoolia ja sen jälkeläistä - valokynää käytetään nykyisin hyvin harvoin tietokoneissa. Erilaiset hiiriohjaimet ja viime aikoina kosketusnäyttötekniikka ovat korvanneet valokynät lähes täysin.

Varhaisia valopistoolipelejä ovat muun muassa Nintendon Beam Gun (1970).

Valopistoolit videopeleissä

Valopistooli on nykyään muotoiltu tuliaseen näköiseksi, (yleensä pistooli, joskus haulikko, tarkkuuskivääri tai konekivääri). Valopistoolia käytetään osoittamaan maalit ruudulla. Joissakin valopistooleissa on lisäksi sisäänrakennettu tärinätoiminto, jolla voidaan simuloida oikean aseen potkaisua.

Valopistoolit ovat suosittuja kolikkopeleissä, mutta eivät ole saavuttaneet kestävää suosiota kotikonsolien markkinoilla. 
Suosituimpia esimerkkejä valopistoolista ovat Nintendon Zapper Nintendo Entertainment System -konsolille, ja laitteet Sonyn PlayStationille (1 ja 2) ja Sega Dreamcastille.

Varhainen valopistoolilla pelattava videopeli on esimerkiksi Atarin kolikkopeli Qwak! (1974).

Ensimmäiset pelikonsolilla pelattavat valopistoolipelit julkaistiin Magnavox Odyssey -konsolille.

Valopistoolin toiminta

Valopistooli saa nimensä siitä, että se käyttää valoa metodina havaita sitä kohtaa ruudusta, johon pelaaja tähtää. Nimi on hieman harhaanjohtava, sillä itse ase ei lähetä valonsädettä. Kaikissa valopistooleissa on diodi, jonka läpi valo vastaanotetaan. Valon havaitsevan diodin lisäksi tarvitaan ajastettu mekanismi liipasimen ja grafiikkaohjelmoinnin väliin. Tähän löytyy kaksi tapaa, mutta molemmissa on yhteyksiä: kun pelaaja vetää liipasimesta, ruutu väläytetään erittäin lyhyeksi ajaksi (yksi ruutu) kokonaan mustaksi. Tämän jälkeen diodi aloittaa vastaanottamisen. Diodi aseessa tulkitsee tämän jälkeen, mihin ase osoitti liipasinpainohetkellä, perustuen heijastetun valon intensiteettiin ja ajastukseen. Kun ruutu pimenee, piirretään myös yhden framen ajaksi valkoinen suorakulmio siihen kohtaan, johon pelaaja voi osua ja saada pisteitä. Diodi aseen takaosassa saa tämän jälkeen tiedon valon intensiteettistä, ja lähettää tiedon konsolille. Mikäli tulkitaan, että signaalissa oli lasku ja tämän jälkeen jyrkkä nousu, oli pelaajan "ampuma" pikseli ruudulta suorakulmiossa. Tällöin pelaajan lasketaan osuneen.

Toinen metodi, jota käyttää mm. Super Nintendo Entertainment Systemin Super Scope ja EGA:n valokynä, on yksityiskohtaisempi ja tarkempi. CRT-näytön ruutua piirretään koko ajan elektorisuihkun avulla ylhäältä alas, vasemmalta oikealle, rivi riviltä. Ihmisen silmä ei havaitse tätä, koska piirto tehdään kymmeniä kertoja sekunnissa. Kun pelaaja vetää liipasimesta, peli valaisee koko ruudun sekunnin murto-osan ajan. Tällä aikaa tietokone laskee, kuinka kauan elektronisuihkulla kestää herättää loisteaine pisteessä, johon ase oli suunnattu. Sitten tähdätty kohta lasketaan perustuen monitorin horisontaaliseen päivitysnopeuteen (ajanjakso, jonka aikana suihku pääsee ruudun vasemmasta reunasta oikeaan reunaan). Kun tietokone tietää, mihin ase oli suunnattuna, se kertoo oliko kohta "törmäyskurssilla" maalin kanssa vai ei.

Katso myös
 Valokynä
 NES Zapper
 Super Scope

Lähteet

Aiheesta muualla 

Osoitinlaitteet
Videopeliohjaimet