Full Moba Competition

The following homework is optional.

A Multiplayer Online Battle Arena (MOBA) is a form of Real Time Strategy game in which the player controls a powerful agent called the "Hero" in a world populated with simple, weak, fully computer-controlled agents called "Minions." In this assignment, you will implement the Minions and Heroes for a full MOBA game.

This optional assignment will pit student solution versus student solution in a round-robin tournament.


What you need to know

There are no changes to the code base from Homework 6.


Instructions

To complete this assignment, you must implement Hero AI and Minion AI. There are no restrictions on the number of states you implement in either. For this assignment, you will implement MyHero and MyMinion in the Mine subdirectory. Write all of your code in the Mine subdirectory.

Use your solution to homework 2 to generate a navigation mesh and a corresponding path network. The instructor can provide you with a default solution if necessary. You may also wish to use any path smoothing operations from homework 3 or homework 4. Use your A* implementation from homework 4. The instructor can provide you with a default solution in necessary.

To run the project code, use runversus.py to run your MyHero and MyMinion against a team comprised of the same agent implementations.

You can test your implementations of MyHero and MyMinion against baselines:

The baselines in subdirectories Baseline1, Baseline2, and Baseline3 are the baseline heroes from homework 6, respectively. The baseline Minion from homework 5 is used throughout.

The following steps are required to complete the assignment.

Step 1: Copy your myCreatePathNetwork function from homework 2 into the Mine subdirectory. Copy your astarnavigator.py from homework 4 into the Mine subdirectory. Copy mynavigatorhelpers.py functions from homework 3 or homework 4 into the Mine subdirectory.

Step 2: Implement MyHero and MyMinion in the Mine subdirectory. You may implement MyHero as a finite state machine or using a behavior tree. Implement MyMinion as a finite state machine.


Grading

This is an optional assignment. You can earn up to 3 extra points on your final grade.

We will run a round-robin tournament (each submissions played against every other submission). The solution with the best win record will receive the full 3 extra points. The solution with the worst win record will earn 0 extra points. All other solutions will earn a number of points between 0 and 3 based on their respective ranking.

Each pair of submissions will be run against each other in a best-of-three match, alternating sides of the map.

For pragmatic reasons, games will be limited to 10000 ticks. As a rule of thumb, this should be less than 10 minutes on most computers.


Hints

Your MyHero implementation from Homework 6 is specialized for Hero vs. Hero combat. You will want to update your MyHero agent to take advantage of strategic and tactical situations that arise in a full MOBA, such as base defense, escorting minions to the enemy base, etc.


Submission

To submit your solution, upload a zipped version of your Mine directory.

You should not modify any other files in the game engine.

DO NOT upload the entire game engine.