ask about AI algorithm

Started by
5 comments, last by SimonForsman 11 years, 6 months ago
i want to ask, for the game like dance dance revolution what algorithm should i use for the AI ?
can i use alpha beta pruning algorithm ?
Advertisement
You need to be more concrete. You don't use an AI algorithm for certain types of games, but for certain types of problems. So, what is the problem you need to solve ?
alpha-beta pruning is just a minimax optimization, minimax is used to find the optimal* "move" in games where moves are made one at the time (if there are multiple players they have to take turns making their moves for minimax to work well). From the look of things DDR is about stepping on arrows/icons as they appear on screen (in beat with the music) so it is definitly not the way to go for it. (a perfect AI could just trigger the actions as the arrows appear, the real trick here would be to make an AI that is actually fun to play against(I.E, one that doesn't play flawlessly)

*For most games the search stops before reaching a final game state(it is often too timeconsuming to make a full search) and a heuristic is used to evaluate the "value" of the possible states at that depth. (Thus the move found won't necessarily be optimal and its quality will depend on how deep the search goes and the quality of the heuristic)
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
Agreed, picking the correct move in DDR style games is trivial - just follow the arrows. The more pertinent question in this style of game is how many errors should the AI make and when? Otherwise it's unbeatable.
thanks before, but my idea is to make AI that can randomly do perfect,good, and miss. but if the player have more perfect than the AI then the percentage of AI would do a perfect is up. according to that what algorithm should i use ?
I don't think you are going to find a ready-made algorithm for this particular situation (and if there is one, it's certainly not alpha-beta). You just need to sit down and think how you want your program to behave. For instance, you could compute a score that measures how well the player is doing and then generate mistakes with a probability that depends on that score. The particular definition of the score and the particular function that maps score to probability of mistake is something you may have to play around with until you are happy with the results.

thanks before, but my idea is to make AI that can randomly do perfect,good, and miss. but if the player have more perfect than the AI then the percentage of AI would do a perfect is up. according to that what algorithm should i use ?


I don't think there is any named algorithm for that. but something like:
1) set the AIs perfect and good chances to some good initial values (0.4 and 0.35 might work, leaving 5% chance to miss initially) (you can adjust these based on how well the player has done previously or based on how well he is currently doing) (you can for example raise these base values if the player hits several notes perfectly in a row)
2) if the "beat/note/whatever" is within 500 milliseconds of the previous one lower the perfect and good chances by 0.05 (if its identical to the previous one just lower chances by 0.02)
3) if the "beat/note/whatever" is within 200 milliseconds of the previous one, lower the perfect and good chances by an additional 0.05
4) if there hasn't been a note for Y milliseconds restore the AIs values to the initial values (This will make the AI perform better on easy tracks and worse when things happen rapidly, just like a human player)

get a random number between 0 and 1, if it is below the perfect chance the AI hits it perfectly else if its below the perfect+good chances its a good hit else miss.

Tweak the magic numbers and/or add more rules until its plays reasonably well.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

This topic is closed to new replies.

Advertisement