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.
Body is a celestial body located within the game.
type Body interface { // Parent interfaces GameObject // Amount is the amount of material the object has, or energy if // it is a planet. Amount() int64 // BodyType is the type of celestial body it is. Either 'planet', // 'asteroid', or 'sun'. // // Literal Values: "planet", "asteroid", or "sun" BodyType() string // MaterialType is the type of material the celestial body has. // Either 'none', 'genarium', 'rarium', 'legendarium', or // 'mythicite'. // // Literal Values: "none", "genarium", "rarium", "legendarium", or // "mythicite" MaterialType() string // Owner is the Player that owns and can control this Body. // // Value can be returned as a nil pointer. Owner() Player // Radius is the radius of the circle that this body takes up. Radius() float64 // X is the x value this celestial body is on. X() float64 // Y is the y value this celestial body is on. Y() float64 // NextX the x value of this body a number of turns from now. // (0-how many you want). NextX(int64) int64 // NextY the x value of this body a number of turns from now. // (0-how many you want). NextY(int64) int64 // Spawn spawn a unit on some value of this celestial body. Spawn(float64, float64, string) bool }
Game is collect of the most of the rarest mineral orbiting around the sun and out-compete your competitor.
type Game interface { // Parent interfaces base.Game // Bodies is all the celestial bodies in the game. The first two // are planets and the third is the sun. The fourth is the VP // asteroid. Everything else is normal asteroids. Bodies() []Body // 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 // DashCost is the cost of dashing. DashCost() int64 // DashDistance is the distance traveled each turn by dashing. DashDistance() 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 // GenariumValue is the value of every unit of genarium. GenariumValue() float64 // Jobs is an array of all jobs. The first element is corvette, // second is missileboat, third is martyr, fourth is transport, // and fifth is miner. Jobs() []Job // LegendariumValue is the value of every unit of legendarium. LegendariumValue() float64 // MaxAsteroid is the highest amount of material, that can be in a // asteroid. MaxAsteroid() int64 // MaxTurns is the maximum number of turns before the game will // automatically end. MaxTurns() int64 // MinAsteroid is the smallest amount of material, that can be in // a asteroid. MinAsteroid() int64 // MiningSpeed is the rate at which miners grab minerals from // asteroids. MiningSpeed() int64 // MythiciteAmount is the amount of mythicite that spawns at the // start of the game. MythiciteAmount() float64 // OrbitsProtected is the number of orbit updates you cannot mine // the mithicite asteroid. OrbitsProtected() int64 // OreRarityGenarium is the rarity modifier of the most common // ore. This controls how much spawns. OreRarityGenarium() float64 // OreRarityLegendarium is the rarity modifier of the rarest ore. // This controls how much spawns. OreRarityLegendarium() float64 // OreRarityRarium is the rarity modifier of the second rarest // ore. This controls how much spawns. OreRarityRarium() float64 // PlanetEnergyCap is the amount of energy a planet can hold at // once. PlanetEnergyCap() int64 // PlanetRechargeRate is the amount of energy the planets restore // each round. PlanetRechargeRate() int64 // Players is array of all the players in the game. Players() []Player // ProjectileRadius is the standard size of ships. ProjectileRadius() int64 // ProjectileSpeed is the amount of distance missiles travel // through space. ProjectileSpeed() int64 // Projectiles is every projectile in the game. Projectiles() []Projectile // RariumValue is the value of every unit of rarium. RariumValue() float64 // RegenerateRate is the regeneration rate of asteroids. RegenerateRate() float64 // Session is a unique identifier for the game instance that is // being played. Session() string // ShipRadius is the standard size of ships. ShipRadius() int64 // SizeX is the size of the map in the X direction. SizeX() int64 // SizeY is the size of the map in the Y direction. SizeY() int64 // TimeAddedPerTurn is the amount of time (in nano-seconds) added // after each player performs a turn. TimeAddedPerTurn() float64 // TurnsToOrbit is the number of turns it takes for a asteroid to // orbit the sun. (Asteroids move after each players turn). TurnsToOrbit() int64 // Units is every Unit in the game. Units() []Unit }
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 unit's job.
type Job interface { // Parent interfaces GameObject // CarryLimit is how many combined resources a unit with this Job // can hold at once. CarryLimit() int64 // Damage is the amount of damage this Job does per attack. Damage() int64 // Energy is the amount of starting health this Job has. Energy() int64 // Moves is the distance this job can move per turn. Moves() int64 // Range is the distance at which this job can effect things. Range() int64 // Shield is the reserve the martyr use to protect allies. Shield() int64 // Title is the Job title. 'corvette', 'missileboat', 'martyr', // 'transport', or 'miner'. (in this order from 0-4). // // Literal Values: "corvette", "missileboat", "martyr", // "transport", or "miner" Title() string // UnitCost is how much money it costs to spawn a unit. UnitCost() int64 }
Player is a player in this game. Every AI controls one player.
type Player interface { // Parent interfaces GameObject // ClientType is what type of client this is, e.g. 'Python', // 'JavaScript', or some other language. For potential data mining // purposes. ClientType() string // HomeBase is the home base of the player. HomeBase() Body // Lost is if the player lost the game or not. Lost() bool // Money is the amount of money this Player has. Money() int64 // Name is the name of the player. Name() string // Opponent is this player's opponent in the game. Opponent() Player // Projectiles is every Projectile owned by this Player. The // earlier in the array the older they are. Projectiles() []Projectile // 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 // Units is every Unit owned by this Player. The earlier in the // array the older they are. Units() []Unit // VictoryPoints is the number of victory points the player has. VictoryPoints() int64 // Won is if the player won the game or not. Won() bool }
Projectile is tracks any projectiles moving through space.
type Projectile interface { // Parent interfaces GameObject // Energy is the remaining health of the projectile. Energy() int64 // Fuel is the amount of remaining distance the projectile can // move. Fuel() int64 // Owner is the Player that owns and can control this Projectile. // // Value can be returned as a nil pointer. Owner() Player // Target is the unit that is being attacked by this projectile. Target() Unit // X is the x value this projectile is on. X() float64 // Y is the y value this projectile is on. Y() float64 }
Unit is a unit in the game. May be a corvette, missleboat, martyr, transport, miner.
type Unit interface { // Parent interfaces GameObject // Acted is whether or not this Unit has performed its action this // turn. Acted() bool // DashX is the x value this unit is dashing to. DashX() float64 // DashY is the y value this unit is dashing to. DashY() float64 // Energy is the remaining health of the unit. Energy() int64 // Genarium is the amount of Genarium ore carried by this unit. (0 // to job carry capacity - other carried items). Genarium() int64 // IsBusy is tracks whether or not the ship is dashing or Mining. // If true, it cannot do anything else. IsBusy() bool // Job is the Job this Unit has. Job() Job // Legendarium is the amount of Legendarium ore carried by this // unit. (0 to job carry capacity - other carried items). Legendarium() int64 // Moves is the distance this unit can still move. Moves() float64 // Mythicite is the amount of Mythicite carried by this unit. (0 // to job carry capacity - other carried items). Mythicite() int64 // Owner is the Player that owns and can control this Unit. // // Value can be returned as a nil pointer. Owner() Player // Protector is the martyr ship that is currently shielding this // ship if any. // // Value can be returned as a nil pointer. Protector() Unit // Rarium is the amount of Rarium carried by this unit. (0 to job // carry capacity - other carried items). Rarium() int64 // Shield is the shield that a martyr ship has. Shield() int64 // X is the x value this unit is on. X() float64 // Y is the y value this unit is on. Y() float64 // Attack attacks the specified unit. Attack(Unit) bool // Dash causes the unit to dash towards the designated // destination. Dash(float64, float64) bool // Mine allows a miner to mine a asteroid. Mine(Body) bool // Move moves this Unit from its current location to the new // location specified. Move(float64, float64) bool // Safe tells you if your ship can move to that location from were // it is without clipping the sun. Safe(float64, float64) bool // Shootdown attacks the specified projectile. Shootdown(Projectile) bool // Transfer grab materials from a friendly unit. Doesn't use a // action. Transfer(Unit, int64, string) bool }