Sign in to follow this  
thereplica

ask about AI algorithm

Recommended Posts

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)

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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 ?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
[quote name='thereplica' timestamp='1348835672' post='4984705']
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 ?
[/quote]

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. Edited by SimonForsman

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this