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.
Bomb is a Bomb in the game.
type Bomb interface {
// Parent interfaces
GameObject
// Tile is the Tile this Bomb is on.
//
// Value can be returned as a nil pointer.
Tile() Tile
// Timer is the number of turns before this Bomb explodes. One
// means it will explode after the current turn.
Timer() int64
}
Game is mine resources to obtain more value than your opponent.
type Game interface {
// Parent interfaces
base.Game
// BombPrice is the monetary price of a bomb when bought or sold.
BombPrice() int64
// BombSize is the amount of cargo space taken up by a Bomb.
BombSize() int64
// Bombs is every Bomb in the game.
Bombs() []Bomb
// BuildingMaterialPrice is the monetary price of building
// materials when bought.
BuildingMaterialPrice() int64
// 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
// DirtPrice is the monetary price of dirt when bought or sold.
DirtPrice() int64
// FallDamage is the amount of damage taken per Tile fallen.
FallDamage() int64
// FallWeightDamage is the amount of extra damage taken for
// falling while carrying a large amount of cargo.
FallWeightDamage() 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
// LadderCost is the amount of building material required to build
// a ladder.
LadderCost() int64
// LadderHealth is the amount of mining power needed to remove a
// ladder from a Tile.
LadderHealth() int64
// LargeCargoSize is the amount deemed as a large amount of cargo.
LargeCargoSize() int64
// LargeMaterialSize is the amount deemed as a large amount of
// material.
LargeMaterialSize() 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
// MaxShielding is the maximum amount of shielding possible on a
// Tile.
MaxShielding() int64
// MaxTurns is the maximum number of turns before the game will
// automatically end.
MaxTurns() int64
// MaxUpgradeLevel is the highest upgrade level allowed on a
// Miner.
MaxUpgradeLevel() int64
// Miners is every Miner in the game.
Miners() []Miner
// OrePrice is the amount of money awarded when ore is dumped in
// the base and sold.
OrePrice() int64
// OreValue is the amount of value awarded when ore is dumped in
// the base and sold.
OreValue() 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
// ShieldCost is the amount of building material required to
// shield a Tile.
ShieldCost() int64
// ShieldHealth is the amount of mining power needed to remove one
// unit of shielding off a Tile.
ShieldHealth() int64
// SpawnPrice is the monetary price of spawning a Miner.
SpawnPrice() int64
// SuffocationDamage is the amount of damage taken when
// suffocating inside a filled Tile.
SuffocationDamage() int64
// SuffocationWeightDamage is the amount of extra damage taken for
// suffocating under a large amount of material.
SuffocationWeightDamage() int64
// SupportCost is the amount of building material required to
// build a support.
SupportCost() int64
// SupportHealth is the amount of mining power needed to remove a
// support from a Tile.
SupportHealth() int64
// 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
// UpgradePrice is the cost to upgrade a Miner.
UpgradePrice() int64
// Upgrades is every Upgrade for a Miner in the game.
Upgrades() []Upgrade
// VictoryAmount is the amount of victory points (value) required
// to win.
VictoryAmount() int64
// 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)
}
Miner is a Miner in the game.
type Miner interface {
// Parent interfaces
GameObject
// Bombs is the number of bombs being carried by this Miner.
Bombs() int64
// BuildingMaterials is the number of building materials carried
// by this Miner.
BuildingMaterials() int64
// CurrentUpgrade is the Upgrade this Miner is on.
CurrentUpgrade() Upgrade
// Dirt is the amount of dirt carried by this Miner.
Dirt() int64
// Health is the remaining health of this Miner.
Health() int64
// MiningPower is the remaining mining power this Miner has this
// turn.
MiningPower() int64
// Moves is the number of moves this Miner has left this turn.
Moves() int64
// Ore is the amount of ore carried by this Miner.
Ore() int64
// Owner is the Player that owns and can control this Miner.
Owner() Player
// Tile is the Tile this Miner is on.
//
// Value can be returned as a nil pointer.
Tile() Tile
// UpgradeLevel is the upgrade level of this Miner. Starts at 0.
UpgradeLevel() int64
// Build builds a support, shield, or ladder on Miner's Tile, or
// an adjacent Tile.
Build(Tile, string) bool
// Buy purchase a resource from the Player's base or hopper.
Buy(string, int64) bool
// Dump dumps materials from cargo to an adjacent Tile. If the
// Tile is a base or a hopper Tile, materials are sold instead of
// placed.
Dump(Tile, string, int64) bool
// Mine mines the Tile the Miner is on or an adjacent Tile.
Mine(Tile, int64) bool
// Move moves this Miner from its current Tile to an adjacent
// Tile.
Move(Tile) bool
// Transfer transfers a resource from the one Miner to another.
Transfer(Miner, string, int64) bool
// Upgrade upgrade this Miner by installing an upgrade module.
Upgrade() bool
}
Player is a player in this game. Every AI controls one player.
type Player interface {
// Parent interfaces
GameObject
// BaseTile is the Tile this Player's base is on.
BaseTile() Tile
// Bombs is every Bomb owned by this Player.
Bombs() []Bomb
// ClientType is what type of client this is, e.g. 'Python',
// 'JavaScript', or some other language. For potential data mining
// purposes.
ClientType() string
// HopperTiles is the Tiles this Player's hoppers are on.
HopperTiles() []Tile
// Lost is if the player lost the game or not.
Lost() bool
// Miners is every Miner owned by this Player.
Miners() []Miner
// Money is the amount of money this Player currently has.
Money() int64
// 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
// Value is the amount of value (victory points) this Player has
// gained.
Value() int64
// Won is if the player won the game or not.
Won() bool
// SpawnMiner spawns a Miner on this Player's base Tile.
SpawnMiner() bool
}
Tile is a Tile in the game that makes up the 2D map grid.
type Tile interface {
// Parent interfaces
GameObject
// Bombs is an array of Bombs on this Tile.
Bombs() []Bomb
// Dirt is the amount of dirt on this Tile.
Dirt() int64
// IsBase is whether or not the Tile is a base Tile.
IsBase() bool
// IsFalling is whether or not this Tile is about to fall after
// this turn.
IsFalling() bool
// IsHopper is whether or not a hopper is on this Tile.
IsHopper() bool
// IsLadder is whether or not a ladder is built on this Tile.
IsLadder() bool
// IsSupport is whether or not a support is built on this Tile.
IsSupport() bool
// Miners is an array of the Miners on this Tile.
Miners() []Miner
// Ore is the amount of ore on this Tile.
Ore() int64
// Owner is the owner of this Tile, or undefined if owned by no-
// one.
//
// Value can be returned as a nil pointer.
Owner() Player
// Shielding is the amount of shielding on this Tile.
Shielding() int64
// 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
// 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
}
Upgrade is information about a Miner's Upgrade module.
type Upgrade interface {
// Parent interfaces
GameObject
// CargoCapacity is the amount of cargo capacity this Upgrade has.
CargoCapacity() int64
// Health is the maximum amount of health this Upgrade has.
Health() int64
// MiningPower is the amount of mining power this Upgrade has per
// turn.
MiningPower() int64
// Moves is the number of moves this Upgrade can make per turn.
Moves() int64
// Title is the Upgrade title.
Title() string
}