Warlight API

All fields and methods listed below are public unless noted otherwise.

Player numbers are as follows: 0 = neutral, 1 = player 1, 2 = player 2, etc.

== package engine ==

interface Agent

An agent that plays Warlight.

void init(long timeoutMillis)
Called once before any other methods are called. Your agent must respond to this request and all subsequent requests within timeoutMillis milliseconds.
Move getMove(Game game)
Called to retrieve the agent's next move from the given game state.
void terminate()
Called once after all other interaction with the agent is complete.

abstract class AgentBase implements Agent

A convenience class for creating agents.

abstract List<AttackTransfer> attackTransfer(Game game)
Called to ask where you would like to move and/or attack in this round.
abstract Region chooseRegion(Game game)
Called to select a starting region at the beginning of the game.
abstract List<PlaceArmies> placeArmies(Game game)
Called to ask where you want to place your armies at the beginning of each round.

== package game ==

class Continent

One of the continents on the map.

int getId()
The ID of this continent. Every continent has a unique integer ID in the range from 0 to (N – 1), where N is the total number of continents.
String getName()
The name of this continent.
int getReward()
The number of extra armies per turn that you will receive if you hold this continent.
List<Region> getRegions()
Return a list of all regions in this continent.

class Game

A game of Warlight in progress.

Game(GameConfig config)
Create a new game. config specifies configuration options for the game, or can be null for default options.
int armiesPerTurn(int player)
Return the number of armies that the given player receives each turn.
Game clone()
Return an exact copy of the game state that can be used as a forward model.
int currentPlayer()
Return the player whose turn it is to move.
int getArmies(Region region)
Return the number of armies that are currently in the given region.
Continent getContinent(int id)
Return the continent with the given id.
List<Continent> getContinents()
Return a list of all continents in the world.
int getOwner(Continent continent)
Return the player who currently owns the given continent, i.e. holds all of its regions. If there is no such player, the method returns 0.
int getOwner(Region region)
Return the player who currently owns the given region.
Phase getPhase()
Return the current game phase such as PLACE_ARMIES or ATTACK_TRANSFER.
ArrayList<Region> getPickableRegions()
Return the regions that are available for selection in the STARTING_REGIONS phase (which occurs only when Warlight is run with the -manual option).
Region getRegion(int id)
Return the Region with the given id.
List<Region> getRegions()
Return a list of all regions in the world.
int getRoundNumber()
Return the current round number. The first round is numbered 1.
int getScore(int player)
Assuming that the game is complete, return the given player's score. If there are N players, the winning player has score (N – 1), the player who finishes second has score (N – 2), and so on down to 0.
boolean isDone()
Return true if the game is complete.
public void move(Move move)
Apply a move to the game state.
public void move(Move move, boolean mostLikely)
Apply a move to the game state. If mostLikely is true, then the most likely outcome will always occur instead of the usual stochastic result.
int numberArmiesOwned(int player)
Return the number of armies that the given player owns.
int numPlayers()
Return the number of players in the game (not including the neutral player 0).
int numberRegionsOwned(int player)
Return the number of regions that the given player owns.
int numContinents()
Return the number of continents that exist in the world.
int numRegions()
Return the number of regions that exist in the world.
ArrayList<Region> regionsOwnedBy(int player)
Return a list of all regions owned by the given player.
int winningPlayer()
Assuming that the game is complete, return the number of the player who has won the game.

enum Phase

A phase of the game. Possible values include

STARTING_REGIONS
An initial phase in which players choose their starting territories. (This phase will only ever occur if Warlight is invoked with the -manual option, which enables manual territory distribution.)
PLACE_ARMIES
The phase in which a player decides where to place armies at the beginning of their turn.
ATTACK_TRANSFER
The phase in which a player decides where to attack with or transfer armies.

class Region

One of the territories on the map.

Continent getContinent()
The continent containing this region.
int getId()
The ID of this region. Every region has a unique integer ID in the range from 0 to (N – 1), where N is the total number of regions.
String getName()
The name of this region.
List<Region> getNeighbors()
A list of this region's neighbors.

== package game.move ==

class AttackTransfer

A single attack or transfer.

Region fromRegion;
The region to attack or transfer from.
Region toRegion;
The region to attack or transfer to.
int armies;
The number of armies with which to attack or transfer.
AttackTransfer(Region from, Region to, int armies)
Create a single attack or transfer between regions.

class AttackTransferMove extends Move

A move containing a set of attacks/transfers.

AttackTransferMove(List<AttackTransfer> commands)
Create a move to attack/transfer armies.

class ChooseRegion extends Move

A move that chooses a starting region. This move type is used only if Warlight is started with the -manual option.

Region region;
The Region in this move.
ChooseRegion(Region region)
Create a move that chooses the given region.

abstract class Move

A player's move. In each turn, a player makes one move to place armies, followed by a second move that attacks and transfers armies.

class PlaceArmies

A single army placement.

Region region;
The Region in this placement.
int armies;
The number of armies in this placement.
PlaceArmies(Region region, int armies)
Create an army placement on a single region.

class PlaceArmiesMove extends Move

A move containing a set of placements.

PlaceArmiesMove(List<PlaceArmies> commands)
Create a move to place armies.