|
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
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
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
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
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
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
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
|
 |
« 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  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  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
|
 |
« 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  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
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 
|
|
|
|
|
Logged
|
|
|
|
|
Adrenaline Rush
|
 |
« Reply #688 on: June 12, 2012, 08:26:09 pm » |
|
But suggesting it implies you want it in, therefore someone has to code it  *ineversaidiwanteditinbutididsuggestit cough*
|
|
|
|
|
Logged
|
|
|
|
Orpheon
2011 Haxxy Award Winner
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.
|
|
|
|