• No results found

A stealth poker bot: Theories for avoiding the detection of a poker bot during online gaming

N/A
N/A
Protected

Academic year: 2021

Share "A stealth poker bot: Theories for avoiding the detection of a poker bot during online gaming"

Copied!
32
0
0

Loading.... (view fulltext now)

Full text

(1)

O

pokerbot

Teorier för att undvika

Theories for avoidin

Högskoleingenjörutbildningen Data/Telekommunikation Examinator och handledare: Bengt J Ni

1

Examensarbete

15 högskolepoäng

Osynlig

pokerbot

att undvika detektering vid online-spelande med pokerbot

A stealth poker bot

ng the detection of a poker bot during onlin

Hans Persson

Högskoleingenjörutbildningen Data/Telekommunikation, Malmö högskola, Höstterminen 2010 : Bengt J Nilsson

spelande med pokerbot

ne gaming

(2)

2

Innehållsförteckning

Sammanfattning ... 4 Abstract ... 4 1 Introduktion ... 5 1.1 Inledning ... 5 1.2 Bakgrund ... 5 1.3 Problemdiskussion ... 6 1.4 Syfte ... 6 1.5 Avgränsningar ... 6 1.6 Metodbeskrivning ... 6 1.7 Målgrupp ... 7 2 Texas Hold’em ... 8 2.1 Pokerspel ... 8 2.2 Texas Hold’em ... 8 2.3 Vinnande händer ... 9 2.4 Limits ... 10 2.4.1 Straight-limit ... 11 2.4.2 Spread-limit ... 11 2.4.3 Last-bet-limit ... 11 2.4.4 Pott-limit ... 12 2.4.5 No-limit ... 12 3 Pokerbot ... 13 3.1 Vad är en bot? ... 13 3.2 Så fungerar en pokerbot... 14 3.2.1 Klienttråd ... 15 3.2.2 Speltråd ... 15 3.2.3 Chattråd ... 18 3.3 Screen scraping... 18 4 Avslöja en bot ... 20 4.1 Identifiera misstagen ... 20 4.1.1 Intuitiva upptäckter ... 20 4.1.2 Analyserande upptäckter ... 21 4.1.3 Anti-bot metoder ... 22 5 Dölja en bot ... 23

(3)

3 5.1 Timing ... 23 5.2 Speltid ... 25 5.3 Repetition ... 25 5.4 Spelmönster ... 25 5.5 Vinst-förlust snitt ... 28 5.6 Spyware ... 28 5.7 CAPTCHA ... 28 6 Slutsatser ... 30 6.1 Sammanfattning ... 30 6.2 Slutsats ... 30 6.3 Rekommendationer ... 30 Litteraturförteckning ... 32

(4)

4

Sammanfattning

Syftet med denna uppsats är att undersöka och utveckla teorier för att undvika detektering vid online pokerspelande med en pokerbot. En bot är ett program som utför en rad operationer inom ett givet regelverk utan att en användare behöver styra eller övervaka programmet. Teorierna skall vara generella nog för att kunna användas för spel på en rad populära online pokerspelsidor. Pokerspelet som uppsatsen avser är Texas Hold’em poker, ett hasardspel som fått stor uppmärksamhet i media på senare år tack vare stora vinstsummor och ett spritt spelande på internet.

Abstract

The purpose of this essay is to investigate and develop theories to avoid detection during online gambling using a poker bot. A bot is a program that performs a set of operations within a given set of rules without the need of a user to control or monitor the program. The theories must be general enough to be used for a wide variety of popular online poker gaming sites. The poker game referred to in this essay is Texas Hold’em poker, a form of gambling that has gained much attention in the media over the last few years thanks to large payouts and a widespread use on the Internet.

(5)

5

1 Introduktion

1.1 Inledning

I detta examensarbete så skall teorierna till en osynlig (eng. stealth) pokerbot beskrivas, analyseras och presenteras. Notera att detta arbete inte kommer gå in i detalj på de strategier som pokerboten använder sig av vid själva spelandet, denna information kan hämtas från ett flertal olika analyserande uppsatser så som examensarbetet Pokerboten (Borgström & Nilsson, 2010) eller från handböcker så som Pokerhandboken (Glimne, 2005).

1.2 Bakgrund

Arbetet med uppsatsen började som en idé hos en vän att skapa en bot som kan spela Texas Hold’em poker via någon av de många online kasino som existerar på internet. Då tiden för att skriva mitt examensarbete som avslutning på mina studier sammanföll med idén av en pokerbot bestämde jag mig för att ta en titt på online pokervärlden. Från början var tanken att utveckla och implementera en fullt fungerande pokerbot men då detta visade sig vara ett väldigt omfattande arbete och som dessutom gjorts vid ett flertal tillfälle av andra studenter i liknande arbeten, se CASPER: A Case-Based Poker-Bot (Watson & Rubin, 2008). I ett andra försök till ett examensarbete bestämde jag mig för att införa kraftiga begränsningar och endast koncentrera mig på en del av utvecklingen av en pokerbot, nämligen hur en pokerbot skall implementeras för att undvika att bli upptäckt av motspelare eller eventuella övervakningsprogram som kan användas för att upptäcka pokerbotar. Reglerna för användandet av pokerbotar vid online pokerspel varierar mellan olika spelföretag, vissa anser det vara rent fusk och bannlyser konton som upptäcks med att använda botar medan andra spelföretag har öppnat dörrarna för botar och anordnar till och med turneringar endast för botar.

Denna uppsats kommer endast titta på möjligheten för att undvika upptäckt vid användandet av en pokerbot och tar ingen ställning till eventuella illegala tillämplingar av framtagna teorier.

(6)

6

1.3 Problemdiskussion

Hur fungerar en pokerbot? Vad är det som gör att motspelare eller övervakningsprogram kan avgöra att en pokerbot faktiskt är en pokerbot? Vad behövs för att kväva dessa avslöjande tecken? Dessa är frågorna som behöver besvaras inom ramen för denna uppsats.

1.4 Syfte

Syftet med detta arbete är att analysera och utveckla teorier så att en pokerbot kan implementeras på ett sådant sätt att boten inte kan, annat än med stora svårigheter, avslöjas som ett enkelt program och inte som en riktig mänsklig spelare.

1.5 Avgränsningar

Uppsatsen kommer att försöka förklara följande frågor för att få fram en helhetsbild:

• Hur spelas Texas Hold’em poker? • Vad är en pokerbot?

• Vad avslöjar en pokerbot vid online spel? • Hur kan en pokerbot göras mer ”mänsklig”?

Uppsatsen kommer inte ge specifik programkod utan är endast en teoretisk övning som skall ge svar på frågorna ovan och ge utvecklare av pokerbotar ett underlag vid implementeringen av sin bot.

1.6 Metodbeskrivning

En analyserande metod kommer tillämpas i detta arbete. Efter att avgränsningarna för arbetet har gett en utgångspunkt så skall följande steg tas:

1. Förstå Texas Hold’em poker – vilka är reglerna, hur spelas en vinnande hand, vilka strategier finns det för att öka oddsen för en vinst?

2. Hur kan en pokerbot kommunicera med en pokerklient – vilka metoder kan användas? 3. Vilka beteende hos pokerboten bör undvikas för att inte bli avslöjad – vad är de vanligaste

(7)

7

I arbetet kommer varje steg beskrivas, analyseras och metoder för implementering presenteras för varje steg beskrivet ovan. I slutet av uppsatsen kommer en slutsats av arbete redovisas med en rekommendation av författaren baserat på målgruppen för uppsatsen.

1.7 Målgrupp

Denna uppsats riktas främst mot programmerare som har ett intresse i poker eller bara vill utnyttja sina kunskaper för att konstruera en egen pokerbot. Syftet för programmeraren kan vara utmaningen att konstruera en bra osynlig pokerbot eller att tjäna pengar.

(8)

8

2 Texas Hold’em

2.1 Pokerspel

Ordet poker får nog många att tänka på hasardspel, ytterligare ett av många spel om pengar eller som Svenska Akademins ordbok definierar det ”spel vars utgång beror på slumpen o. icke på de spelandes beräkning” (Svenska_Akademin, 1997). Så stämmer det? Är poker ett rent slumpartat spel utan möjlighet för en spelare att påverka utgången själv?

Det går inte att utesluta slumpen från poker, korten som varje spelare får är trots allt slumpmässigt givna från en blandad kortlek, men det finns trots allt flera faktorer som en spelare har kontroll över och dessa faktorer skiljer sig beroende på vilken typ av pokerspel som spelas. Så vilka faktorer är det som en spelare har kontroll över? Oavsett vilken form av poker som spelas så styrs korten som spelaren får av slumpen men efter det är det upp till spelaren att göra det bästa av situationen. Är det smartast att dra sig ur tidig om korten på handen är ofördelaktiga eller är det läge att bluffa trots dåliga kort? Hur har motståndarna spelat tidigare händer? Visar någon av dem nervösa tecken som tyder på att de bluffar? Det är här som en duktig spelare kan vinna vid ett bord trots att denna har ”otur” vid bordet.

2.2 Texas Hold’em

Texas Hold’em poker består av minst två spelare, en vanlig 52-korts kortlek samt insatser i form av marker som representerar pengar. Max antalet spelare som kan spela samtidigt är begränsat av antalet kort i kortleken men består ofta av fem eller tio spelare vid ett bord.

Spelet följer ett enkelt mönster som kan förklaras på följande sätt.

1. De två av spelarna efter givaren tvingas betala en avgift för att spela, dessa kallas big blind och small blind. Small blind är oftast hälften av av värdet av big blind.

2. Varje spelare får två kort, dessa kallas hole eller hålkort, ordningen bestäms av en dealer (markör).

3. Varje spelare värderar sina kort och bestämmer om han/hon vill vara med i omgången genom att matcha det nuvarande vadet, samma som big blind, eller höja.

(9)

9

4. Med mer än en spelare kvar vid bordet så läggs tre kort upp på bordet fullt synligt, dessa kallas flop och är för samtliga spelares bruk.

5. En ny satsningsrunda körs tills inga nya ökningar av vadet har gjorts. 6. Ett fjärde kort vänds upp på bordet, detta kallas för turn.

7. Ännu en ny runda körs tills inga nya höjningar av vadet gjorts.

8. Det femte och sista kortet, kallat river, läggs på bordet tillsammans med flopkorten och turnkortet.

9. Sista rundan körs tills inga nya ökningar av vadet gjorts och om det är mer än en spelare kvar så utses vinnaren.

Vinnaren är den spelare med den bästa femkortskombination av de sju tillgängliga korten, de två egna hålkorten samt de fem öppna korten på bordet. Om någon gång under spelets gång alla utom en ensam spelare har lagt sig så utses denna spelare till vinnare och får ta hem vinsten på bordet, kallad potten.

Undantag till det ovanstående mönstret är då någon utropar all-in, detta påvisar att spelaren satsar allt han/hon har på ett enda spel och tvingar därmed andra spelare att antingen lägga sig eller matcha spelarens insats och spelet hoppar då fram till att alla korten läggs upp på bordet och vinnaren avgörs.

Skulle mot förmodan två eller fler spelare gå hela vägen till att deras händer jämförs för att avgöra en vinnare och deras händer visar sig vara exakt lika så delas potten. Observera att vid all-in där en spelare möter mer än en motspelare så är potten redan delad mellan de olika spelarna.

2.3 Vinnande händer

Då ett spel går så långt att två eller fler händer måste jämföras för att avgöra en vinnare så används en rankning av olika händer. I Tabell 1 listas händerna efter starkast hand ner till svagast och finns beskrivna i detalj i Pokerhandboken (Glimne, 2005), sist för varje hand beskrivs oddsen för att dra denna hand i en giv.

(10)

10

Hand Beskrivning Odds

Royal Straight Flush Fem kort i samma färg och i följd, ess i toppen 1 : 649740 Straigh Flush Fem kort i samma färg och i följd 1 : 72193 Fyrtal Fyra kort i samma valör oavsett färg 1 : 4165

Kåk En triss och ett par oavsett färg 1 : 694

Flush Fem kort i samma färg oavsett valör 1 : 509

Straight Fem kort i följd oavsett färg 1 : 255

Triss Tre kort i samma valör oavsett färg 1 : 47

Två par Två par av olika valörer oavsett färg 1 : 21

Par Ett par i samma valör oavsett färg 1 : 2,4

ingenting Inget av ovan, högsta valör räknas 1 : 2

Tabell 1 : Vinnande händer

Skulle två händer vara av samma rank så avgör värdet på valörerna i handen vilken som vinner, observera att skulle detta också vara samma så avgör högsta kortet i 7 korts serien vinnaren. Om det mot förmodan skulle vara lika även här så är det en ”tie” dvs. oavgjort och potten delas mellan högsta händerna.

2.4 Limits

Inom Texas Hold’em finns det olika varianter av spel där det sätts en begränsning på storleken på vaden som spelarna lägger.

• Straight-limit • Spread-limit • Last-bet-limit • Pott-limit • No-limit

De olika begränsningarna påverkar hur mycket, ibland även hur lite, en spelare får satsa när det är dennes tur och påverkar hur spelet spelas.

(11)

11

2.4.1 Straight-limit

Vanligaste formen av Texas Hold’em som spelas i USA och Europa (Glimne, 2005). Vid denna form av spel så sätts värdena som en spelare får satsa vid början av spelet t.ex. $10 för varje satsning. Ofta spelas straight-limit i kombination med en övre gräns för antalet satsningar tillåtna i samma satsningsrunda eller en gräns på hur mycket en spelare får totalt höja i samma runda. Det finns även varianter där varje satsning i en runda är individuellt satta t.ex. $1-$2-$4-$8, då kallas detta för en split straight-limit. Det kan även förekomma mer avancerade former av straight-limit Texas Hold’em poker men då rekommenderas tillgänglig litteratur så som Pokerhandboken (Glimne, 2005).

Spel med värdena satta till en låg nivå ger förhållandevis långa spel i lugnt takt och passar utmärkt för nybörjare, eller som vänskapspel, då det är mindre att hålla reda på och spelare kan vara med i fler givar.

2.4.2 Spread-limit

Vid spread-limit så har en undre och en övre gräns på en satsning satts och det är upp till spelaren att välja en nivå mellan dessa gränser för varje satsning i en runda. Likt straight-limit finns det ofta ett övre tak i form av en begränsning på antalet höjningar i en satsningsrunda eller en gräns på totala värdet av satsningarna. För att skilja på ett split straight-limit och ett spread-limit spel så används ofta olika skrivsätt på värdena: $1-4 visar att det är en spread-limit med minst 1 dollar och högst 4 dollar i satsgränser, medans $1-$4 visar att det är en split spread-limit med 1 dollar i första satsningarna och 4 dollar i sista satsningarna.

Likt straight-limit så är spread-limit en bra form för ett spel mellan vänner och nybörjare då begränsningarna drar ut på spelet och låter spelare vara med i fler givar.

2.4.3 Last-bet-limit

Även kallad dubblering där en spelare som vill höja måste dubblera senaste satsningen för att kunna höja. Ofta sätts även här en övre gräns likt straight-limit eller spread-limit med en begränsning på antalet höjningar i en satsningsrunda eller ett maxvärde på höjningarna.

(12)

12

2.4.4 Pott-limit

Här är den övre gränsen för en höjning begränsad av pottens totala värde och kräver därför mer av en spelare då en viss huvudräkning krävs samt att värdet på potten snabbt kan växa till stora värden.

Att räkna ut det totala värdet på potten är inte lätt utan kräver att en spelare måste hålla koll på följande:

1. Hur stor är potten? 2. Vad satsade motspelaren?

3. Vad är värdet på spelarens hypotetiska syn?

Exempel: I potten ligger $100 och din motspelare har precis satsat $50. För att kunna syna måste nu spelaren lägga $50 vilket gör att pottens totala värde nu är $100+$50+$50=$200.

Med exemplet ovan som utgångspunkt är nu den undre gränsen $50 och den övre gränsen $200 för en satsning. Låter det komplicerat? Tänk på att denna beräkning måste göras inför varje höjning som ska spelas och siffrorna kan snabbt bli både stora och svåra att beräkna under stress.

Pott-limit bör inte spelas av nybörjare, dels för kravet att lugnt kunna beräkna potten samt att det kan snabbt bli dyrt att spela då potten växer.

2.4.5 No-limit

No-limit har som namnet antyder ingen övre gräns på hur mycket en spelare får höja när det är dennes tur. Detta gör att en rik spelare, dvs. har mycket marker, kan köpa ut en giv genom att chockhöja i en runda utan att åberopa all-in och kan då skrämma iväg spelare med färre marker.

No-limit beskrivs ofta som en krävande form av Texas Hold’em (Glimne, 2005) och ställer stora krav på en spelares nerver och plånbok.

(13)

13

3 Pokerbot

3.

1 Vad är en bot?

Så vad är en bot? En bot är ett program som konstruerats att utföra en uppgift, eller rad uppgifter, utan att en användare behöver närvara för att ge den instruktioner för att utföra dessa uppgifter. Ordet bot är i sig en förkortning av ordet robot som kommer från det tjeckiska ordet robota (arbete). Ordet användes för att beskriva en artificiell arbetare i pjäsen R.U.R. av tjeckiske författaren Karel Čapek år 1920 (Zunt, 1998).

Nästan alla människor som någon gång använt en dator har, säkerligen omedvetet, använt sig av botar då den vanligaste och mest använda formen av en bot är en sökmotor, som Google, Yahoo med flera.

Det finns många olika former av botar och listan nedan beskriver endast en del av dessa.

• Assisterande bot – ett program som hjälper eller styr en användares handling vid interaktiva spel. Exempel: Aimbot som flyttar en spelares sikte till ett mål i FPS (First Person shooter) spel, en form av spel där spelaren ser genom ögonen på sin spelfigur.

• Chatbot – ett program som simulerar en människa i en chat (online diskussion). Sommarplågan Boten Anna av Basshunter från 2006 handlar om hur sångaren misstog en riktig person för en chatbot. En bra bot ska bete sig precis tvärtom.

• Sökmotor – även kallad spindelbot eller sökspindel är ett program som tar en förfrågan av en användare och letar igenom webbsidor på internet efter relevant material.

• Spambot – ett program som när det infiltrerat en användares dator letar upp dennes e-postlista och skickar ut så kallad spam (oönskad och ibland virus infekterad e-post).

• Spelbot – ett program som självständigt spelar ett spel efter de regler som användaren och spelet satt. En pokerbot faller under denna kategori.

Alla botar är en mer eller mindre avancerad AI (artificiell intelligens) som assisterar eller ersätter en användare i en viss situation.

(14)

14

3.2 Så fungerar en pokerbot

Pokerboten är en bot som skrivits specifikt för att spela poker, i denna uppsats begränsas beskrivningar av boten för spel enligt Texas Hold’em regler. När det gäller att konstruera en pokerbot så måste flera faktorer tas hänsyn till:

• Vilken klient spelar boten på? – påverkar hur information hämtas och beslut utförs.

• Hur ska boten spela? – det finns ett flertal strategier tillgängliga från publicerade verk och webbsidor på internet.

• Finns det en chatmöjlighet mellan spelare? – är inte nödvändig för boten att spela men erbjuds av många online pokerklienter.

Ett måste från boten är att alla faktorer ovan, om chat är implementerat, måste kunna köras parallellt och ingen enskild faktor får lamslå boten, så den missar viktig information. För detta krävs det att programmeraren av en pokerbot designar boten med flera trådar (multi threading) (Deitel & Deitel, 2005).

Programmering med trådar innebär att en tråd har en specifik uppgift att utföra och programmet kan skifta mellan dessa trådar utan att förlora informationen som den tidigare tråden arbetade med. Dessa trådar kan ges olika prioritet beroende på hur viktiga de olika uppgifterna är. Ibland kan det dock vara nödvändigt att hindra skiftet till en annan tråd om information som första tråden använder sig av måste beräknas eller på annat sätt hanteras innan nästa tråd tar över och använder sig av just den information som första tråden precis beräknat.

Så hur bör en pokerbot byggas upp? De tre faktorerna i listan ovan är en bra utgång och kommer ligga till grund för en enkel teoretisk pokerbot.

A. Klienttråden – övervakar och hämtar information från pokerbordet.

B. Speltråden – bestämmer botens handling baserad på information från klienttråden.

C. Chattråden – om klienten använder sig av en chattråd så tar denna hand om allt chatrelaterat.

(15)

15

3.2.1 Klienttråd

Klienttråden ansvarar för att hämta all nödvändig information som pokerboten behöver för att kunna spela från klienten. Exakt hur detta går till beror helt på vilken typ av klient som boten ska spela på och tråden behöver därför anpassas för varje klient. Så vilka typer av klienter finns det, generellt?

• Avlyssning av data – vissa webbaserade klienter som spelas över en vanlig webbläsare där HTML koden snappas upp av boten direkt eller rå data till en klient som tolkas av boten. • Screen scraping – ett sätt att hämta information från det visuella GUI:t (grafiska

användarinterfacet) oberoende av krypterad dataöverföring eller programspecifikation (kapitel 3.3).

Oavsett vilken typ av informationshämtning som används så måste informationen sparas på ett sådant sätt att boten enkelt kan hantera och processa ny data. Exakt hur informationen sparas är upp till programmeraren men viktig information kan vara följande:

• Vem är dealer? – bestämmer ordningen på given och vem som betalar blinds. • Vilka kort är givna? – botens två hålkort samt upp till fem öppna kort.

• Vad ligger i potten? – viktigt för olika strategier t.ex pottoddsstrategin (Borgström & Nilsson, 2010) eller beräkna taket på en höjning vid spel med Pot-limit Texas Hold’em.

• Vad är botens bank? – hur mycket boten har att satsa med.

• Vem gjorde vad sist? – motspelarnas handlingar påverkar botens spel från så enkla saker som att sista motspelaren höjde vilket ökar kostnaden för en syn men kan också användas för att spara en motspelares historia för att analysera spelarstil (Borgström & Nilsson, 2010).

• Vems tur är det? – när det är botens tur är det tid för att skifta tråd till speltråden.

• Har botens namn nämnts i chatten? – för en bot med en chattråd så ges denna en möjlighet att svara på tilltal.

3.2.2 Speltråd

Medan klienttråden har samlat information från pokerbordet så har speltråden legat och väntat på att det är botens tur i satsrundan. Beroende på hur avancerad boten görs så kan denna tråden vara en enkel om-jag-har-så-spelar-jag bot till en bot som analyserar motspelare och lägger upp en strategi beroende på handen, pottoddsen och flera andra faktorer som studeras i mer detalj i Pokerboten (Borgström & Nilsson, 2010).

(16)

16

För att ge en översiktlig bild av hur en enkel speltråd kan vara uppbyggd studera Figur 1 nedan. Figuren är ett flödesdiagram som förklarar hur de olika stegen och besluten i en speltråd tas, tråden börjar på ”Min tur” och efter avslut kommer tillbaka för att göra samma steg nästa gång det är speltrådens tur.

Min tur

Beräkna hand med 2 kort Kort på bordet?

Beräkna min position

Beräkna hand med 5-7 kort

Beräkna potodds

2 spelare kvar?

Skicka rätt val till spelbordet Hämta motståndarbeteende Invänta ny turordning ja ja nej nej

(17)

17

Speltråden måste kunna ta beslut beroende på vilken information den har tillgänglig och vilka strategier som den ska följa. Klienttråden tillhandahåller informationen medan programmeraren och i viss utsträckning användaren bestämmer strategin. Vid en närmare titt i Figur 1 så är speltrådens första beslut en kontroll av antalet kort som ligger på bordet. Utan öppna kort på bordet så betyder det att boten måste spela med endast sina egna två hålkort och ta hänsyn till dessa. I Pokerboten (Borgström & Nilsson, 2010) så beskrivs en empirisk tabell över de 50 starkaste hålkorten med ess-ess som starkaste hålkort och tio-knekt som den svagaste av de 50. En beräkning av position i given kan också vara till nytta då en fördelaktig position kan tillåta boten att stjäla blinds, en taktik där en stark höjning i slutet av en satsrunda med endast hålkort och då inga andra synat på första rundan gör att sista spelaren kan bluffa sig till potten som då innehåller big blind och small blind (Glimne, 2005).

Om given har pågått ett tag så ligger det nu kort på bordet, tre till fem beroende på vilken satsrunda det är, vilket gör att boten har mer information att ta hänsyn till vilket också gör att fler beslut är nödvändiga för att nå ett så fördelaktigt beslut som möjligt. Med fem till sju kort så har boten nu möjligheten att få en komplett hand och kan då beräkna oddsen för att ha den vinnande. Efter att beräknat oddsen för handen så kommer nästa steg, pottodds. Är handen bra nog att stå på egen hand eller måste boten ta hänsyn till kostnaden för att fortsätta spela, så kallad pottodds.

Information om motspelare som samlats av klienttråden (kapitel 3.2.1) och lagrats, med fördel i en databas som ger snabb tillgänglighet till datan, kan analyseras och ge pokerboten en uppfattning om en motståndares spelarstil (Borgström & Nilsson, 2010). Då motsåndarens mest sannolika spelartil är känd kan denna användas för att beräkna styrkan i motspelarens hand.

• Loose passive – spelar på många händer med låga satsningar.

• Loose aggresive – spelar på många händer men med mer aggressiv satsning på en stark hand. • Tight aggresive – spelar på färre och starkare händer med en aggressiv satsning. En

eftersträvad spelstil för en pokerspelare då den ger bäst chanser för långsiktig vinst. • Tight passive – spelare endast med starka händer men fortfarande med låga satsningar.

(18)

18

Dessa olika spelstilar kan motarbetas med olika strategier som är designade att skrämma eller svälta ut motspelarna. T.ex. så kan en loose-passive-spelare skrämmas med stora höjningar men se upp så att höjningen är värd potten så du själv inte går back.

3.2.3 Chattråd

Chattråden är inte alltid nödvändig då många spelare väljer att avaktivera chatten eller bara att ignorera den då många spelare spelar på flera bord samtidigt och chatten då kan vara ett störande moment. Trots att chatten kan ses som ett extra arbete så kan den vara till nytta för att upprätthålla illusionen att det är en människa och inte en bot som spelar. Chattråden försöker simulera en intelligent konversation mellan boten och en eller flera människor och bör gör detta på en sådan nivå att människorna inte kan avgöra vem, eller rättare sagt vad, de pratar med. Ett sätt att mäta en chatbots ”intelligens” är att utsätta den för ett Turingtest, först beskrivet i Computing Machinery and Intelligence (Turing, 1950). Turingtestet är i enkla ord ett blindtest där en testperson interagerar med anonyma användare där en eller flera är användare i själva verket är datorer som kör avancerade program, som en chatbot. För en briljant matematiker som Alan Turing, namngivare och uppfinnare av Turingtestet, var drömmen om en tänkande maskin något som kom till honom under hans tid med att knäcka nazisternas kodade meddelande under andra världskriget. Ett exempel på en chatbot är Cleverbot som kan uppsökas på dennes webbsida (Rollo_Carpenter, 2010).

En stor del av chattrådens funktion är att ge svar på direkta tilltal från en motspelare, så om motspelare A frågar om boten har spelat länge så kan den t.ex. ge ett svar att boten ”spelat poker i ett par år men aldrig några stora turneringar”. Exakt vad boten skall svara bestäms av chattråden och ju mer komplex denna är desto mer avancerade och exakta svar kan den ge. Det är dock inte nödvändigt att alltid endast ge svar på tal då väl placerade kommentarer, både positiva och negativa, kan gå långt när det gäller att bibehålla en uppfattning av mänsklighet hos motspelarna.

3.3 Screen scraping

Screen scraping är en metod för att avläsa information från en grafisk representation på skärmen, en så kallad bildanalys. Metoden tittar inte på någon kod och avlyssnar inte lagrad data, metoden sker i realtid och kan användas på flera delar av en bildyta samtidigt. Bildanalysering specifikt av text eller numeriska värden kallas för OCR (Optical Character Recognition) vilket betyder optisk teckenigenkänning. Olika teckensnitt försvårar implementering av OCR.

(19)

19

För att utföra en bildanalys för att få fram specifik information utförs följande steg:

1. Isolera vilken del av bildytan som är intressant, t.ex. det numeriska värdet på potten. 2. Den isolerade delen av bilden delas ytterligare till individuella symboler baserat på den

naturliga avgränsningen i text.

3. Varje symbol analyseras individuellt i följd där programmet gör en sannolikhetsbedömning av vilken symbol som är representerad.

4. De tolkade symbolerna sätts sammans och bildar ord eller numeriska värden som nu kan hanteras av tråden.

(20)

20

4 Avslöja en bot

4.1 Identifiera misstagen

För att kunna göra en bot osynlig så måste först de avslöjande beteenden och misstagen identifieras så designidéer kan utvecklas för att dölja dessa röda flaggor. Så hur identifieras dessa misstag?

I denna uppsats används tre benämningar på misstagen beroende på hur dessa beteende och misstag kan upptäckas:

• Intuitiva upptäckter – sådant som en motspelare eller administratör utan djupare studier i beteende skulle kunna upptäcka.

• Analyserande upptäckter – krav på djupare studier av en bots spelhistoria.

• Anti-botmetoder – direkta programfunktioner som letar efter botprogram eller andra metoder som kräver en människas interaktion.

4.1.1 Intuitiva upptäckter

Intuitiva upptäckter som lätt kan upptäckas av en motståndare är de lättaste misstagen att identifiera men också de lättaste att dölja. Vad finns det för beteende eller misstag som snabbt avslöjar en bot (ej rankade)?

• Timing • Speltid • Repetition

Timing kan vara en uppenbar röd flagga för både motspelare eller övervakningsprogram som används för att spåra botar. Den mest uppenbara timingproblemet hos en bot är att med dagens kraftfulla datorer med gigabyte i snabba ramminne och processorhastigheter räknade i gigahertz så kan även komplicerade beräkningar göras snabbare än en människas reaktionstid. Det kan alltså ta en dator kortare tid att beräkna en algoritm än för en människa att hinna utföra en enkel handling på given signal.

(21)

21

Speltid är en annan uppenbar röd flagga som lätt kan avslöja en bot vid pokerspel. En av de stora lockelserna med att använd sig av en pokerbot är att den inte tröttnar på att spela. Vem skulle inte vilja ha ett program som rullar dygnet runt och tjänar pengar åt en? Det är dock denna girighet som avslöjar en bot om inga begränsningar sätts in. En spelare kan lätt antas spela i ett par timmar utan problem men därefter börjar problemen komma. Trötthet, hunger och törst ger svårigheter att koncentrera vilket sig leder till misstag och det är avsaknaden av dessa misstag som kan avslöja en bot för en uppmärksam motspelare. Den spelare som spelat konstant i flera dygn är också en väldigt stor röd flagga.

Repetition är den sista i listan och syftar på enkla mönster som är speciellt tydliga i no-limit Texas Hold’em där det inte finns naturliga begränsningar på höjningarna som exempel. Andra enkla mönster är t.ex. att boten alltid mothöjer med ett visst värde om en motspelare synar på turnkortet eller andra liknande exempel. Repetition är en avslöjande faktor i allt.

4.1.2 Analyserande upptäckter

För att identifiera mer subtila beteenden hos en bot krävs det djupare studier av en bots spel historia över en lång tid. Med denna typ av studier blir mängden data snabbt stor och kanske inte är lämplig som en generell metod för att upptäcka botar bland allmänna spelarpopulationer. Istället så borde denna metod användas för att spåra misstänkta spelare som inte avslöjats av andra metoder.

Den analyserande upptäcktsmetoden letar efter följande (ej rankade).

• Spelmönster • Vinst-förlust snitt

Spelmönster kan inte direkt uppvisa att en spelare egentligen är en bot då en spelare som strikt följer en strategi uppvisar liknande konstanta spelmönster som en bot, men om man studerar en spelare över en tillräcklig lång tid så kan det påvisa mönster som är för konsekventa för att var en pokerbot. Om man jämför spelmönstren hos flera misstänkta botar så kan dessa användas för att spåra liknelser hos olika spelare och på så sätt avslöja spelare som använder flera botar på olika användarkonton (Ruddock, 2010).

(22)

22

En välskriven pokerbot kan tjäna pengar, speciellt vid borden med lägre insatser där pokerstrategier och oddsberäkningar spelar en större roll, och om en spelare uppvisar höga vinst-förlust snitt så kan dessa göra att misstankar mot en spelare kan förstärkas och leda till ett avslöjande.

4.1.3 Anti-bot metoder

Vissa spelföretag tar till med hårdhandskarna mot användandet av botar och tillämpar mer eller mindre kontroversiella metoder för att avslöja vad de anser vara rent fusk.

• Spyware • CAPTCHA

Spyware är en form av program som övervakar vissa funktioner hos en användares dator utan dennas vetskap. Spyware kan installeras på en dator som en del av ett annat program utan att användaren är medveten om att dennes dator nu är öppen för andra. I sammanhanget med online poker så kan spywareprogrammet vara en del av den klient som en spelare använder sig av för att spela och här letar spywareprogrammet efter kända pokerbotar, ofta någon av de kommersiella botarna som säljs av olika programmerare eller företag. Bruket av spyware är dock kontroversiellt eftersom det kan anses vara ett brott mot den personliga integriteten och diverse lagar om avlyssning och övervakning i olika länder.

CAPTCHA (Completely Automated Public Turing Test To Tell Computers and Humans Apart) är en metod för att verifiera att en användare är människa genom att presentera ett visuellt problem som faller sig naturligt för en människa att lösa men orsakar allvarliga problem för en dator som saknar en människas förmåga att tänka utanför givna regler.

(23)

23

5 Dölja en bot

5.1 Timing

För att dölja en bots snabba beräkningstid så krävs det att boten inte reagerar snabbare än en genomsnittlig människas reaktionstid uppmätt till 190ms för reaktion på visuell signal (Kosinski, 2010). När en bot mottaget signalen att det är dennes tur att spela från klienttråden (kapitel 3.2.1) så skiftar boten över till speltråden (kapitel 3.2.2) och ska nu göra sina beräkningar som leder till en handling. Det är tiden från det att speltråden börjar tills det att den skickar den beräknade handlingen som utgör botens reaktionstid och får därför inte understiga den mänskliga reaktionstiden. Skulle boten reagera snabbare än en människa så är den avslöjad.

Så för att hindra boten från att avslöja sig själv så måste speltrådens reaktionstid mätas och om den är snabbare än 190ms så pausar tråden en tid. Märk väl att när tråden är pausad så skiftar boten tillbaka till klienttråden för att övervaka pokerbordet och kan då svara på till exempel chatten om denna funktion är tillgänglig. Tiden som speltråden pausar bör vara ett slumptal mellan vissa intervall för att inte avslöja sig med att alltid reagerar med ett fast värde plus beräknings tid.

Exempel: med en fast paustid på 200ms och beräknings tider som sträcker sig mellan 50-300ms så kommer en bots reaktionstid hamna mellan 250-500ms.

Om boten spelar hundra händer och där medeltiden för ett beslut konstant ligger på 400±100ms så skulle till och med en blind höna kunna uppmärksamma att något är fel. Så istället för att välja en fast paus tid sätt istället tiden till ett mer realistiskt intervall t.ex. 200-2000ms vilket då ger en reaktionstid på 1100±850ms vilket ger en större spridning på enskilda reaktionstider men ändå bibehålla en realistisk reaktionstid med antydan till betänketid eller ouppmärksamhet från en spelare. Studera Figur 3 för en representation på denna lösning där de nya funktionerna är markerade i rött.

(24)

24 Min tur

Beräkna hand med 2 kort Kort på bordet?

Beräkna min position

Beräkna hand med 5-7 kort

Beräkna potodds

2 spelare kvar?

Skicka rätt val till spelbordet Hämta motståndarbeteende Invänta ny turordning ja ja nej nej Mät starttid Mät sluttid Mellantid mindre än 190 ms? Vänta 200-2000ms ja nej

(25)

25

5.2 Speltid

Utöver problemet med timing så faller tiden in i ett annat problem för en bot. Maratonspelomgångar kan förekomma men botar som spelar i långa perioder utan paus är ett uppenbart problem och därför måste en botutvecklare ta hänsyn till följande:

• Vid start av boten så sätts en fast tid för hur länge en bot får spela, antingen som ett slumptal eller av en användare vald tid. När boten har uppnått tiden så fullföljer den sin hand och avslutar spelet.

• Boten sätts på ett schema som anger när boten skall börja spela och när den skall sluta. Dock är det här viktigt att lägga in ett visst slumpmönster så att den inte alltid börjar spela vid ett visst klockslag för att därefter alltid spela i en viss tid.

• Hålla mänskliga speltider så att spel omgångar inte består av konstant långa perioder utan ger hänsyn till det udda ”toa besöket” och ”sömn”. Naturligtvis så kan dessa planeras med ett visst schemastyrt mönster men även här så måste slumpen ges en chans att rucka på tiderna.

5.3 Repetition

Vid spel där spelaren har frihet satt sätta egna gränser på höjningar, spread- och no-limit, så kan sättet som en bot satsar och höjer bli ett avslöjande beteende. Många spelstrategier har vissa fasta sätt att höja och när men även här måste ett visst slumpmässigt beteende få komma fram. Om en strategi föreslår att alltid fyrdubbla en motspelares satsning om spelaren har vissa kort på handen så använd istället ett intervall på 2-6 gånger satsningen för att på så sätt inte slaviskt följa reglerna men ändå hålla sig inom ramen för strategierna.

5.4 Spelmönster

Skillnaden mellan en nitisk strateg och en bot kan ibland vara liten i deras spelmönster. Båda satsar efter vissa fasta strategier beroende på styrkan i deras hand eller om en motspelare är känd för att spela på ett visst sätt (Borgström & Nilsson, 2010). Dock har även den mest nitiska strategen något som en bot inte har nämligen intuition, vad amerikanerna kallar för ”gut feeling”, en känsla som inte nödvändigtvis baseras på något realt utan mer på tro att spelaren har sett något som kanske inte finns där. Denna intuition kan vara både en bra och en dålig känsla, beroende på utfallet, men vad den gör är att spelaren avviker från den fasta strategin och spelar på en hand trots att strategin säger att han inte borde, eller kanske höjer mer fast för att han tror motspelaren bluffar. På gott och ont så

(26)

26

bryter detta etablerade mönster lite då och då. Så för att boten inte skall hamna i ett repetitivt mönster där den blir förutsägbar och upptäckt av misstänksamma motspelare så måste en viss slump introduceras i spelet.

Bluffa är ett bra sätt att skapa avvikelser i spel mönstret då en bluff är något väldigt mänskligt och ibland rent ut sagt dumt. En bot som följer en strategi skulle aldrig bluffa och det är just därför denna funktion måste med i en osynlig bot. Märk väl att bara bluffa helt slumpmässigt kan kosta mycket så vissa regler för när och hur en bluff skall göras bör sättas upp. Reglerna för bluff kan utformas på olika sett men överlag så måste följande bejakas:

• Bluffa endast då boten har svaga kort.

• Bluffa endast då boten har lite pengar satsade men en vinst hade gett en bra förtjänst. • Bluffa endast mot spelare som inte är av spelstilen tight aggressive (kapitel 3.2.2).

(27)

27 Min tur

Beräkna hand med 2 kort Kort på bordet?

Beräkna min position

Beräkna hand med 5-7 kort

Beräkna potodds

2 spelare kvar?

Skicka rätt val till spelbordet Hämta motståndarbeteende Invänta ny turordning ja ja nej nej Uppfylls kraven för bluff? Bluffa nej ja

(28)

28

5.5 Vinst-förlust snitt

Här gäller det att inte bli för girig. Det är inte svårt att förstå att ett spelföretag som aktivt letar efter användare som fuskar genom att använda sig av pokerbotar kommer först och främst att titta på de som har ett bra vinst-förlust snitt. Ett högt snitt tyder på att spelaren är en bra strateg, lugn och logisk, tre egenskaper som just en bot är byggd för. Det är också ganska självklart att ett spelföretag inte tycker om att förlora pengar och har därför mer anledning att gå efter de som tjänar pengar mot de som förlorar pengar.

Genom att boten beräknar vinst-förlust snittet så kan den varna användaren att den närmar sig siffror som kan dra till sig uppmärksamhet så användaren kan göra ändringar i botens beteende.

5.6 Spyware

Praxisen att integrera övervakningsprogram, så kallade spyware i en spelklient, kan vara det bästa sättet att med säkerhet verifiera att en användare kör en pokerbot. Detta gäller speciellt kommersiella pokerbotar som finns öppet att köpa på internet genom en enkel Google-sökning. Dessa pokerbotar är precis skrivna för vissa online pokerklienter och det är därför inte osannolikt att spelföretag kan inkludera spyware i sin klient för att leta efter just de botar som är skrivna just för deras klient.

Genom att designa och utveckla egna pokerbotar som inte finns allmänt tillgängliga så blir bruket av spyware genast mindre effektivt. Istället för att leta efter specfika program på en användares dator så måste spyware programmet nu leta efter den generella kommunikationen och kommandona som en osynlig pokerbot använder för att spela med klienten. Om pokerboten använder sig av screen scraping (kapitel 3.2.1) och i sin tur styr musen för knapptryckningar så sker ingen direkt kommunikation mellan klienten och boten.

5.7 CAPTCHA

Trots att CAPTCHA har hackats vid ett flertal tillfälle, antingen genom att utnyttja luckor i kodningen eller genom att göra en bildanalys (Yan & Salah El Ahmad, 2008), så fortsätter CAPTCHA att utvecklas och göras mer och mer avancerade vilket ställer större krav på den som vill komma runt

(29)

anti-29

botskyddet. Genom att inkludera ett program som sköter bildanalyseringen i boten så kan även detta skydd knäckas. Bildanalys metoden OCR beskriven i kapitel 3.3 kan även tillämpas för CAPTCHA. Dock så är CAPTCHA specifikt designat för att försvåra denna bildanalysen vilket presenterar ett svårlöst problem. CAPTCHA använder färg, form och distraktioner i sin design, se Figur 2, vilket gör att varje steg i analysen av bilden försvåras.

(30)

30

6 Slutsatser

6.1 Sammanfattning

Anledningen att istället utveckla en egen pokerbot är först och främst för utmaningen för en programmerare. Den egna pokerboten kan göras så avancerad som programmeraren vill men kan snabbt växa till att bli så komplicerad att mängden arbete som behöver läggas ner överskuggar nyttan med den. Det finns redan ett antal av pokerbotar tillgängliga kommersiellt för ett antal populära pokersidor på internet. Dessa botar har sina för- och nackdelar men gemensamt är att de kostar pengar att köpa och i vissa fall tillkommer en löpande kostnad för extra funktioner och uppgraderingar.

6.2 Slutsats

Grundanalysen av Texas Hold’em poker visar att implementeringen av en pokerbot är både möjlig och implementeringen av regler, strategier inte bör vara mer än en programmerare med goda programmeringskunskaper klarar av. Underlag för implementeringen finns lättillgänglig och i stora kvantiteter vilket underlättar designen av pokerboten.

När det gäller den kommunikativa biten av arbetet så försvåras arbete. Val av metod är beroende på vilken typ av klient som pokerboten skall spela mot och i fallet med screen scraping så tillkommer kravet på bildanalyskunskaper vilket är ett helt eget område som måste studeras.

Beteendemodellen är den lättaste delen då detta handlar om att ändra fungerande kod med avbrott, bluffar och tidscheman. Här finns dock också svåra delar såsom den frivilliga implementeringen av en chatbotfunktion. Skulle valet av pokerklient innehålla en CAPTCHA eller anti-botspyware så rusar svårigheten i taket och ställer nu enorma krav på kunskaper och designtalang hos programmeraren.

6.3 Rekommendationer

Efter att ha arbetat med denna uppsats så är det min egen uppfattning att det krävs omfattande kunskaper, inte bara i programmering utan också inom poker, bildanalysering och artificiell intelligens. Om målet med att konstruera en pokerbot är att tjäna pengar så är det rekommenderat att köpa en färdig pokerbot från något av de tillgängliga erbjudandena på internet. Är målet istället

(31)

31

att utmana sig själv som programmerare så kan förhoppningsvis denna uppsats ge en bra bred bild över vad som kommer att krävas av programmeraren.

(32)

32

Litteraturförteckning

Borgström, S., & Nilsson, M. (2010). Pokerboten. Malmö, Sverige: Malmö Högskola.

Deitel, H. M., & Deitel, P. J. (2005). JavaTM How to program, 6th edition. Jersey, USA: Pearson Education, Inc.

Glimne, D. (2005). Pokerhandboken, 3:e upplagan. Falun, Sverige: B. Wahlströms.

Kosinski, R. J. (September 2010). A Literature Review on Reaction Time. Hämtat från Clemson University Department of Biology: http://biae.clemson.edu/bpc/bp/Lab/110/reaction.htm den 13 Januari 2011

Rollo_Carpenter. (den - - 2010). Cleverbot.com - a clever bot - speak to an AI with some Actual Intelligence? Hämtat från Cleverbot.com: http://www.cleverbot.com/ den 18 2 2011

Ruddock, S. (den 24 Juli 2010). Online Poker Scandal: Poker bots caught after winning $58k at PokerStars. Hämtat från Examiner.com: http://www.examiner.com/online-poker-in-national/online-poker-scandal-poker-bots-caught-after-winning-58k-at-pokerstars den 13 Januari 2011

Svenska_Akademin. (1997). Svenska Akademins Ordbok. Hämtat från Svenska Akademins Ordbok: http://g3.spraakdata.gu.se/saob/ den 12 Januari 2011

Turing, A. (1950). Computing Machinery and Intelligence. Mind #59 , 433-460.

Watson, I., & Rubin, J. (2008). CASPER: A Case-Based Poker-Bot. i W. Wobcke, & M. Zhang, AI 2008: Advances in Artificial Intelligence (ss. 594-600). Auckland, New Zealand: Springer Berlin / Heidelberg. Yan, J., & Salah El Ahmad, A. (2008). A Low-Cost Attack on a Microsoft CAPTCHA. Newcastle, UK: School of Computing Science, Newcastle University.

Zunt, D. (1998). Who did actually invent the word "robot" and what does it mean? Hämtat från Karel Capek: http://capek.misto.cz/english/robot.html den 12 Januari 2011

Figure

Tabell 1 : Vinnande händer
Figur 1 : Flödesdiagram för speltråden
Figur 3 : Flödesdiagram för en timing modifierad speltråd
Figur 4 : Flödesdiagram för en bluffande speltråd

References

Related documents

The overarching aim is to compare the language that students in upper secondary school use during online gaming and in classroom situations and how one influences the other and

lyckats odla stora kvantiteter av mänskliga insulinproducerande -celler som reagerar på glukos från embryonala stamceller (ES-celler).. Tanken är att dessa celler ska transplanteras

de underliggande faktorerna som styrkan i poker som produkt, utebliven prispress för online-poker spel, låga marginalkostnader för ytterligare spelare och partners, god likviditet i

resultatet, som för första gången visar på genetiska skillnader, pekar på att tibeta- nernas arvsmassa skulle kunna påverka.. hemoglobinnivåerna

 Den här studien syftar till att beskriva sjuksköterskors upplevelser av att vårda äldre svårt sjuka patienter i livets slutskede på vårdavdelningar utan palliativ

RQ1: Which machine learning technique, supervised or unsupervised, yield greater performance when classifying social bots using metadata features of social media user accounts..

Personer som inte  använder fotriktiga skor  (så som högklackat,  smala/trånga skor,  spetsiga skor och så  vidare) .

There were two main reasons for this; (1) 24hPoker operates both as a service provider and as a gaming operator in the online poker industry, and (2) 24hPoker is, among the companies