Skip to content

filipbjornasen/2020-CSharp

 
 

Repository files navigation

StarterKit C# DotNet Considition 2020

This is the StarterKit for Considition 2020, a help to get going as quickly as possible with the competition. The StarterKit contains four main parts.

  • The Main Program: This is where you implement your solution. There is already an example solution implemented that works out of the box, but you will have to develop it further to get a better score.
  • The Game Layer: A wrapper between the API and the Main Program. Helps you with formatting the input to the API and keep an updated game state.
  • The API: A representation of the REST-API that the game is played with. Can be used directly or through the Game Layer.
  • The Game State: A representation of the Game State and the information about the current game.

Each part us described in greater detail below. The competition itself is also described on Considition.com/rules.

Installation and running

Run Program.cs.

Main Program

The Main Program is a simple loop. Each run of the program does the following:

  • Create a new game
  • Start the game
  • Take 700 actions
    • This is where you can implement your solution. Depending on the current Game State, take actions that maximize your final score.
  • Print the final score

Game Layer

The game layer has all the functions you need to play the game.

Game Setup

  • New Game Create a new game and get the Game Info.
  • Start Game Start an already created game and get the initial Game State.
  • End Game End a started game prematurely. Since there is a limit on how many games can be active at the same time for each team, you might have to use this to free up slots.
  • Score Get the score for a finished game. The final turn of the game has to have happened for the score to be available.
  • Game Info This can be used to get the Game Info of an already started game, for example if you want to resume an ongoing game after making changes.
  • Game State This can be used to get the current Game State of an ongoing game.

Actions Each Action returns an updated Game State

  • Place Foundation Places a new building on a free spot on the map. Is used both for Residences and Utility Buildings. A building must be in either the Available Residences or Available Utilities and the current Turn has to be at least equal to the buildings Release Tick for it to be placed. The building has to be constructed before it has any effect on the game.
  • Build Builds an already placed building. A building is finished when its Build Progess reaches 100.
  • Demolish Demolishes a building. If a building has the attribute Can Be Demolished set to false, the demolish action will have no effect on that building.
  • Buy Upgrade Buys and activates an upgrade for a Residence. If the building is already affected by the Effect of the upgrade, this will have no effect.
  • Maintenance Repairs a Residence, resetting its Health to 100.
  • Adjust Energy Sets the Requested Energy In for a Residence to the specified value. This is used to control the temperature of a building and costs 150 Funds each time.

Helpers

  • Get Blueprint Returns a blueprint matching the name of a building. This is useful to look up the static information of a building. There are variants for both Residences and Utilities.
  • Get Effect Returns an effect matching that name. This is useful to look up what the effects on a building does.

API

The definition of the API and what it returns can be found on game.Considition.com/swagger, or on Considition.com/rules. If you want to view the Replay of a game, use visualizer.Considition.com/swagger.

Game State

The Game State is split into two parts. One that is static per map, called Game Info and one that changes depending on your actions, called Game State.

Game Info

  • Game Id The ID of the current game, useful if you want to view the replay or you have multiple games going at the same time.
  • Map Name The name of the map you are currently playing on.
  • Max Turns The maximum number of turns the game will go on for.
  • Max Temp Approximately the highest temperature that can be reached on this map.
  • Min Temp Approximately the lowest temperature that can be reached ont his map.
  • Map An array of arrays of integers representing the map. Buildable slots are 0's. The map is not changing and thus will not reflect where buildings get placed.
  • Energy Levels A list of the types of energy that can be purchased.
    • Energy Threshold If the amount of energy you buy is above this threshold, this is the type of energy you have to buy. This changes depending on the map.
    • Cost per Mwh The cost to buy the energy. This is the same even among different maps.
    • Co2 per Mwh The amount of Co2 released when buying this energy. This is the same even among different maps.
  • Available Residences The residences that can be bought on this map. Some buildings might not be available right away, depending on their Release Tick.
    • Building Name The name of the building.
    • Cost Cost in funds to buy the building.
    • Co2 Cost Cost in Co2 to buy the building.
    • Base Energy Need The lowest amount of energy needed to sustain the building. You always have to buy at least this much energy if able.
    • Build Speed How much the build progress is increased each time you call Build on this building.
    • Type A residence or a utility.
    • Release Tick When is the building available on this map.
    • Max Pop The maximum number of pops that can live in this residenceat the same time.
    • Income Per Pop The income you gain each turn for each pop in this residence.
    • Emissivity A multiplier on how much heat the residence loses to the environment depending on the difference in temperature.
    • Maintenance Cost How much it costs to do the Maintenance action on this residence.
    • Decay Rate How much Health, on average, this residence loses each turn.
    • Max Happinesss The maximum happiness each pop can generate each turn in this residence.
  • Available Utilities The utility buildings that can be bought on this map. Some buildings might not be available right away, depending on their Release Tick.
    • Building Name The name of the building.
    • Cost Cost in funds to buy the building.
    • Co2 Cost Cost in Co2 to buy the building.
    • Base Energy Need The lowest amount of energy needed to sustain the building. You always have to buy at least this much energy if able.
    • Build Speed How much the build progress is increased each time you call Build on this building.
    • Type A residence or a utility.
    • Release Tick When is the building available on this map.
    • Effects A list of Effect Name which describes which effects this utility will produce when finished.
    • Queue Increase How much faster the Queue will grow, on average, if this utility is finished. Can only be applied once per type of utility.
  • Upgrades A list of the upgrades that can be bought for residences.
    • Name The name of the upgrade. This is the name that you use when calling Buy Upgrade.
    • Effect The name of the effect this upgrade has.
    • Cost The cost in funds to purhcase this upgrade.
  • Effects A list of all effects.
    • Name The name of the effect.
    • Radius If the effect has a radius of 0 it only affects the building it is on. The radius is measured in manhattan distance.
    • Emissivity Multiplier Changes the emissivity of the affected building.
    • Decay Multiplier Changes the decay rate of the affected building.
    • Building Income Increase Changes the amount of funds generated by this building. Can be negative.
    • Max Happiness Increase Increases the maximum happiness each pop in this building can generate.
    • Mwh Production Generates free energy that is automatically removed from the Requested Energy
    • Base Energy Mwh Increase Increases the Base Energy Need of a building.
    • Co2 per Pop Increase Increases the amount of Co2 generated by each pop in this building. Can be negative.
    • Decay Increase A flat increase in the decay rate. Is applied before the Decay Multiplier.

Game State

  • Turn The current turn of the game.
  • Funds The amount of funds available to purchase energy, buildings, upgrades and take actions.
  • Total Co2 The total amount of Co2 generated during the game. This is used to help calculate your score.
  • Total Happinesss The total amount of happiness generated during the game. This is used to help calculate your score.
  • Current Temp The current outdoor temperature.
  • Queue Happiness How happy the pops in the queue are. Keep the queue short to make them happier.
  • Housing Queue How many pops are currently in the queue.
  • Residences The built residences. On some maps there are already pre-constructed residences when the map starts.
    • Building Name The name of the building. This matches the name in Available Buildings and in Get Blueprint.
    • Position X The buildings x-position on the map.
    • Position Y The buildings y-position on the map.
    • Effective Energy In How much energy the building receives. This can differ from the Requested Energy In if you can't afford to purchase all your energy.
    • Build Progress How close to finished the building is. At 100 the building is done.
    • Can Be Demolished If the building can be demolished or not.
    • Effects A list of Effect Name which tells which effects are currently active.
    • Current Pop The number of pops currently living in the residence.
    • Temperature The indoor temperature of the residence.
    • Requested Energy In The energy this residence wants. Can be changed by calling Adjust Energy.
    • Happiness Per Tick Per Pop The amount of happiness each pop generate on each turn. If the happiness is too low, pops will start to move out.
    • Health The current health of the building. If it's too low the pops will start to become unhappy.
  • Utilities The built utilities. On some maps there are already pre-constructed utilities when the map starts.
    • Building Name The name of the building. This matches the name in Available Buildings and in Get Blueprint.
    • Position X The buildings x-position on the map.
    • Position Y The buildings y-position on the map.
    • Effective Energy In How much energy the building receives. This can differ from the Base Energy Need if you can't afford to purchase all your energy.
    • Build Progress How close to finished the building is. At 100 the building is done.
    • Can Be Demolished If the building can be demolished or not.
    • Effects A list of Effect Name which tells which effects are currently active.

About

The C# StarterKit for Considition2020

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%