Download - Advanced Racing Game AI in PURE
![Page 1: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/1.jpg)
Advanced Racing Game AI in PURE
Iain Gilfeather
![Page 2: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/2.jpg)
![Page 3: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/3.jpg)
Race Management
• What happens if we don't manage the race?– AI either too good or too bad– AI won't react to the player's mistakes
• Necessity of race management mechanisms– Make it challenging for anyone– Adapt to different situations– Fun
![Page 4: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/4.jpg)
Rubber Band• Big rubber band around the player forcing
the AI players to be around him– (Usually) Using any means necessary
• Rubber Band:– Pros:
• Works almost always• Removes completely the ‘lonely racing syndrome’
– Cons:• Usually needs cheating• It’s easy to spot, so it breaks the illusion of fairness
![Page 5: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/5.jpg)
Skills
• Represent how well a player performs on a particular behaviour/gameplay aspect.– 1 Skill per player per behaviour– Eventually all behaviors have the same skill
value
• Skills are normalized (to the [0..1] range)
• They could also be used to represent personality
• Original approach to difficulty: static skills
![Page 6: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/6.jpg)
Skill Porperties
• Broad Range: if not broad enough we won’t be able to cover all the user cases
• Responsiveness: using small increases normally so we want it to have small steps too
![Page 7: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/7.jpg)
Skills Video
![Page 8: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/8.jpg)
Dynamic Competition Balancing
• Static skills during the race didn’t work well– Either too hard or too easy– Lonely racing
• Dynamic Competition Balancing (DCB) is a system that modifies the skills dynamically during the race according to some rules– Tries to match the player's skill
![Page 9: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/9.jpg)
Dynamic Competition Balancing• The first approach tried to match the
player index with the leaderboard position– Way too inflexible– Didn’t work that well
• We then introduced the concept of groups– Divided in group heads and members– Members follow the head/heads in order– Didn't work neither
• Groups too loose or no groups at all• Lonely racing
![Page 10: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/10.jpg)
Race Script: Summary
• It’s the final method we used in the game
• This Race Script concept includes not only the definition of the script itself but part of the implementation
• Fixed the lonely racing sensation, the groups mechanism and it didn’t feel the AI was cheating.
![Page 11: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/11.jpg)
Race Script: Definition
• This is the part implemented by designers• It'll be a document explaining how the race
should ideally develop under different circumstances:– The different player abilities must be reflected
in the document– It's important for designers to understand that
the race depends heavily on the player's performance
– It’s not a strict script, just some guidelines for the race
![Page 12: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/12.jpg)
Race Script: Example
• Example from Pure: the ideal case• 3 groups: head, middle, back
– Head and middle group leave the player behind at the start
– Player goes progressing and jumping from one group to another
• Some AI riders will jump with the player
– At the middle of the last lap the player is in head position and the AI will be more forgiving from now on with his errors
![Page 13: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/13.jpg)
Race Script: Implementation • The main idea is to use distance as the
main rule for the DCB.– Every rider is aiming to be at a point X meters
in front of or behind the human player– The skills of the rider will vary according to the
distance to the aiming point, not to the player
• Grouping players is achieved by giving them similar aiming points
• The point may also move during the race– Thus we can have groups that progress
during the race
![Page 14: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/14.jpg)
Race Script: Implementation
• From the player’s perspective it’s him who progresses through the groups– He doesn’t know we are making it easier for
him– It’s subtle and rewarding
• Main 2 differenciation points from Rubber Band:– Skills limited to a certain range– Follow the Race Script (not all around the
player)
![Page 15: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/15.jpg)
![Page 16: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/16.jpg)
![Page 17: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/17.jpg)
Race Script: Other mechanisms
• Other mechanisms were used to ensure the game worked as desired– AI will have 1 skill at the beginning of the race
• They need to make some distance from the player to ensure the initial groups
• It's a complicated a very crucial moment for the AI – Too many cars/bykes
– Some difficulty modifier based on the lap• Some people found it too easy at the beginning• Each lap is a bit easier than the previous one• This is very small (0 at the end)
![Page 18: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/18.jpg)
Race Script: Other mechanisms
– An 80% of the race is used to interpolate between the initial and end aiming positions, the 20% final uses the last positions.
• Is consistent with the script• Otherwise it may be too difficult and unforgiving at
the end
– The AI riders will stop to improve their skills in the last meters to give make the first position even more accessible to players
• Even with previous measures the AI was sometimes hard and unforgiving in the last meters
![Page 19: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/19.jpg)
Other genres
• I think this mechanism could be used in other genres – More control to the designers over the difficulty
• You only need 2 key elements– Skills– Script
• And an idea of how to implement it
![Page 20: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/20.jpg)
Conclussions
• I think we achieved our initial goals:– Have challenging, fun races– No lonely racing– Subtle and rewarding– Coherent groups throughout the race
• This method may be easily adapted to any other kind of racing game
![Page 21: Advanced Racing Game AI in PURE](https://reader036.vdocument.in/reader036/viewer/2022062304/56813090550346895d966f2e/html5/thumbnails/21.jpg)
Thank you