I was just thinking back to VF2 and its ports, where there was an expert mode (not sure if future iterations have this mode). It basically is a mode where the comp “learns” how you play and will thus play you accordingly with the AI involved. Since this was feasible then, I don’t see what’s stopping developers from not implementing something like that, at least to sate yourself and as a mini-placeholder for online play.
I mean, instead of, say, shitty MvC2 ai which picks Strider WITHOUT Doom, you could end up playing team Clockwork, with the AI trying to emulate how Clockwork plays. Probably won’t be foolproof or anything, but, well, it’s just an idea I’m putting out there.
PS - I don’t know of any games that utilise this, so…feel free to point out any my way.
The AI programming you speak of is quite advanced…I’m sure many companies just didn’t invest in programming such a thing. Firstly, one of the important things to know about AIs is that they require MANY iterations of training in order to get anywhere. Using a neural network for instance, you would have to play the cpu about a few thousand times before it would begin to pick up things…Even if you use approaches outside of neural nets, they take a considerable amount of training iterations.
So yeah, AIs that learn from the player doesn’t seem feasible. I’m not really sure what type of learning algorithms would be most suitable for achieving this.
Edit: nvm, it seems you are just talking about an AI that emulates you rather than learns how to fight against you…emulating you will actually not be that hard…some players do things for different reasons, so the cpu would have to try to understand this - the best way I can think is to just use probabilistic models, and updating probabilities of doing certain moves in certain situations, every time you(the player) does something. Of course, this will still require a significant amount of training, but once trained (say, maybe about a hundred or more iterations?), it should get down the patterns of the player. The fact that the cpu needs to be trained though, makes these AI methods unfeasible, and thus I don’t think it’s reasonable for any game to have this feature.
Yes, I meant that the scripts would be programmed to players. Seeing as how it was already done somewhat with VF, I thought, why not?
It would be interesting, especially if top players scripts could be put into the game. Not that I would know much about programming (or anything, rather) so it’s just an idea based on a mode in an old game…
I just think this would be a good idea to urge some form of offline component without having to deal with lag issues and the like (save for, perhaps, slow downloading of the AI script >_>). Not meant to be a foolproof replacement for people, just as a way to practise while you have no comp at the time.
I would also like to note that the Fire Pro series also allows customization of AI, to a limited extent. It mainly uses percentages of actions to dictate when and where the AI will perform its moves. So perhaps something like that could also be implemented.
Emil pretty much said what I would of too. Studying computer science you release how difficult and time consuming it can be to achieve that. Although I would be cool.
Darkstalker: basically you can download player’s AI otherwise known as “ghosts”. On Namco’s website they had a pack which contained some top player ghosts which was cool. Also you can create your own ghost by turning it on during Arcade Mode against the CPU. The more matches you played the more information about how you play is stored into the ghost which you can upload (eg: at TZ.com) or send to people. Thing is though your actions had to be consistent and you need to play a shit lot of matches to get good results. Even then your own ghost sometimes did prescripted behaviours. It wasn’t perfect but it was a neat idea.
It would be nice if in Guilty Gear you could program the AI a little bit to do specific attack strings/mixups that higher level players use. Like just being able to program Testament’s basic FRC EXE Beast mixups would be extremely helpful. I mean if you could program the computer for every character in the game it would actually help a lot. Probably unrealistic though
Well there is a way to do it, just that doing it requires a little extra bit of effort. You’d have to create a lot of classes that is basically going through frame data, compiling together a lot of scenarios so that the AI can take advantage of this. It’s probably not hard to create an AI that could beast on you quite easily off of 1 hit confirm without you having to physically script in every combo, but you would then have a problem with AI doing really impossible combos and possibly infiniting you or doing some insanely high damage combo if you prioritize certain moves properly.
Anyways, I’m by no means an incredible AI programmer/scripter, but I’ve messed around with it. It just depends on how much time you’re willing to invest and how badly you want to piss off players playing your game. Certain mindgames are harder to script in so that AI acts more like a human player and that stuff needs to be manually done. In the end, it’s hard to write AI that can learn in a fighting game, you have to literally break down the minds of top players and then try to rebuild that through scripting and tweaking fuzzy logic. I’m sure there are people out there that COULD create amazing FG AI, but in the end, is it really worth it?
Training at home is great, but playing against a real player should be better. If you can just download someone’s data and neglect playing them, it makes the experience not as entertaining or special.
Well most AIs are created with the programmers not even understanding what they are trying to learn…for instance, trying to find patterns in data that the programmers do not understand. So, you don’t really need to break down the minds of top players to build an AI. In fact, they might be able to use an AI in order to find patterns in top players that initially nobody could find.
Now to make an AI that learns how to play a fighting game from scratch is a different story though. I guess you could try using Q Learning which basically involves states, some of those states being goal states (in this case, the goal being to win the match), and each state having reward values to determine how rewarding the action chosen from state A to state B was. A reward could be given for landing a clean hit, baiting him, throwing him, guard crushing, etc. An example of a state could be “I am Chun Li, the opponent is Blanka, I have 2 bars of meter and 50% life, my opponent has no meter and 10% life, he is about to get up while I am right beside him, what should I do?” The cpu would then choose actions based off the most rewarding actions made at that state (it could be a weighted choice, where more rewarding actions are chosen more frequently than less rewarding ones).
Then, basically you have the computer play a million games, where the first game is entirely random (choices of the computer are random because no rewards have been established yet), and as it does moves that result in positive outcomes, it’s actions become less random (because those actions are gaining reward values). Actions that do nothing positive (or always negative) would not get any reward values, so in future games, those actions would pretty much not be used by the cpu.
Edit: Of course, this approach does have some obvious problems, but it’s the only reliable way I can see to make a cpu learn how to play from playing you.
Programming player ghosts is easier, but still takes many iterations as ATB said. For every single given state, the computer just has to analyze what actions you took, and how often you took them. After enough iterations, the AI’s gameplay should be fairly similar to yours…