Bot Learning

AI discussion, ideas, and SDK help.
Post Reply
User avatar
n00less cluebie
Lux Cantor
Posts: 8375
Joined: Sun Jan 06, 2008 8:55 am
Location: At the Official Clown Reference Librarian Desk--'All the answers you weren't looking for.'
Contact:

Bot Learning

Post by n00less cluebie » Thu May 22, 2008 1:32 pm

OK, most of the good bots are great at interpretting the current position of the board, and making moves based upon that state. But how would we make the next level of smart A/I beasts?

This is mostly for Varbot, but conceivably could be used for any advanced A/I bot.

What sorts of things can a Bot LEARN from one game to another about different player's gameplay? If the bot were to have a filefolder on each player, what would we want to put in it?

I have some ideas, but I'd really like to hear other voices, esp. Kitty's

E.g.
Does Player (X) respond to Diplomacy? If I ask him to do something, will he follow through, or simply ignore my requests.

HOW does Player (X) react to my moves/requests? Will he respond to actions I do (even if don't ask) -- For example, if I were to asshat a player, is he going to suicide on me? Is he someone who will farm? Someone who will burn?

How observant/dangerous is Player (X)? Do I need to adjust my strategy to focus more of my attention on him?

How erratic/stable is Player(X)? Do I have any expectations of the player, or is he just going to act randomly. {I have an easier time dealing with someone who I KNOW is going to suicide on me, than someone I have no idea what he's going to do}

What else would our ideal Bot like to know?

Kitty? Take it away

User avatar
kitty on catnip
Lux Elder
Posts: 2207
Joined: Tue Jun 06, 2006 12:34 pm
Location: BACK IN THE FORUMS...
Contact:

Post by kitty on catnip » Thu May 22, 2008 2:22 pm

*Cracks his knuckles*

OK. Considering I know nothing about computer programming, or even computer themselves, I am only speaking in hypotheticals here...forgive me if I can't be more specific.

Diplomacy is this: Do to others what they do for you. Also the golden rule.

Set up a bot with the 'Golden Rule', and it will prove to be a mighty adversary...

In order to do this, you must set up some dialoge function to interact with humans.

Example: "Please farm Australia, Kitty on Catnip"

I then farm for VarBot. I do this for 2 reasons.

1.) To save my armies, and card before they get killed.
2.) To create a diplomatic effect, for that player will remember my generosity in the future.

The funny about classic is that in the beginning it's a gentlemans game.

Farm this, Farm that. Let's all hug and kiss, and help eachother, and save the world.

BUT...after the first round of cashing...It's every man to himself. Noone asks for favors anymore.

To program a bot that remembers favors, would be an extraordinary progression into the realm of Bot/Human co-existence.

There are 3 basic dialogues a bot must have:

1.) 'farm x'
2.) 'I am taking 'x' this turn. Please farm/exit while you can'
3.) 'Move x'

"3" is going to be the most chilling experience of them all...

Think about it...If the bot is going to move it's armies into Europe from SA...And north africa is blocked. He says "Kitty on Catnip, Please move North Africa"

I'm getting chills just thinking about it!


Here is a scenario with no dialogue needed.

VarBot is going to take SA. But the problem is that there are armies in Brazil, Venezuela, and Argentina. Rather than placing in Peru, and attacking them, to take countries, he should just place in Peru, and farm where he can WITHIN a cont border.

I personally would not program the bot to farm everything at once, just to be 'nice', because it's illogical. He should only farm if he has no other option. Once he is clear to take income, he is done farming. period. He should then start placing in Asia, to set up ATTACK MODE.

Another note: A bot , nor human should ever 'keep an eye' on a better player. Most likely, they will not be cause for disturbance, because they will do what is in their best interest to win. It's the asshats and noobs it needs to watch out for...

Example: It is bordered with Europe, in Africa. It k nows Europe player has only 50 games. It should thus build higher borders in Africa, for fear of being attacked. make sense?

The bot should enver suicide , nor asshat, simply because it is attacked.

The bot COULD potentially attack back...if it is attacked. Example: Player A hits africa. VarBot attacks back, hitting Europe. This should only be done if the bot CASHES FIRST. It should never weaken itself more than is necessary if it still has cards.

What am I missing?

User avatar
n00less cluebie
Lux Cantor
Posts: 8375
Joined: Sun Jan 06, 2008 8:55 am
Location: At the Official Clown Reference Librarian Desk--'All the answers you weren't looking for.'
Contact:

Post by n00less cluebie » Thu May 22, 2008 3:06 pm

Hmmmm....good points, but you're answering a different question than I'm currently asking. I'm not asking what the bot should DO (yet--this will probably fit in another thread....) I'm asking what the bot should LEARN from other players. What sorts of information do you know about other players. What knowledge do you store about how different players act?

User avatar
kitty on catnip
Lux Elder
Posts: 2207
Joined: Tue Jun 06, 2006 12:34 pm
Location: BACK IN THE FORUMS...
Contact:

Post by kitty on catnip » Thu May 22, 2008 3:19 pm

well...I feel this is too intricate to program. The bot itself would have to have an intelligence that calculates every situation...

Most of my 'memory' is based off of such little things...that have to do with how a player sets up, if his line ups are obvious, or discreet...

how to pre-empt something based off what I feel they will do.

It's all so intricate, I don't think a bot could ever learn this.

The good side to it is...you don't NEED this information, to be a superiour. Just set the bot to play to win, and mathmatically sound, and you won't need these little tid bits of information. If I go into a room with all new names, I expect the worst possible thigns to happen each time. Once I understand if a player is smart, or just going on rampages, I build borders to adjust.

I guess a bot could do this, too...if it thinks another player is just an idiot, it could build higher borders with them...etc.

It's really not necessary, though noobie. And it's too intricate to program for it to be of any real value.

Does that answer your question?

User avatar
kitty on catnip
Lux Elder
Posts: 2207
Joined: Tue Jun 06, 2006 12:34 pm
Location: BACK IN THE FORUMS...
Contact:

Post by kitty on catnip » Thu May 22, 2008 3:30 pm

Another things, noobie, these sort of learning processes would only be realistic if the bot is treated AS a human player.

example: I guest out if I am familiar with another player who targets me, or ruins games for fun. A malicious asshat.

What if the bot could be set as a network player, and be part of the human list? It get's shuffled in and out. No matter how many humans there are, there is still a chance VarBot get's in. That would be totally cool.

If a player likes to kill bots first, or attacks the bot for no reason, it might feel inclined to guest out, and prevent itself from playing.

These are the things that would give the AI a completely different look. They'd be treated as human equals, rather than another asshat bot.

User avatar
n00less cluebie
Lux Cantor
Posts: 8375
Joined: Sun Jan 06, 2008 8:55 am
Location: At the Official Clown Reference Librarian Desk--'All the answers you weren't looking for.'
Contact:

Post by n00less cluebie » Thu May 22, 2008 3:32 pm

This is still the theoretical thread. We'll leave the programming issues in the Implementation thread.... Most things ARE possible with good design, but basically it comes down to breaking a big issue down like "I've determined Player (X) is an asshat" into lots of small steps like "I just saw Player (X) hit Indonesia, breaking OZ and wasting 15 armies doing so"

More benefit than developing a bot, is we get a greater understanding of what's going on inside our own heads; and to me THAT'S the interesting part....

User avatar
kitty on catnip
Lux Elder
Posts: 2207
Joined: Tue Jun 06, 2006 12:34 pm
Location: BACK IN THE FORUMS...
Contact:

Post by kitty on catnip » Thu May 22, 2008 3:57 pm

OK. I finally came up with one very important decision a bot would make based off memory.

If it realizes player A.) is an asshat...or if he attacks you constantly, the bot should weigh it's initial decision to take income AWAY from the Player A.) army clusters. Once that initial income is taken, he attacks all remotes, if possible of Player A.) to keep him away.

If VarBot has any remotes near player A.) , he should use those remotes to attack the income of Player A.)

These strategies are only used in deux, and bio, or other maps with many incomes.



The only problem is this: What if that player A.) changes it's mood...changes it skill level, changes it's style, etc....

The bot would then still have the past memory of Player A.) being an asshat.

We would have to write a program that is ever, constantly thinking, manipulating, and storing information...

How would the bot know to stop using it's already stored information?

hmmm......(wishes he knew how to programming languages...)

User avatar
n00less cluebie
Lux Cantor
Posts: 8375
Joined: Sun Jan 06, 2008 8:55 am
Location: At the Official Clown Reference Librarian Desk--'All the answers you weren't looking for.'
Contact:

Post by n00less cluebie » Thu May 22, 2008 4:46 pm

Well, actually THAT part is fairly straightforward. The Bot can keep variables of how much of an asshat/suicider/n00b/erratic/whatever else we want to measure that player is; say 0% means that the player is NOTHING like the attribute, and 100% means he's EXTREMELY like that attribute. Thus, the more a player Asshats, the more his "asshat variable" rises, and every game the player DOESN'T asshat, the variable goes down.... So then the Bot will be able to say ParanoiaRodeo is 0% n00b, 1% suicider, 1% asshatter: I will react in Such-and-such a way....
N00less Cluebie is 95% n00b, 25% suicider, 45% asshatter, I will react to him in THAT way. So my question is, what are the variables we look at in human players; Can we quantify it?

User avatar
guest
Luxer
Posts: 189
Joined: Fri Dec 17, 2004 9:17 pm
Location: Southern NH
Contact:

Post by guest » Thu May 22, 2008 5:28 pm

The bots don't see what you do. You get to watch as players attach and fortify. The bots don't see that. Without that you can only learn from your mistakes not by example.

Imagine playing but closing your eyes when its not your turn. Then opening your eyes and on player has 50% of the map and 3 players are gone. Was it a triple kill, or some combination of 1s and 2s.

User avatar
n00less cluebie
Lux Cantor
Posts: 8375
Joined: Sun Jan 06, 2008 8:55 am
Location: At the Official Clown Reference Librarian Desk--'All the answers you weren't looking for.'
Contact:

Post by n00less cluebie » Thu May 22, 2008 5:37 pm

crap, that's what I was afraid of. The bots don't get a list of all the moves that were made? bleah

User avatar
Enokrad
Dark Spawn
Posts: 3367
Joined: Thu Aug 23, 2007 4:16 am
Location: New York
Contact:

Post by Enokrad » Thu May 22, 2008 5:57 pm

aside that it's not feasible within the game, such a thing would require huge amounts of ones cpu. bots at the moment use cpu power when it is their time to play. that way only one bot can utilize memory and cpu resources at a time. if you had x amount of bots and all of them trying, during someone else's turn, to strategize their coming attacks, especially when variables are going to change till their turns come up. it would be a waste of huge amounts of cpu power that the bots most likely end up wasting but not utilizing in their final attack.

there are bots out there than can't handle the pressure of big maps.
ex sparrow keeps crashing on large maps but is otherwise a pretty good and strong bot. if you put him on maps like dark ages and stargate he causes memory leaks. (sparrow is a incomplete bot but i've seen even reaper have problems in stargate). imagine now having 2-3 more bots trying to calculate all these changing variables. not to mention the additional stress to the cpu by having to input all that data to the bots.

i liked the ideas and the fact that they would bring a higher level of complexity in the play of the bots, that could help a bot survive longer in games through diplomacy and such, but it would causes to many freezes and other problems within lux ("waiting for host" in most cases).

User avatar
n00less cluebie
Lux Cantor
Posts: 8375
Joined: Sun Jan 06, 2008 8:55 am
Location: At the Official Clown Reference Librarian Desk--'All the answers you weren't looking for.'
Contact:

Post by n00less cluebie » Thu May 22, 2008 6:05 pm

ahhh....but our computers are getting better and better.... so one day they can achieve it. Meanwhile the bots could get away with strategizing only on their turn, where they received a list that looked something like:

Attack: Player(1) Kamchatka -> Player (3) Japan; Defender loses 2
Attack: Player(1) Kamchatka -> Player (3) Japan; split
.
.
.
Fortify: Player(1) Alaska -> Kamchatka 4 armies

then scans the list and develops it's strategy

User avatar
guest
Luxer
Posts: 189
Joined: Fri Dec 17, 2004 9:17 pm
Location: Southern NH
Contact:

Post by guest » Thu May 22, 2008 7:46 pm

Memory leaks, large maps, and dealing with lots of events are completely separate problems. All of them are programming problems that have been solved before.

User avatar
kitty on catnip
Lux Elder
Posts: 2207
Joined: Tue Jun 06, 2006 12:34 pm
Location: BACK IN THE FORUMS...
Contact:

Post by kitty on catnip » Fri May 23, 2008 12:55 pm

As I said...it's not really needed...although if it was possible, it would be 'interesting'...

To make a super premium level bot, you do not need it to store memory.

But, I do think simple dialogue function is needed.

Post Reply