Poker-AI.org
http://poker-ai.org/phpbb/

Going multi-table with OCR and VM
http://poker-ai.org/phpbb/viewtopic.php?f=26&t=2867
Page 1 of 1

Author:  corintio [ Mon Feb 02, 2015 3:04 am ]
Post subject:  Going multi-table with OCR and VM

Hi fellow botters,

Now that my bot is able to automatically sit-in and sit-out of a table, my next step is to go multi-table. My setup is:
- Casino software runs on a Windows VM
- Table window is maximized
- My bot runs on the host, and captures screens of the VM regularly using the VM's API.

As I see it, I have two options to "play" on more than one table:
1 - Open 4 tables and "tile" them side by side. Than I can have one Scraper/AI pair for each table, reading a different area of the same screenshot each
2 - Open N tables maximized, and turn on "Bring to front" option on the Casino software. This way my bot can sit waiting for the table to change (based on table name or window title), select the correspondent Scraper/AI pair and process the screenshot

Even though the second option looks more appealing to me, as I can multi-table on more than 4 tables at the same time, I feel that this behavior could raise some flags.

What do you guys think? Is it common for a reg to open 8-10 tables fullscreen and just wait for the tables to come up?

Any inputs on this would be very helpful.

Thanks,
Corintio

Author:  shalako [ Mon Feb 02, 2015 6:16 am ]
Post subject:  Re: Going multi-table with OCR and VM

I use option 1 and it works pretty well. If you want more tables just buy more monitors which are cheap enough these days.

Author:  shalako [ Mon Feb 02, 2015 5:18 pm ]
Post subject:  Re: Going multi-table with OCR and VM

Also..you mentioned having one AI and one scrapper associated with each table. I would go with one bot for all the tables as its way more efficient. I use an array in a separate thread with a semaphore whenever a decision is being made. I have to use a semaphore due to possible mouse/keyboard command conflict with the table hopper which runs in another thread. This setup can handle any number of tables unless your doing some serious number crunching although a newer computer can solve that problem.

Author:  corintio [ Mon Feb 02, 2015 6:17 pm ]
Post subject:  Re: Going multi-table with OCR and VM

Thanks for the reply, shalako.

shalako wrote:
I use option 1 and it works pretty well. If you want more tables just buy more monitors which are cheap enough these days.

As I'm running inside a VM, the number of monitors does not really matters. I can make the VM screen bigger, and have more tables, but the problem with that is that the VirtualBox API is too slow taking snapshots (1600x1280 takes ~400ms). But maybe 6 is a good number and that is feasible with tiled windows.

How many tables your bot play on? What is a "safe" number? If it is ok to have 8-10 tables opened, I'd go with the second approach....

shalako wrote:
Also..you mentioned having one AI and one scrapper associated with each table. I would go with one bot for all the tables as its way more efficient. I use an array in a separate thread with a semaphore whenever a decision is being made. I have to use a semaphore due to possible mouse/keyboard command conflict with the table hopper which runs in another thread. This setup can handle any number of tables unless your doing some serious number crunching although a newer computer can solve that problem.

I use one instance of the Scraper for each table because I can have tables with different layout open (ex: 6max vs HU). Also the scraper keeps the state of the game (bankrolls, actions, etc..) so it can correctly map it to a GameInfo object (from Meerkat API). For the AIs I also have one instance per table. That allows me to have different AI for each kind of game and each situation.

It is not inefficient. Each Scraper and each AI have its own thread. My architecture is based on Actors for Scrapers,AIs,Hoppers, etc... and Dataflows to send mouse/kbd commands to the VM. It's similar to what you're doing with semaphores, but at a higher level of abstraction.

Author:  shalako [ Mon Feb 02, 2015 10:43 pm ]
Post subject:  Re: Going multi-table with OCR and VM

Wow..thats all over my head..sounds like you have it all covered. I have never considered the multiple AI thing but that is a good idea. I am not doing much OCR (just stacks and pot size) so that is probably why its fast for me. Besides the hole cards most of the scrapping I am doing is only 1x1 pixel hash code checks (players left, active buttons etc) so there is not much processing going on.

Author:  corintio [ Tue Feb 03, 2015 12:57 am ]
Post subject:  Re: Going multi-table with OCR and VM

Yes, as I told before in another thread, I read everything from screenshots, using OCR/Image Comparison. The scraper is fast (around ~35ms) per screenshot, what is slow is the VirtualBox API call to get the screenshot....

Anyway, how many tables does your bot play on?

Author:  shalako [ Tue Feb 03, 2015 4:40 am ]
Post subject:  Re: Going multi-table with OCR and VM

Hey..the most I ever ran with this kind of setup was 16 cash tables but I had everything hard coded (EV's etc) so there was zero post processing to do. I cant even run one table of PLO right now with an older 8 core 3ghz machine. Preflop is instant but post flop is taking 11 seconds just 3 handed. I need to run 4 so its gonna take a serious machine to do it as I need to get that down to around 3 seconds tops.

Author:  SuitedAce [ Wed Feb 11, 2015 11:03 pm ]
Post subject:  Re: Going multi-table with OCR and VM

corintio wrote:
What do you guys think? Is it common for a reg to open 8-10 tables fullscreen and just wait for the tables to come up?

No, this is not common.

In the case you chose "Bring to front", the table size is usually 70 - 80% of the fullscreen and the position of the tables is overlapping.

- If you have to act at table A while table B is brought in front, then you simple click directly on table A to bring it in front again and act.

- If your 8-10 tables have fullscreen size and you have to act at table A while table B is brought in front, then you have to close table B to have table A again in front or search table A in the tables list on your pc and click on it to bring it in front. But imagine while you close table B to have table A again in front, table C is brought in front and so on...

Author:  corintio [ Thu Feb 12, 2015 12:17 am ]
Post subject:  Re: Going multi-table with OCR and VM

Thanks for your reply, SuitedAce.

SuitedAce wrote:
- If your 8-10 tables have fullscreen size and you have to act at table A while table B is brought in front, then you have to close table B to have table A again in front or search table A in the tables list on your pc and click on it to bring it in front. But imagine while you close table B to have table A again in front, table C is brought in front and so on...

On which site did you get this behavior? I checked with two distinct sites and when table A is brought to front, all other tables wait for my decision on it. If table B needs my attention before I act on table A, it is highlighted in the task bar, but does not comes to the front. In this case, as soon as I act on table A, table B comes to front.

I already implemented this logic, and it is working fine. Do you think this is not a good strategy for multi-table? Do you think that this could be a red flag?

Anyone else has an opinion on that?

Thanks,
Corintio

Author:  SuitedAce [ Fri Feb 13, 2015 2:00 am ]
Post subject:  Re: Going multi-table with OCR and VM

On all sites I have played so far, it was that the table I have to act is brought in front instantly.

First time I hear that the 2nd, 3rd, etc. table wait until I have acted at the first table brought in front.

Even if this feature is available, I would not use it for multi-tabling. Because when I have to act at table A and table B is waiting, then the small poker site window is blinking, but I have to click on it to open the list with all tables and then I have to click on all the blinking tables to see what is going on. Another disadvantage is that if I see the list with all the tables blinking where I have to act, I don´t see/know at which table I have to act first.

Yes, I think playing 8,10 or more tables fullscreen is not a good strategy and no one ever told me that he do this.

If no one do this usually and you are the only one who do this, yes, then this could be a red flag. However, I have not much knowledge about security and even don´t know if a poker site track the size of your tables. And the security level/features are also dependent on the poker site.

Author:  SkyBot [ Fri Feb 20, 2015 4:19 pm ]
Post subject:  Re: Going multi-table with OCR and VM

corintio wrote:
... what is slow is the VirtualBox API call to get the screenshot....

I do it like you. But I take the screenshot on the host (on Linux). This seems very fast (using Imlib2, in the milliseconds, also window still does not have to be visible, but must not be minimized I think).
Also with this method you can still have a larger screen than your display, just increase the "Linux desktop size".

Also my bot does not play with poker windows full screen but with the default poker windows. However, I'm afraid of the day Stars changes the default poker windows size beyond what my scraper can deal with...

Edit: removed this, because is discussed in other thread

Author:  Rony2jim [ Wed Jul 17, 2019 1:11 pm ]
Post subject:  Re: Going multi-table with OCR and VM

shalako wrote:
I use option 1 and it works pretty well. If you want more tables just buy more monitors which are cheap enough these days.

I agree!! :)

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/