January 27th, 2007

Defense of the Ancients

Defense of the Ancients (All Stars) (or DotA for short) has been a recent hobby of mine.  DotA is a modified map for Warcraft III: Frozen Throne, which changes the character of the game fairly dramatically.  It is a map designed for 10 player games, with each player controlling a hero.  Each of these heroes is unique, and has a set of unique abilities.  The map is divided into 3 “lanes” each leading to an entrance to a fairly heavily fortified base.  Each lane receives waves of “creeps” which are AI controlled units.  These creeps are given the goal of breaking into the enemy base area, and destroying the enemy Ancient.  The goal of each sides heroes is, obviously, to prevent this from happening.  You purchase items and gain experience based on kills (of both creeps and other heroes). For more information, I recommend the DotA wiki article, and the DotA Allstars wiki article.

The uniqueness of DotA comes from it being an RPG in an RTS package. It is a very short, fast paced RPG, that is a modification of an RTS game. The core gameplay mechanics are very much RPG based (leveling up, earning gold, buying items), but it is much more fast paced than a traditional RPG (such as Diablo 2). This makes it an excellent LAN party game, and an excellent game for experimentation. With the wide variety (82 as of version 6.40) of heroes available, no two games are ever alike. The RPG mechanics are quite simple, but surprisingly addictive. You always want to try just one more round to see if you can get more kills, or find a better way to build up your hero (or just play another hero with -random).

The gameplay idea of a fast paced RPG is quite interesting, and something that could be fleshed out further. Games such as Dungeons and Dragons (or D&D) are a pencil and paper (and or tabletop) version of this type of game, but often take much longer, and are much more involved. However, the idea of a fast paced RPG with player designed characters (heroes in the DotA parlance) could be very interesting. The challenge is to find a way to balance the various hero skills so that one particular combination is not overpowering. This is something I hope to expand on in the future, and will maybe try to do some basic design work on a game based on this idea. Stay tuned.

January 26th, 2007

Battlecode Strategery

With the basics out of the way, it’s time to delve a little bit deeper into some strategies for Battlecode. These are a few that have all been used by multiple teams, so I’m not giving away anything top secret here (especially after the seeding tournament).

  • The Scout Tanker: With a low upkeep cost, scouts can be used to provide Energon to other units with a higher upkeep (EMP’s especially) to keep them alive longer. This can help to greatly extend the range of EMP’s. One of the most interesting applications of this could be called the Scout Railroad. It was a line of 10 scouts with one end anchored over the archons to pass up energon, who would feed any EMP that traveled along the rail to keep it alive. It wasn’t terribly effective, but looked impressive.
  • The Archon Trap: Archons are a very difficult unit to destroy. Their health regeneration is able to match the damage output of a soldier with no problem, and can even survive two attackers with no difficulty if it is moving. The trick is to trap an Archon so that at least two, preferrably 3 soldiers are able to attack it. This can be done in corners, or with a large group of scouts along a wall.
  • The EMP Wave: EMP’s are a dangerous offensive unit, and some teams simply used them as their only major unit. They would use Scout Tankers to keep the EMP’s alive, and send wave after wave of them at the enemy, hoping to cripple their energon production, and win that way.
  • The Tank Assault: Tanks are a powerful ground unit, dealing major damage, plus splash damage. A pair of them can take down even Archons with little difficulty if they have a spotter. Teams that can move their archons, and locate the enemy without taking too much damage, and can get in range of a tank strike can be deadly.

There are of course many other tactics and strategies, but I don’t want to give away everything (as I do have a few ideas that I didn’t see implemented at the seeding tournament). Our team did quite well, being seeded 24th out of 137 teams. Hopefully that number can be improved in the final tournament.

January 25th, 2007

Battlecode

Battlecode (also known as 6.370, or in past years, Robocraft), is an annual AI programming competition that occurs every year during IAP (Independent Activities Period). It centers around writing a program that will control a variety of different robots to achieve a certain goal. In previous years it has ranged from kill the queen, to capture the flag, to king of the hill. There are a variety of different robots, which change every year. The robots this year are:

  • Archons: The most important units, the only unit with positive energon production
  • Soldiers: The basic ground unit. Attacks other ground units adjacent
  • SAMs: The anti-air ground unit. Attacks only air units with a range
  • Tanks: The ranged attack ground unit.
  • Scouts: The basic air unit. Attacks other ground units adjacent
  • EMPs: An evolved air unit. Has a suicide ability that reduces the energon production of Archons in a radius. Can also attack air units.

Each of the units that isn’t an Archon has an upkeep cost in energon. Energon is the energy of the game, and it allows your units to live. Attacks reduce energon, and EMPs reduce the energon production of Archons. The goal of this year is to kill the 4 enemy archons, or to satisfy one of the other victory conditions. The victory conditions are:

  1. Largest number of surviving Archons
  2. Largest total energon production among Archons
  3. Largest total energon among surviving units
  4. Lowest team number (so earliest registered)

There are, of course, a few complications to make writing the AI more complicated than simply that of programming a basic game AI. There is no overaching player. In Battlecode, each robot runs a copy of your code, and must work together with the limited information available to each unit. This includes their sensor information (which varies based on robot type). They also can message robots in a limited radius to share information. There is no overarching “super” player that can see the entire map. You have to determine what the map looks like, how to pathfind, and everything on the fly with limited information.

With the basics of Battlecode out of the way, you can expect another post tomorrow explaining a few ideas for strategies (some I might use, some I probably won’t), and any details that I realized that I missed. The full game is of course more complicated, but this should be a sufficient overview for what I explain tomorrow.

January 24th, 2007

The Beginning of the New Year

This is about 23 days late, but it’s my New Years post. I’ve finally decided that I should give up on writing my own blog software, and just go with something that works. My old blog was rather badly broken, and I just never got around to updating it. Hopefully WordPress will work a little bit better, and maybe even have a few more features. I’m hoping to try to update this more regularly, and have more interesting content (some of my opinions and views on things perhaps). I think I’ve turned on comments and such, so they should work properly. You can alway e-mail me (jmoe2008@gmail.com) if something doesn’t work. Otherwise, Happy New Year, and all that jazz. See you next post (hopefully in a day or two).