Basic Game Rules

  • The game starts with 2 robots at their respective bases at the corners of the stage and 9 ball targets in the middle
  • Each robot’s goal is to get as many ball targets back to its base as possible in the 2-minute time limit
  • If a robot goes into the enemy’s base, it can steal ball targets from the enemy
  • After 2 minutes, the robot with more targets in its base wins
    • Ties are broken by the number of targets currently being carried, followed by distance from your home base. In other words, if the number of targets in both bases are the same, then the robot carrying more targets will win; if the number of targets being carried are also the same (and at least 1), the robot closer to its home base will win
    • In case of ties, which happens when the number of targets in both bases are the same, and neither robots are carrying any targets, during the tournament, the match will be replayed!


Robot’s Abilities and Restrictions

(Note: your strategy and implementation should take full advantage of the robot’s abilities, while not violating any of the restrictions)

  • Physical Appearance:
    • The robot should behave as a cube of scale 1:1:1
    • Please see the Changing Appearance page and/or do some more research on your own for ways to change the robot’s visual appearance and size without changing how it behaves in the environment
  • ┬áMovement:
    • The robot can move in the x-z plane at maxMoveSpeed (when not carrying targets)
    • It cannot move in the y axis (e.g. cannot jump)
    • It can rotate around the y axis at maxTurnSpeed (when not carrying targets)
    • It cannot rotate in any other axis
  • Target carrying:
    • Target is picked up when the robot makes contact with it
    • The robot can carry any number of targets at a time, though each added target will reduce move and rotate speed accordingly
    • When the robot arrives at its home base, any carried targets will be transferred to the home base
    • Targets from enemy’s base can be stolen by going into their base
  • Environment sensing:
    • The robot is able to look in any direction and at any distance
    • The robot always has access to information about the enemy, targets, and bases (such as their name, position, etc.)
    • Any accessible variables can be added as an observation for the robot’s neural network
  • Shooting:
    • The robot is able to shoot a laser of a fixed range from its forward direction (i.e. directly ahead)
      • Lasers cannot go through targets
    • When shooting, the robot won’t be able to move from its current position (though it can still rotate around its y-axis)
    • When shot, the robot will be frozen for 3 seconds, during which it won’t be able to move, rotate, or shoot lasers
      • Robot will drop all the targets it is carrying when hit
      • After unfreezing, the robot will have a one-second invincibility cloak, meaning it cannot be shot during this time


General Coding Rules

  • All the code you write should only be in your script that was renamed from MyGroupName.cs)
    • All other scripts, such as CogsAgent, are read-only: you can consult them for information on variables to access and such, but they must not be modified in any way
  • The code in FixedUpdate() should not be changed
  • Write a brief description for any additional helpers you write explaining what they do
  • Try not to cram too many things into one function. If the description seems too long, it is likely that some helper functions can be extracted out