Osynlig pokerbot Teorier för att undvika detektering vid online-spelande med pokerbot



Relevanta dokument
Mörkpoker Strategi Christian Eriksson och Mikael Knutsson Uppdaterad

Pottstorleksfilosofin ett exempel

Implicita odds och omvända implicita odds

Del 8. Taktiska åtgärder

Kortspel. Ett spel - tusen upplevelser

Examensarbete. 15 högskolepoäng. Pokerboten. Behandlar teorier för att ta fram algoritmer till en bot som spelar poker

Genom att följa dessa steg lär du dig snabbt att spela onlinematcher... och som du kan se är det mycket enkelt, roligt och spännande!

SANNOLIKHET OCH SPEL

Utförliga regler för TRAX

Sannolikheten att vinna ett spel med upprepade myntkast

getsmart Grå Regler för:

1. TITTAR Jag tittar på personen som talar. 2. TÄNKER Jag tänker på vad som sägs. 3. VÄNTAR Jag väntar på min tur att tala. 4.

REGLER CHICAGO, SM DISCIPLIN 2019 #maucertified #friskförklarat

Kort om World Wide Web (webben)

Spelregler. Poker. Senast ändrade:

Exempel på observation

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

Lowball Regler Mikael Knutsson och Christian Eriksson Uppdaterat

Spelregler. 2-6 deltagare från 10 år. En svensk spelklassiker

Ordlista. Aggressiv / Överaggressiv När en spelare satsar eller höjer en stor eller väldigt stor andel av gångerna. Motsats till passiv/svag-tajt.

Del 3 Att läsa bordet

CyberKanin. Erhåll 1 stjärna varje gång du köper ett "låt stå"-kort. CyberKanin. CyberKanin. Kort kostar 1 energi mindre (minimum 0).

Hold em Regler Mikael Knutsson och Christian Eriksson Uppdaterat

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens Erik Claesson

Handbok Officersskat. Martin Heni Eugene Trounev Granskare: Mike McBride Översättare: Stefan Asserhäll

Högskolan på Åland serienummer 2013:42. Informationsteknik. Mariehamn 2013 ISSN

Kombinationer och banor i agilityträningen

Spelutveckling - Gameplay. Design och produktion

Spelregler för restaurangkasinospel

Regler för: getsmart Grön

En innebandyspelare består av två olika grundpelare. Den ena är fysik som består av styrka, snabbhet, kondition och balans.

Copema Supertoto, manual

Slump och statistik med Scratch

getsmart Gul Regler för:

Uppgift 1 ( Betyg 3 uppgift )

Ungefär lika stora tal

Konflikter och konfliktlösning

Nätverksprogrammering, EDA095

file://c:\hemsidor\xpokers\protokoll\freddas pokerskola mini.htm

Programmering. Scratch - grundövningar

STOCKHOLMS UNIVERSITET MATEMATISKA INSTITUTIONEN Avd. Matematisk statistik Anders Björkström

Slump och statistik med Scratch. Se video

FÖRKORTA DIN VÄG PÅ BANAN

Kungar och Skatter. 2. Ta sedan de fyra essen och blanda dem och lägg sedan slumpvis ut ett ess uppvänt i varje hörn (se fig 2).

Freddas turneringsskola

EXAMENSARBETE. Poker-AI

DEN RUNDA TUNNELN EN UNDERSKATTAD FIENDE

Förbättra kommunikationen mellan målvakt och backar. Torbjörn Johansson

7-2 Sammansatta händelser.

Kortspelande mjukvara för upplevelsebaserad inlärning

Någonting står i vägen

Taktikanalys i tennis

Regler för: - Räkna med sedlar og mynt!

Internets historia Tillämpningar

UPPGIFT 1 V75 FIGUR 1.

LUFFARSCHACKETS GRUNDER

Artificiell intelligens, eller Kommer din dator att bli klokare än dig? (eller kanske är den redan det?)

Genetisk programmering i Othello

När vi läste Skolverkets rapport Svenska elevers matematikkunskaper

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Mobil streckkodsavläsare

Institutionen för datavetenskap, DAT060, Laboration 2 2 För denna enkla simulerings skull kommer handen att representeras som ett par tal μ värdet på

Vad behöver du för att kunna spela? Jo, du och din motståndare behöver varsin egen kortlek med 60 kort, ett mynt att singla slant med och några

Fyra i rad Javaprojekt inom TDDC32

Allmänt om Pidro. Spelets uppbyggnad

Optimal abstraktion i heads up no-limit Texas hold em DAN ERIKSSON

Bloggar - Som marknadsföring och varumärkesbyggande. Calle Johansson Essä i Digitala Distributionsformer Högskolan Väst - 23 maj 2011

Planeringsspelets mysterier, del 1

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

Kristian Almgren Artificiell Intelligens Linköpings Universitet Talstyrning

STRESS ÄR ETT VAL! { ledarskap }

Rapport spelansvarsverktyg

Utredning om KabelTV och bredband

Övning: Föräldrapanelen

Övning: Föräldrapanelen Bild 5 i PowerPoint-presentationen.

Tillämpad experimentalpsykologi [2] Tillämpad experimentalpsykologi [1] Tillämpad experimentalpsykologi [3] Empirisk forskningsansats

Utgångar. Att jobba med Utgångar och Intervaller

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund Marcus Widblom Senast ändrad: 13 / 05 / 08

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Kapitel 1 Komma igång... 3

Spelregler. Poker. Senast ändrade:

Mentorprogram Real diversity mentorskap Att ge adepten stöd och vägledning Adeptens personliga mål Att hantera utanförskap

Handbok Kiriki. Albert Astals Cid Eugene Trounev Översättare: Stefan Asserhäll

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

Tanka program KAPITEL 7. Shareware och freeware. Shareware. Freeware

Artificial Intelligence

Bridge. på 10 minuter

Tillämpad experimentalpsykologi [2] Tillämpad experimentalpsykologi [1] Empirisk forskningsansats. Tillämpad experimentalpsykologi [3] Variabler

Orienteringsteknik. Steg 1: Att förstå kartans symboler. Steg 2: Att förstå kompassen. Steg 3: Att förstå kartan. Steg 4: Koncentration.

Upptäck 7 trick som förvandlar ditt nyhetsbrev till en kassako

TDDD92 Artificiell intelligens -- projekt

Ventilen. Nytt på IT- fronten. System som kan göra intelligenta saker, såsom att efterlikna mänskligt beteende och tänkande

Three Monkeys Trading. Tänk Just nu

kl Tentaupplägg

Blinkande LED med 555:an, två typkopplingar.

Facebook Twitter Instagram Pinterest Google+ Bloggar Forum sociala medier för butiker och företag

Liten introduktion till akademiskt arbete

TÖI ROLLSPEL F 003 Sidan 1 av 5 Försäkringstolkning

DATORÖVNING 3: EXPERIMENT MED

Programmeringsappar. Av Alex

Transkript:

Examensarbete 15 högskolepoäng Osynlig pokerbot Teorier för att undvika detektering vid online-spelande med pokerbot A stealth poker bot Theories for avoiding the detection of a poker bot during online gaming Hans Persson Högskoleingenjörutbildningen Data/Telekommunikation, Malmö högskola, Höstterminen 2010 Examinator och handledare: Bengt J Nilsson 1

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 2

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 3

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. 4

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. 5

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 misstagen och vilka anti-bot metoder används av spelföretagen? 6

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. 7

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. 8

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. 9

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. 10

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. 11

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. 12

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. 13

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. 14

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). 15

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 Kort på bordet? ja nej Beräkna hand med 2 kort Beräkna hand med 5-7 kort Beräkna min position Beräkna potodds 2 spelare kvar? nej ja Hämta motståndarbeteende Skicka rätt val till spelbordet Invänta ny turordning Figur 1 : Flödesdiagram för speltråden 16

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 essess 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. 17

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. 18

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. 19

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. 20

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). 21

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. Figur 2 : CAPTCHA bild 22

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. 23

Min tur Mät starttid Kort på bordet? ja nej Beräkna hand med 2 kort Beräkna hand med 5-7 kort Beräkna min position Beräkna potodds 2 spelare kvar? nej ja Hämta motståndarbeteende Mät sluttid Mellantid mindre än 190 ms? ja nej Vänta 200-2000ms Skicka rätt val till spelbordet Invänta ny turordning Figur 3 : Flödesdiagram för en timing modifierad speltråd 24

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å 25

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). Se Figur 4 för en bluffande modifiering av speltråden. 26

Min tur Kort på bordet? ja nej Beräkna hand med 2 kort Beräkna hand med 5-7 kort Beräkna min position Beräkna potodds 2 spelare kvar? nej ja Hämta motståndarbeteende Uppfylls kraven för bluff? nej ja Bluffa Skicka rätt val till spelbordet Invänta ny turordning Figur 4 : Flödesdiagram för en bluffande speltråd 27

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 anti- 28

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. 29

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 30

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. 31

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/onlinepoker-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 32