1 / 32

An AI Game Project

An AI Game Project. Background. Fivel is a unique combiation of a NxM game and a sliding puzzle. The goals in making this projects were: Create an original game experience. Create a challenging AI player using optimized calculations.

raheem
Download Presentation

An AI Game Project

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. An AI Game Project

  2. Background • Fivel is a unique combiation of a NxM game and a sliding puzzle. • The goals in making this projects were: • Create an original game experience. • Create a challenging AI player using optimized calculations. • Achieve an attractive visual look (cute and funny woodland creatures). • Accessibility – Easy-to-use UI. • The Future? The ability to export the game to the web upon completion.

  3. The Game Each turn, a player puts a piece in an empty slot, and slides a tile to an empty place.

  4. The Game Each turn, a player puts a piece in an empty slot, and slides a tile to an empty place.

  5. The Game Each turn, a player puts a piece in an empty slot, and slides a tile to an empty place.

  6. The Game Each turn, a player puts a piece in an empty slot, and slides a tile to an empty place.

  7. The Game Each turn, a player puts a piece in an empty slot, and slides a tile to an empty place.

  8. The Game The first player to place 5 pieces in a row, column or diagonal at the endof his turn, wins.

  9. The Game The first player to place 5 pieces in a row, column or diagonal at the endof his turn, wins.

  10. The Game The first player to place 5 pieces in a row, column or diagonal at the endof his turn, wins.

  11. The Game The first player to place 5 pieces in a row, column or diagonal at the endof his turn, wins.

  12. Development • Problem:Good presentation VS. Strong and reliable computation. • Flash/AS3 • PROS: • Allows to create great presentations and UI’s easily and fast. • Accessibility. • CONS: • AS3 is considerably slow. • Flash has a problems with deep-recursions (15 seconds limit and rendering halting without the use of chunking).

  13. Development • Problem:Good presentation VS. Strong and reliable computation. • Java • PROS: • Fast and reliable for deep recursions. • Everybody knows Java! • CONS: • Harder to achieve the visual look we were looking for. • Graphical programming in JAVA is relatively complicated.

  14. Architecture HTML Wrapper JavaScript Interface Flex/AS3 Frontend GUI Java Backend Data Structure, Logic and AI

  15. Data Structure • The board is based on “Fivlets” (“Winning Fives”). • These are sets of indices that form a winning row, column or diagonal. • The board statically stores all the 32 Fivlets in the game. Example for Row Fivlets

  16. Data Structure • Each Fivlet knows the status of the 5 slots it contains. • This structure allows to perform various calculations faster than other methods. • Moves are easy to perform (bounded by number of Fivlets the modified slots are in). Example for Column and Diagonal Fivlets • Iterate over all Fivlets [O(1)] in order to check for winning conditions and base the heuristics upon their state.

  17. AI and Heuristics • Automatic players in Fivel use α&β pruning algorithmto search for an optimal move. • The depth of the search is determined by the user when choosing difficulty through the GUI. We supply 4 different levels of difficulty: • Beginner – Depth 2 Experienced – Depth 3. • Tough – Depth 4 Godlike – Depth 5.

  18. AI and Heuristics • As the search algorithm deepens, Move objects are generated and performed on the data structure. Each Move objects has an Undo method in order to restore the board. • These operations are low-cost due to the use of Fivlets. • Although moves in Fivel consist actually of two different operations (piece placement and then tile sliding), they are considered as a single move in the game logic.

  19. AI and Heuristics • When a terminal board node is reached (either a board at an end state or when the algorithm reached its designated depth) it is rated according to the following algorithm: • For each Fivlet in Board • For each Slot in Fivlet • If Slot is Mine then mine += 1 • Else if Slot is Opponent then opp += 1 • If mine == 5 then score = BIG_CONST • Else if opp == 5 then score = -BIG_CONST • Else if mine == 0 and opp > 0 then score -= -opp^N • Else if opp == 0 and mine > 0 then score += mine^M • Return score

  20. AI and Heuristics • Basically, the algorithm iterates over all Fivlets and rates each one. Eventually it sums up all the scores and returns it as the board’s heuristic score. • For each Fivlet in Board • For each Slot in Fivlet • If Slot is Mine then mine += 1 • Else if Slot is Opponent then opp += 1 • If mine == 5 then score = BIG_CONST • Else if opp == 5 then score = -BIG_CONST • Else if mine == 0 and opp > 0 then score -= -opp^N • Else if opp == 0 and mine > 0 then score += mine^M • Return score

  21. AI and Heuristics • The algorithm counts how many pieces the current player and his opponent placed in each Fivlet. Empty (no piece) or Void (no tile) slots are not counted and treated the same. • For each Fivlet in Board • For each Slot in Fivlet • If Slot is Mine then mine += 1 • Else if Slot is Opponent then opp += 1 • If mine == 5 then score = BIG_CONST • Else if opp == 5 then score = -BIG_CONST • Else if mine == 0 and opp > 0 then score -= -opp^N • Else if opp == 0 and mine > 0 then score += mine^M • Return score

  22. AI and Heuristics • The Fivlet score is now calculated according to various cases: if The current player has a full Fivlet, the Fivlet is rated with a high score. • For each Fivlet in Board • For each Slot in Fivlet • If Slot is Mine then mine += 1 • Else if Slot is Opponent then opp += 1 • If mine == 5 then score= BIG_CONST • Else if opp == 5 then score = -BIG_CONST • Else if mine == 0 and opp > 0 then score -= -opp^N • Else if opp == 0 and mine > 0 then score += mine^M • Return score

  23. AI and Heuristics • Similarly, if the opponent of the current player has a full Fivlet, the Fivlet is rated with a negative high score. • For each Fivlet in Board • For each Slot in Fivlet • If Slot is Mine then mine += 1 • Else if Slot is Opponent then opp += 1 • If mine == 5 then score= BIG_CONST • Else if opp == 5 then score= -BIG_CONST • Else if mine == 0 and opp > 0 then score -= -opp^N • Else if opp == 0 and mine > 0 then score += mine^M • Return score

  24. AI and Heuristics • If a player has pieces in a Fivlet without an interference from his opponent, the Fivlet is exponentially scored based on the number of pieces in that Fivlet. • For each Fivlet in Board • For each Slot in Fivlet • If Slot is Mine then mine += 1 • Else if Slot is Opponent then opp += 1 • If mine == 5 then score= BIG_CONST • Else if opp == 5 then score= -BIG_CONST • Else if mine == 0 and opp > 0 then score -= -opp^N • Else if opp == 0 and mine > 0 then score += mine^M • Return score

  25. AI and Heuristics • Why BIG_CONST and not INFINITY?If more than one Fivlet is full (which is obviously better than one), the board’s score will still be INFINITY (INF + INF = INF). • For each Fivlet in Board • For each Slot in Fivlet • If Slot is Mine then mine += 1 • Else if Slot is Opponent then opp += 1 • If mine == 5 then score = BIG_CONST • Else if opp == 5 then score = -BIG_CONST • Else if mine == 0 and opp > 0 then score -= -opp^N • Else if opp == 0 and mine > 0 then score += mine^M • Return score

  26. AI and Heuristics • M and N? M is greater than N since playing aggressively (striving for full Fivlets) has better priority than playing defensively (stopping the opponent from achieving full Fivlets). • For each Fivlet in Board • For each Slot in Fivlet • If Slot is Mine then mine += 1 • Else if Slot is Opponent then opp += 1 • If mine == 5 then score = BIG_CONST • Else if opp == 5 then score = -BIG_CONST • Else if mine == 0 and opp > 0 then score -= -opp^N • Else if opp == 0 and mine > 0 then score += mine^M • Return score

  27. AI Analysis Human

  28. AI Analysis Beginner

  29. AI Analysis Experienced

  30. AI Analysis Tough

  31. AI Analysis Godlike

  32. Enjoy the Game! woot?

More Related