Surrogate.tv

Tavoite

Projektin tavoitteena oli Surrogaten tehtävänannon mukaisesti tehdä videostriimin kautta pelattava ja täysin automatisoitu ammuntapeli, joka laskee pelaajille pisteitä. Ryhmä päätti tämän pohjalta toteuttaa etäpelattavan Beer Pong -pelin.

Säännöt

Peliä pelataan 1 vastaan 1 periaatteella. Molemmille käyttäjille on yksinkertainen käyttöliittymä tietokoneen näytöllä, josta voi ohjata omalla vuorolla areenan reunalla sijaitsevaa beer pong -tykkiä. Tykillä voi tähdätä, säätää ampumisvoimakuutta ja ampua. Tykillä ammutaan areenalle asetettuja kuppeja. Peli pitää kirjaa molempien joukkueiden kaatamista kupeista. Voittaja on se pelaaja, joka osuu kaikkien kuppien sisään ensimmäisenä tai se kummalla on enemmän pisteitä peliajan loputtua. Osumat merkataan valojen ja nousevien/laskevien kuppien avulla. Peli toimii 24/7 ylläpidon rajoissa ja resetoituu kunkin pelin loputtua. 

Kuva 1: Pöytä tykkipäädystä kuvattuna

Prosessi

Pöytä

Pöytä toimii alustana pelille. Pöydän päässä on paikka tykille, jolla ammutaan toisella puolella oleviin mukeihin. Pelin alussa kaikki kuusi mukia ovat ylhäällä, pelaajan osuessa kuppiin, kyseinen kuppi laskeutuu alas. Pöytä on asennettu viiden asteen kulmaan, jotta pallot palautuvat automaattisesti gravitaation avulla pallokoriin. Pöydän alle on myös asennettu erillinen taso, joka ohjaa pöydän reunoilta tippuneet ja kupin läpi menneet pallot palautussysteemiin. Myös tason alemman päädyn seinät ohjaavat palloja systeemissä eteenpäin. Pallokorin alla on pyörivä siipiratas, joka ohjaa palloja imuputken kautta takaisin tykkiin uudelleen ammuttaviksi. Systeemi toimii videostriimin kautta automaattisesti 24/7 eikä peli tarvitse erillistä ylläpitoa.

Kuva 2: Work-in-progress pöytä ja sen alla oleva vaneritaso

Kuva 3: Pöydän 3D-mallinnettuja ja tulostettuja osia

Kupit

Pöydän päädyssä on kuusi kuppia, joissa jokaisessa on neljä elektronista komponenttia tarvittaviin operaatioihin:

  • Servo, joka liikuttaa kuppia ylös ja alas aktuaattorin avulla
  • Kytkin, jolla kalibroidaan tykki yläasentoon
  • Ledinauha, joka vaihtaa väriä tiimien ja osumien mukaan
  • Infrapuna-anturi, joka tunnistaa kuppiin osuvat pallot

Kuva 4: Testikappale kupin toiminnalle

Kuva 5: Kuppipäädyn elektroniikka pöydän alla

Tykki

Pelin tykiksi hankittiin HP-07 Table Tennis Robot. Tykin alkuperäinen tarkoitus on toimia pöytätennissyöttäjänä, joka syöttää palloja pelaajalle ohjaimen säätimien mukaan itsenäisesti. Olemme valjastaneet sen tykiksi kytkemällä moottorit Arduinoon, ja antamalla pelaajalle mahdollisuus ohjaukseen käyttöliittymän kautta.

Kuva 6: Tykki yhtenä kappaleena

Kuva 7: Tykin kaula pöydän päällä irroitettuna syöttömekanismista. Pöydän Raspberry Pi vasemmalla valkoisessa kotelossa.

Käyttöliittymä

Pelin käyttöliittymä toimii Surrogaten nettisivujen valmiilla pelipohjalla, johon on lisätty muun muassa intro video, näppäinmäärittelyt ja pelin logo.
Pelaajat voivat jonottaa peliin oikeasta kulmasta Jonotus-napista. Toisen pelaajan löytyessä molemmat pelaajat liitetään peliin. Pelaajan käytössä olevat näppäinkontrollit näkyvät kuvaruudun oikeaan alakulmaan liitetyssä kuvatiedostossa. Peliin määritellyt näppäimet ovat:

Ylöspäin nuoli – nosta ampumisvoimakkuutta
Alaspäin nuoli – laske ampumisvoimakkuutta
Space               – tähtäys
Enter                – ampuminen

Pelaajat näkyvät ruudussa vasemmassa yläkulmassa. Nykyinen pelaaja – eli se pelaaja, kenen vuoro on ampua – on korostettu suorakulmaisella taustavärillä. Videokuvaa pelistä suoratoistetaan nettisivuille webkameran-avulla, joka on kiinni pöydän Raspberryssä. Pelin alkaessa ruudussa pyörii lyhyt introvideo, jonka jälkeen peli alkaa ensimmäisen pelaajan vuorosta. Kun peli päättyy, ruudulla näytetään pelaajien pisteet. Tämän jälkeen pöytä valmistautuu seuraavaan peliin ja seuraavat pelaajat liitetään peliin.

Kuva 8: Kuvakaappaus käyttöliittymästä pelitilanteessa

Lopputulos

Saimme lopuksi projektista juuri sellaisen, mitä olimme suunnitelleet aluksi. Tietyistä ominaisuuksista jouduttiin luopumaan prosessin aikana, mutta näille löydettiin vaihtoehtoinen ratkaisu. Esimerkiksi lineaarinen tykkikelkka korvattiin laajalla ampumisvoimakkuuden skaalalla. Saimme kaikki pöydän komponentit toimimaan yhdessä ja pelattua peliämme netin välityksellä onnistuneesti. Pöytä toimii itsenäisesti, kunnes mekaaniset osat kuluvat ja vaativat huoltoa, tai palloja kertyy pöydän koloihin ajan kuluessa.

Linkit:

Lähdekoodi zip-pakettina

3D-mallit zip-pakettina

Loppuraportti

Ryhmä 7

Yhteistyössä

Surrogate.tv

Lisenssi:

Creative Commons (CC BY 4.0)
Koodi: MIT-lisenssi