The Gang Garrison 2 Forum
May 22, 2013, 06:38:38 pm *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Chat with us on IRC: http://ganggarrison.com/irc.html
Server: irc.esper.net, Channel: #gg2
 
   Home   Help Search Login Register  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 »
  Print  
Author Topic: Tempest Bot [v5_3]  (Read 35530 times)
notajf
Guest
« Reply #675 on: June 04, 2012, 03:06:46 pm »

Someone tell me a good way to abstract a game state into a "situation".
Cache properties of all player and character objects, sentries, and projectiles.
Notice the word abstract. If each bullet shot is a completely new situation with it's own new laws, the computer will need storage amounts ranging in the exobytes before it can reliably play gg2.
What do you mean by abstract in this context?
To apply any kind of learning algorithm, you need to give a way to classify similar situations. With "abstract" I mean take a situation and "simplify" it, so that it can be (reasonably) classified.

I'm thinking of using a 9x9 or 16x16 field around a bot and store positions as positions in one of those boxes, and not care about more details.
GG2 is far, far too complex to be easily simplified like that. It's not a game with simple rules.

Try Chess instead.
« Last Edit: June 04, 2012, 03:07:02 pm by ß » Logged
Orpheon
2011 Haxxy Award Winner
*
Offline Offline

Posts: 5830


Developer


« Reply #676 on: June 04, 2012, 03:25:58 pm »

Someone tell me a good way to abstract a game state into a "situation".
Cache properties of all player and character objects, sentries, and projectiles.
Notice the word abstract. If each bullet shot is a completely new situation with it's own new laws, the computer will need storage amounts ranging in the exobytes before it can reliably play gg2.
What do you mean by abstract in this context?
To apply any kind of learning algorithm, you need to give a way to classify similar situations. With "abstract" I mean take a situation and "simplify" it, so that it can be (reasonably) classified.

I'm thinking of using a 9x9 or 16x16 field around a bot and store positions as positions in one of those boxes, and not care about more details.
GG2 is far, far too complex to be easily simplified like that. It's not a game with simple rules.

Try Chess instead.
>Simple
>chess
hahahahaha

Also this would only be for micro input handling, making decisions where to go etc.. would not use a system like this.
Logged

Your mind is software. Program it.
Your body is a shell. Change it.
Death is a disease. Cure it.
Extinction is approaching. Fight it.
notajf
Guest
« Reply #677 on: June 04, 2012, 03:32:34 pm »

Someone tell me a good way to abstract a game state into a "situation".
Cache properties of all player and character objects, sentries, and projectiles.
Notice the word abstract. If each bullet shot is a completely new situation with it's own new laws, the computer will need storage amounts ranging in the exobytes before it can reliably play gg2.
What do you mean by abstract in this context?
To apply any kind of learning algorithm, you need to give a way to classify similar situations. With "abstract" I mean take a situation and "simplify" it, so that it can be (reasonably) classified.

I'm thinking of using a 9x9 or 16x16 field around a bot and store positions as positions in one of those boxes, and not care about more details.
GG2 is far, far too complex to be easily simplified like that. It's not a game with simple rules.

Try Chess instead.
>Simple
>chess
hahahahaha

Also this would only be for micro input handling, making decisions where to go etc.. would not use a system like this.
I never said Chess was simple, I just mean it is of far lower complexity than Gang Garrison 2 for AI. Everything has clearly defined moves, limited playing field, strict rules.

GG2 on the other hand is pretty complex.
Logged
Orpheon
2011 Haxxy Award Winner
*
Offline Offline

Posts: 5830


Developer


« Reply #678 on: June 04, 2012, 03:33:37 pm »

Someone tell me a good way to abstract a game state into a "situation".
Cache properties of all player and character objects, sentries, and projectiles.
Notice the word abstract. If each bullet shot is a completely new situation with it's own new laws, the computer will need storage amounts ranging in the exobytes before it can reliably play gg2.
What do you mean by abstract in this context?
To apply any kind of learning algorithm, you need to give a way to classify similar situations. With "abstract" I mean take a situation and "simplify" it, so that it can be (reasonably) classified.

I'm thinking of using a 9x9 or 16x16 field around a bot and store positions as positions in one of those boxes, and not care about more details.
GG2 is far, far too complex to be easily simplified like that. It's not a game with simple rules.

Try Chess instead.
>Simple
>chess
hahahahaha

Also this would only be for micro input handling, making decisions where to go etc.. would not use a system like this.
I never said Chess was simple, I just mean it is of far lower complexity than Gang Garrison 2 for AI. Everything has clearly defined moves, limited playing field, strict rules.

GG2 on the other hand is pretty complex.
Yes, states are clearly defined. No, that doesn't make chess easier, because a chess game you always have to consider EVERYTHING, while in gg2 you can do some LOD on the information and exclude a lot.
Logged

Your mind is software. Program it.
Your body is a shell. Change it.
Death is a disease. Cure it.
Extinction is approaching. Fight it.
notajf
Guest
« Reply #679 on: June 04, 2012, 03:34:14 pm »

Someone tell me a good way to abstract a game state into a "situation".
Cache properties of all player and character objects, sentries, and projectiles.
Notice the word abstract. If each bullet shot is a completely new situation with it's own new laws, the computer will need storage amounts ranging in the exobytes before it can reliably play gg2.
What do you mean by abstract in this context?
To apply any kind of learning algorithm, you need to give a way to classify similar situations. With "abstract" I mean take a situation and "simplify" it, so that it can be (reasonably) classified.

I'm thinking of using a 9x9 or 16x16 field around a bot and store positions as positions in one of those boxes, and not care about more details.
GG2 is far, far too complex to be easily simplified like that. It's not a game with simple rules.

Try Chess instead.
>Simple
>chess
hahahahaha

Also this would only be for micro input handling, making decisions where to go etc.. would not use a system like this.
I never said Chess was simple, I just mean it is of far lower complexity than Gang Garrison 2 for AI. Everything has clearly defined moves, limited playing field, strict rules.

GG2 on the other hand is pretty complex.
Yes, states are clearly defined. No, that doesn't make chess easier, because a chess game you always have to consider EVERYTHING, while in gg2 you can do some LOD on the information and exclude a lot.
ehhhhhhhhhhhhhhhh
Logged
RebelINS
Martial Expert
*
Offline Offline

Posts: 6676


Future is so bright I gotta wear shades


« Reply #680 on: June 04, 2012, 04:01:12 pm »

what's up with this ridiculous quote pyramid when it's clear you're just replying to each other? holy fuck.

Chess AI is far more static compared to what you're attempting to do. Typical strong chess AIs don't have the capability of learning or adapting; they just have a giant library of moves (branches) they can process very quickly. They boil down each possible move in terms of strength based on what that current position AND future position offers in terms of bringing themselves closer to victory. You can adapt some of the same logic of chess AI in gg2 bots, particularly in how they weigh current and future positions.

For abstracting game states into an "adaptable" form, you could try something as simple as how close the bot comes to achieving victory. Victory, as defined by the bot could be either the kills they get, the intels/control points they capture, and how long they survive for doing it. Then you can assign some arbitrary value in how each of these sub-goals add up to in terms of strength (like a chess move would be). For a randomness factor, you can weight how each bot values killing enemies with completing objectives on a binary scale (ie. 30:70 split on kills:objective would affect the formula). The information stored doesn't have to necessarily include the number of objects on screen, enemies, etc., it just uses whatever information it gathered on its own end (kills, deaths, length of life, number of captures).

At first, with no prior information the bot would choose whatever paths. Then over time, the bot adapts to choosing paths that are more likely to lead them victory.

edit: you can program in some sort of behaviour override as well, especially for instances where the bot is low on HP. You obviously don't want the bot to learn that retreating indefinitely is the strongest move because you won't die for a long time.
« Last Edit: June 04, 2012, 04:03:25 pm by RebelINS » Logged

Orpheon
2011 Haxxy Award Winner
*
Offline Offline

Posts: 5830


Developer


« Reply #681 on: June 04, 2012, 04:03:34 pm »

what's up with this ridiculous quote pyramid when it's clear you're just replying to each other? holy fuck.

Chess AI is far more static compared to what you're attempting to do. Typical strong chess AIs don't have the capability of learning or adapting; they just have a giant library of moves (branches) they can process very quickly. They boil down each possible move in terms of strength based on what that current position AND future position offers in terms of bringing themselves closer to victory. You can adapt some of the same logic of chess AI in gg2 bots, particularly in how they weigh current and future positions.

For abstracting game states into an "adaptable" form, you could try something as simple as how close the bot comes to achieving victory. Victory, as defined by the bot could be either the kills they get, the intels/control points they capture, and how long they survive for doing it. Then you can assign some arbitrary value in how each of these sub-goals add up to in terms of strength (like a chess move would be). For a randomness factor, you can weight how each bot values killing enemies with completing objectives on a binary scale (ie. 30:70 split on kills:objective would affect the formula). The information stored doesn't have to necessarily include the number of objects on screen, enemies, etc., it just uses whatever information it gathered on its own end (kills, deaths, length of life, number of captures).

At first, with no prior information the bot would choose whatever paths. Then over time, the bot adapts to choosing paths that are more likely to lead them victory.
The problem is that the bot should make decisions based on the current game state. If he doesn't, he's basically walking blind. But for him to learn that, he needs to be able to classify game states.
Logged

Your mind is software. Program it.
Your body is a shell. Change it.
Death is a disease. Cure it.
Extinction is approaching. Fight it.
RebelINS
Martial Expert
*
Offline Offline

Posts: 6676


Future is so bright I gotta wear shades


« Reply #682 on: June 04, 2012, 04:20:22 pm »

Abstract current situations into current threat levels based on its proximity to map nodes. How much damage they can potentially take, how much damage they can potentially deal, and how close they are to their current goal.

To build up an AI repertoire, the bot can pick an arbitrary point in time at a map node to remember its current threat level, and then another point in time in the future near another map node to remember. Then whatever behaviors it took in between those points are also recorded. It is non-specific enough that it can apply to all classes and maps, it uses the current map nodal system so you can use the same traversal code to navigate.

After a while of "blind" playing, the bot will begin to build up a map/tree of good moves from any node on the map.
Logged

Orpheon
2011 Haxxy Award Winner
*
Offline Offline

Posts: 5830


Developer


« Reply #683 on: June 04, 2012, 04:35:24 pm »

Abstract current situations into current threat levels based on its proximity to map nodes. How much damage they can potentially take, how much damage they can potentially deal, and how close they are to their current goal.

To build up an AI repertoire, the bot can pick an arbitrary point in time at a map node to remember its current threat level, and then another point in time in the future near another map node to remember. Then whatever behaviors it took in between those points are also recorded. It is non-specific enough that it can apply to all classes and maps, it uses the current map nodal system so you can use the same traversal code to navigate.

After a while of "blind" playing, the bot will begin to build up a map/tree of good moves from any node on the map.
Tbh, I don't really like the current node system. It's too much of a "walk there and just trust me" system, and small problems (someone launching you up) can quickly complicate things, not to mention it isn't terribly efficient (finding out exact path to the goal each frame). If I can, I'd like to make somehow a more flexible and also more sturdy system anyways. So at least not make anything dependent on it.

What I meant is for combat behaviour. Shooting would be still done by hand/hard-coded, but dodging and such could be evolved. Estimating cost and estimating reward too can be learned. Both require a way to formalize "pushes", "defences", "region", etc...

Where they are on a map shouldn't really be important, as long as the situation they have in close-range is fine and they have a long-range goal (which, too, is probably best hardcoded, or learned on a separate scale).
« Last Edit: June 04, 2012, 04:35:38 pm by Orpheon » Logged

Your mind is software. Program it.
Your body is a shell. Change it.
Death is a disease. Cure it.
Extinction is approaching. Fight it.
Adrenaline Rush
Full Member
***
Offline Offline

Posts: 241



« Reply #684 on: June 05, 2012, 09:24:09 am »

Meh, go learn how to code and improve the movement or something like that, your current 'contributions' are meager.
i don't have enough patience to code  Drolling and im fucking serious.
Logged

notajf
Guest
« Reply #685 on: June 05, 2012, 09:27:24 am »

Meh, go learn how to code and improve the movement or something like that, your current 'contributions' are meager.
i don't have enough patience to code  Drolling and im fucking serious.
If you can't be arsed to try it yourself, don't ask for others to do it.
Logged
Adrenaline Rush
Full Member
***
Offline Offline

Posts: 241



« Reply #686 on: June 09, 2012, 09:51:03 am »

Meh, go learn how to code and improve the movement or something like that, your current 'contributions' are meager.
i don't have enough patience to code  Drolling and im fucking serious.
If you can't be arsed to try it yourself, don't ask for others to do it.
i asked no one to code it. i suggested.
Logged

Derpduck [LORD]
2011 Haxxy Finalist
*
Offline Offline

Posts: 3529



« Reply #687 on: June 10, 2012, 04:09:47 pm »

But suggesting it implies you want it in, therefore someone has to code it  Drolling
Logged

Adrenaline Rush
Full Member
***
Offline Offline

Posts: 241



« Reply #688 on: June 12, 2012, 08:26:09 pm »

But suggesting it implies you want it in, therefore someone has to code it  Drolling
*ineversaidiwanteditinbutididsuggestit cough*
Logged

Orpheon
2011 Haxxy Award Winner
*
Offline Offline

Posts: 5830


Developer


« Reply #689 on: June 13, 2012, 06:32:29 am »

Guys, leave him be. I did request as many suggestions as possible on OP.
Logged

Your mind is software. Program it.
Your body is a shell. Change it.
Death is a disease. Cure it.
Extinction is approaching. Fight it.
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.616 seconds with 18 queries.