Erittäin hyvä aihe ja etenkin harvinaisen asiallinen avauspostaus, ei yhtään asiavirhettä!
Tässä lainaus artikkelistani kasinohuijausten historiasta, Skrollin numerosta 2023.3, parhaillaan hyvinvarustetuissa lehtipisteissä:
Korttien laskentaa Internetissä
Populaarikulttuuri on tehnyt korttien laskemisen Black Jackissa yleisesti tunnetuksi. Sademiehessä autistinen Raymond voittaa jaon toisensa jälkeen, ja vuoden 2008 elokuva “21” keskittyy korttienlaskentaan realistisemmin, pohjautuen tositarinaan MIT-opiskelijoiden tiimistä, joka vei Las Vegasin kasinoilta miljoonia.
Idea lyhyesti on, että peliä pelataan tyypillisesti monta kierrosta, ennen kuin aikaisemmilla kierroksilla käytetyt kortit sekoitetaan takaisin pakkaan, tai oikeammin kenkään – kenkä on nimitys monesta korttipakasta koostuvalle Black Jack -pakalle. Sen mukaan, mitä kortteja kengästä jo puuttuu, peli saattaa olla pelaajalle voitollinen. Jos pelaaja panostaa enemmän ollessaan niskan päällä, hän jää pidemmän päälle voitolle. Korttien laskemista ei pidetä varsinaisesti huijaamisena, mutta kasinot eivät tietenkään halua kortinlaskijoita asiakkaikseen.
Nettikasinoilla korttien laskenta on tyypillisesti mahdotonta – jokainen jako aloitetaan uudella, vasta sekoitetulla pakalla. Aivan 2000-luvun alussa eräs kasino kuitenkin poikkesi kaavasta. Pelin säännöissä mainostettiin kengästä jaettavan 20% ennen sekoitusta. Valinta oli siitäkin mielenkiintoinen, että se on pelin ohjelmoijille työläs toteuttaa, mutta ilmeisesti tekijät ajattelivat tämän säännön miellyttävän fyysisen maailman kasinoilta siirtyviä pelaajia.
Perinteiset kortinlaskijat eivät olisi kiinnostuneet pelistä, jossa kengästä jaetaan näin pieni osa. Merkittäviä pelaajan etuja esiintyy tyypillisesti vasta kun kengästä on jaettu jo yli puolet. Ehkäpä siksi peli oli koettu turvalliseksi julkaista. Virtuaalisella versiolla pelistä on kuitenkin tiettyjä haavoittuvuuksia kasinoympäristöön verrattuna: Pelaajan ei tarvitse pelätä kiinnijääntiä, koska kukaan ihminen ei tarkkaile hänen pelaamistaan. Hän voi panostaa pelkkää minimipanosta aina kun peli on tappiollinen, ja pelkkää maksimipanosta sen ollessa voitollinen, ja käyttää tietokonetta avuksi korttienlaskentamallissa, joka on tarkempi kuin mikään, mihin ihmispelaaja kykenee päässään.
Kuulin itse pelistä, tarkistin säännöt, ja ohjelmoin botin joka pelasi sitä, panostaen ja tehden pelivalintoja täydellisesti, ja tilastoiden nähdyt kortit. Lyhyen kokeilen jälkeen oli selvää, että peli toimi juuri kuten oli mainostettu. Perustin pienen tiimin muutaman ystäväni kanssa, jakaaksemme taloudellisen riskin ja saadaksemme pelattua enemmän tunteja, ilman että kenenkään meidän pelimäärämme näyttäisivät epäilyttäviltä. Saimme pelata peliä yhteensä melkein vuoden, ennen kuin kasino lopulta muutti sen muotoon, jossa kortit sekoitettiin joka jaon jälkeen. Voitimme projektista noin miljoona euroa.
(Edit: välissä pelasimme myös videopokeria samalla saitilla, mutkia oiottu lehteen)
Bottien ohjelmointi (Kainalojuttu)
Bottini oli oikeastaan aika alkeellinen kapistus. Javan peruskirjastot sisältävät luokan “Robot”, joka tarjoaa funktioita esimerkiksi ruudunkaappausten ottamiseen sekä hiiren liikutteluun ja painalluksiin. Kun ohjelma käynnistettiin, se aluksi tutki koko kuvaruudun, etsien kohtaa joka vastaisi siihen tallennettua näytettä halutun peli-ikkunan yläkulmasta. Kun se löysi sen, alkoi se pelata – bottiin oli koodattu korttien, pelin kontrollien ja tilin saldon sijainnit peli-ikkunassa, ja se otti jatkuvasti näytteitä noista kohdista, verraten niitä tallennetuihin kuvanäytteisiin, pienellä virhetoleranssilla. Poiketen modernista kuvantunnistuksesta, ohjelma ei varsinaisesti “hahmottanut” mitään, jos peli-ikkunan kokoa esim muutettaisiin muutamalla pikselillä, tai jokin toinen ikkuna vedettäisiin osittain sen eteen, se ei enää osaisi pelata.
Pelipäätökset botti syötti hiirellä, käyttäen sitä niin ihmismäisesti kuin osasin sen ohjelmoida sitä käyttämään. Painalluskohdat olivat normaalijakautuneita tarkan kohteen lähistöllä, hiiren liike noudatteli bezier-käyriä ja hidastui lähellä määränpäätä, ja ajoitus oli hiukan satunnaista. Halusin, että mikäli peliohjelma lähettää dataa kasinolle, se voisi näyttää uskottavasti ihmispelaajan tuottamalta. Kyseessä ollut kasino ei suoraan säännöissään kieltänyt bottien käyttöä kasinopeleissä, mutta emme tietenkään halunneet kysyä heiltä aiheesta mitään, koska se olisi varmasti varoittanut kasinoa mahdollisista aikeistamme. Hiiren liikkeitä matemaattisesti analysoimalla olisi varmasti voinut tunnistaa ne epäinhimillisiksi, mutta näyttöä katselemalla olisi hyvin voinut kuvitella, että jossain piilossa on ihmispelaaja.
Botit pelasivat noin kahdeksan tuntia päivässä, ja pitivät välillä kahvitaukoja.