TileDirections are all the direction strings that Tile's neighbors can be in.
var TileDirections = [...]string{"North", "South", "East", "West"}
func PlayerName() string
PlayerName should return the string name of your Player in games it plays.
AI is your personal AI implimentation.
type AI struct { base.AIImpl }
func (ai *AI) Ended(won bool, reason string)
Ended is called when the game ends, you can clean up your data and dump files here if need be.
func (ai *AI) Game() Game
Game returns the instance of the Game this AI is currently playing.
func (ai *AI) GameUpdated()
GameUpdated is called every time the game's state updates, so if you are tracking anything you can update it here.
func (ai *AI) Player() Player
Player returns the instance of the Player this AI is represented by in the game this AI is playing.
func (ai *AI) RunTurn() bool
RunTurn this is called every time it is this AI.player's turn.
func (ai *AI) Start()
Start is called once the game starts and your AI has a Player and Game. You can initialize your AI struct here.
Beaver is a beaver in the game.
type Beaver interface { // Parent interfaces GameObject // Actions is the number of actions remaining for the Beaver this // turn. Actions() int64 // Branches is the amount of branches this Beaver is holding. Branches() int64 // Food is the amount of food this Beaver is holding. Food() int64 // Health is how much health this Beaver has left. Health() int64 // Job is the Job this Beaver was recruited to do. Job() Job // Moves is how many moves this Beaver has left this turn. Moves() int64 // Owner is the Player that owns and can control this Beaver. Owner() Player // Recruited is true if the Beaver has finished being recruited // and can do things, False otherwise. Recruited() bool // Tile is the Tile this Beaver is on. // // Value can be returned as a nil pointer. Tile() Tile // TurnsDistracted is number of turns this Beaver is distracted // for (0 means not distracted). TurnsDistracted() int64 // Attack attacks another adjacent beaver. Attack(Beaver) bool // BuildLodge builds a lodge on the Beavers current Tile. BuildLodge() bool // Drop drops some of the given resource on the beaver's Tile. Drop(Tile, string, int64) bool // Harvest harvests the branches or food from a Spawner on an // adjacent Tile. Harvest(Spawner) bool // Move moves this Beaver from its current Tile to an adjacent // Tile. Move(Tile) bool // Pickup picks up some branches or food on the beaver's tile. Pickup(Tile, string, int64) bool }
Game is gather branches and build up your lodge as beavers fight to survive.
type Game interface { // Parent interfaces base.Game // Beavers is every Beaver in the game. Beavers() []Beaver // CurrentPlayer is the player whose turn it is currently. That // player can send commands. Other players cannot. CurrentPlayer() Player // CurrentTurn is the current turn number, starting at 0 for the // first player's turn. CurrentTurn() int64 // FreeBeaversCount is when a Player has less Beavers than this // number, then recruiting other Beavers is free. FreeBeaversCount() int64 // GameObjects is a mapping of every game object's ID to the // actual game object. Primarily used by the server and client to // easily refer to the game objects via ID. GameObjects() map[string]GameObject // Jobs is all the Jobs that Beavers can have in the game. Jobs() []Job // LodgeCostConstant is constant number used to calculate what it // costs to spawn a new lodge. LodgeCostConstant() float64 // LodgesToWin is how many lodges must be owned by a Player at // once to win the game. LodgesToWin() int64 // MapHeight is the number of Tiles in the map along the y // (vertical) axis. MapHeight() int64 // MapWidth is the number of Tiles in the map along the x // (horizontal) axis. MapWidth() int64 // MaxTurns is the maximum number of turns before the game will // automatically end. MaxTurns() int64 // Players is array of all the players in the game. Players() []Player // Session is a unique identifier for the game instance that is // being played. Session() string // Spawner is every Spawner in the game. Spawner() []Spawner // SpawnerHarvestConstant is constant number used to calculate how // many branches/food Beavers harvest from Spawners. SpawnerHarvestConstant() float64 // SpawnerTypes is all the types of Spawners in the game. SpawnerTypes() []string // Tiles is all the tiles in the map, stored in Row-major order. // Use `x + y * mapWidth` to access the correct index. Tiles() []Tile // TimeAddedPerTurn is the amount of time (in nano-seconds) added // after each player performs a turn. TimeAddedPerTurn() float64 // GetTileAt returns the Tile at a give position (x, y). GetTileAt(int64, int64) Tile }
GameObject is an object in the game. The most basic class that all game classes should inherit from automatically.
type GameObject interface { // Parent interfaces base.GameObject // Logs is any strings logged will be stored here. Intended for // debugging. Logs() []string // Log adds a message to this GameObject's logs. Intended for your // own debugging purposes, as strings stored here are saved in the // gamelog. Log(string) }
Job is information about a beaver's job.
type Job interface { // Parent interfaces GameObject // Actions is the number of actions this Job can make per turn. Actions() int64 // CarryLimit is how many combined resources a beaver with this // Job can hold at once. CarryLimit() int64 // Chopping is scalar for how many branches this Job harvests at // once. Chopping() int64 // Cost is how much food this Job costs to recruit. Cost() int64 // Damage is the amount of damage this Job does per attack. Damage() int64 // DistractionPower is how many turns a beaver attacked by this // Job is distracted by. DistractionPower() int64 // Health is the amount of starting health this Job has. Health() int64 // Moves is the number of moves this Job can make per turn. Moves() int64 // Munching is scalar for how much food this Job harvests at once. Munching() int64 // Title is the Job title. Title() string // Recruit recruits a Beaver of this Job to a lodge. Recruit(Tile) Beaver }
Player is a player in this game. Every AI controls one player.
type Player interface { // Parent interfaces GameObject // Beavers is the array of Beavers owned by this Player. Beavers() []Beaver // BranchesToBuildLodge is how many branches are required to build // a lodge for this Player. BranchesToBuildLodge() int64 // ClientType is what type of client this is, e.g. 'Python', // 'JavaScript', or some other language. For potential data mining // purposes. ClientType() string // Lodges is an array of Tiles that contain lodges owned by this // player. Lodges() []Tile // Lost is if the player lost the game or not. Lost() bool // Name is the name of the player. Name() string // Opponent is this player's opponent in the game. Opponent() Player // ReasonLost is the reason why the player lost the game. ReasonLost() string // ReasonWon is the reason why the player won the game. ReasonWon() string // TimeRemaining is the amount of time (in ns) remaining for this // AI to send commands. TimeRemaining() float64 // Won is if the player won the game or not. Won() bool }
Spawner is a resource spawner that generates branches or food.
type Spawner interface { // Parent interfaces GameObject // HasBeenHarvested is true if this Spawner has been harvested // this turn, and it will not heal at the end of the turn, false // otherwise. HasBeenHarvested() bool // Health is how much health this Spawner has, which is used to // calculate how much of its resource can be harvested. Health() int64 // Tile is the Tile this Spawner is on. Tile() Tile // Type is what type of resource this is ('food' or 'branches'). // // Literal Values: "food" or "branches" Type() string }
Tile is a Tile in the game that makes up the 2D map grid.
type Tile interface { // Parent interfaces GameObject // Beaver is the Beaver on this Tile if present, otherwise nil. // // Value can be returned as a nil pointer. Beaver() Beaver // Branches is the number of branches dropped on this Tile. Branches() int64 // FlowDirection is the cardinal direction water is flowing on // this Tile ('North', 'East', 'South', 'West'). // // Literal Values: "North", "East", "South", "West", or "" FlowDirection() string // Food is the number of food dropped on this Tile. Food() int64 // LodgeOwner is the owner of the Beaver lodge on this Tile, if // present, otherwise nil. // // Value can be returned as a nil pointer. LodgeOwner() Player // Spawner is the resource Spawner on this Tile if present, // otherwise nil. // // Value can be returned as a nil pointer. Spawner() Spawner // TileEast is the Tile to the 'East' of this one (x+1, y). Nil if // out of bounds of the map. // // Value can be returned as a nil pointer. TileEast() Tile // TileNorth is the Tile to the 'North' of this one (x, y-1). Nil // if out of bounds of the map. // // Value can be returned as a nil pointer. TileNorth() Tile // TileSouth is the Tile to the 'South' of this one (x, y+1). Nil // if out of bounds of the map. // // Value can be returned as a nil pointer. TileSouth() Tile // TileWest is the Tile to the 'West' of this one (x-1, y). Nil if // out of bounds of the map. // // Value can be returned as a nil pointer. TileWest() Tile // Type is what type of Tile this is, either 'water' or 'land'. // // Literal Values: "land" or "water" Type() string // X is the x (horizontal) position of this Tile. X() int64 // Y is the y (vertical) position of this Tile. Y() int64 // GetNeighbors returns an array of the neighbors of this Tile. GetNeighbors() []Tile // IsPathable returns if the Tile is pathable for FindPath IsPathable() bool // HasNeighbor checks if this Tile has a specific neighboring Tile. HasNeighbor(Tile) bool }