精華區beta GameDesign 關於我們 聯絡資訊
瀏覽"How i built a working online poker bot?"心得 作者:NDark 時間:20100113 參考網站: http://www.codingthewheel.com/archives/how-i-built-a-working-poker-bot 前言 我會去看這頁面是由於一位朋友(這邊稱L先生)對這個有興趣,但又技術不足, 因此我總共花了4個晚上(不含文章撰寫) 把James Devlin這一系列相關的文章大致上看過一遍。 所謂大致上就是我沒有每段都去仔細看。因此本篇文章只能說是一個心得報告。 對於有興趣的人只能說是個導讀。 我認為這篇文章應該屬於AI應用的部分,因此應該適合本版。 James Devlin先生是一個視窗程式程式設計工作者與撲克玩家, 他在完成自己的線上撲克機器人後在2008年初開始發布這一系列文章。 主要說明你要怎麼建置自己的線上撲克機器人。 很重要的第一點是: Devlin說到:"為了能贏,你必須讓你的機器人不能贏"。 因為這個機器人是在現實世界賺真實的錢,一旦賺的太凶可能會把地球玩垮XD。 (他的意思大概是這樣沒錯,原意複利與倍數的級數會導致賺錢的速度高過你的想像, 以至於到最後你沒辦法獲利[不管是被盯上或是錢都賺光了]。) 很重要的第二點是: 線上撲克的客戶端程式基本上都是間諜程式- "online poker client are basically spyware" 是為了紀錄你瀏覽過哪些網頁,是否開啟什麼程式。 很重要的第三點是: 透過線上撲克機器人,你還是不可能看透對手的牌。(對手的資料沒有存在客戶端) 很重要的第四點是: 建議不要使用非原生語言來撰寫,因為你要處理的東西是視窗程式, 因此越能靠近它的語言是最好的,如C++。 "C# and other managed code is not suitable for this case" L先生曾經找過程試設計的工作者來估價這個系統,結果是30萬。原本我以為太貴, 但是等我全部把這一系列文章都看完,我覺得確實值這個價錢(甚至更高)。 短時間之內,我並不想投入這個金錢遊戲, 因為我還不覺得這個工作可以讓我長久專心投入。 系統 簡單來講,要完成一個線上撲克機器人你會需要建置一個系統 以架構來說,你會有 1.虛擬的bot程式或PC若干。 2.一個主控伺服器控制各PC上的bot程式喚起或結束,收集資訊。 3.資料伺服器:bot的歷史資料。 4.收集伺服器:收集線上的各種資料庫。 以流程來論 input processing output 擷取資訊 處理資料 輸出驅動 擷取資訊-從線上撲克的程式擷取資料的系統,這裡牽涉比較多的視窗底層運作。 處理資料-從目前牌桌狀況決定要作什麼的系統,這裡則是AI與撲克理論。 輸出驅動-按下線上撲克程式的控制項並真正反應的系統。 所謂"簡單"是指你已經有下列這些背景知識之後會較為簡單, 如果你沒有這些背景知識(像我一樣),那麼整個工程會變的相當大, 幸運地,作者釋出了他部分的程式碼,你可以照抄照改。 會需要學習的程式技巧(What skills will I need to write a bot?) Windowing & GDI Windows Hooks Kernel objects DLL Injection (in general: the injecting of code into other processes) API Instrumentation (via Detours or similar libraries) Inter-process Communication (IPC) Multithreading & synchronization Simulating user input Regular expressions (probably through Boost) Spy++ 會需要學習的技術領域 Artificial Intelligence. Poker Strategy. Input Simulation. Operating Systems. Reverse Engineering. Probability and Statistics. 建議讀物(Recommended Reading)-程式設計類 Windows via C/C++. Jeffrey Richter. Exploiting Online Games: Cheating Massively Distributed Systems (Addison-Wesley Software Security Series). Exploiting Software: How to Break Code (Addison-Wesley Software Security Series). Greg Hoglund and Gary McGraw. 建議讀物(Recommended Reading)-牌局類 The Theory of Poker. David Sklansky. The Mathematics of Poker. Bill Chen and Jerrod Ankenman. Professional No-Limit Hold 'em: Volume I. Matt Flynn, Sunny Mehta, and Ed Miller. No Limit Hold'em: Theory and Practice. David Sklansky and Ed Miller. Gambling Theory and Other Topics. Mason Malmuth. Getting Started in Hold 'em. Ed Miller. 作者有釋出的程式 XPokerBot XMonitorBot XFileMonitor 作者收集到的算牌函式庫 Poker Hand Evaluators : collect open-source poker code The Pokersource Poker-Eval library The Java enumeration library built on top of Pokersource Keith Rule's C# port of the Poker-Eval library Cactus Kev's 5-Card Evaluator Paul Senzee's Improved 5-Card Evaluator Paul Senzee's 7-Card Evaluator Moritz Hammer's Directed Acyclic Graph-based 7-Card Evaluator Steve Brecher's HandEval routines The Two Plus Two 7-Card Evaluator (未完待續) -- "May the Balance be with U"(願平衡與你同在) 視窗介面遊戲設計教學( http://0rz.tw/V28It ),討論,分享。歡迎來信。 視窗程式設計(Windows CLR Form)遊戲架構設計(Game Application Framework) 遊戲工具設計(Game App. Tool Design ) 電腦圖學架構及研究(Computer Graphics)論文代讀(含投影片製作) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.77.176
ddavid:有個朋友才沒多久前也跟我提過一樣的事,該不會同一人吧XD 01/13 19:56
ddavid:我雖然會打TH也算有程式能力,不過特定必要技術上有所不足 01/13 19:57
ddavid:又一時沒空去學,所以我照實說暫時幫不上忙XD 01/13 19:58
rofellosx:那怎樣躲過間諜程式? 01/13 20:00
justben:spy++是真的有這東西嗎?XDDD 01/13 20:36
wangm4a1:推 01/13 21:09
etrexetrex:好像有道理喔 外掛直接賺現金 01/13 23:00
KanoLoa:推推 01/13 23:12
rofellosx:哪時開發機器人炒股 01/13 23:23
FSVDFS:好像看到攻殼機動隊的劇情了@@ 01/14 03:44
enthos:好文! 註: Spy++(Debug用)-Visual Studio Tools 01/14 10:32
yoco315:我曾經跟一位版友一起接過 poker bot 的 case... 01/15 00:46
yoco315:但是只作到一半,還好是分階段拿錢的 :D 業主後續沒動作 01/15 00:47